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,19 +1,30 @@
1
1
  @open_flow10
2
- Feature: Pio::PacketOut
3
- Scenario: read
4
- When I try to parse a file named "open_flow10/packet_out.raw" with "PacketOut" class
5
- Then it should finish successfully
6
- And the message has the following fields and values:
7
- | field | value |
8
- | ofp_version | 1 |
9
- | message_type | 13 |
10
- | message_length | 88 |
11
- | transaction_id | 22 |
12
- | xid | 22 |
13
- | buffer_id | 4294967295 |
14
- | in_port | 65535 |
15
- | actions.length | 1 |
16
- | actions.first.class | Pio::OpenFlow10::SendOutPort |
17
- | actions.first.port | 2 |
18
- | actions.first.max_length | 65535 |
19
- | raw_data.length | 64 |
2
+ Feature: PacketOut
3
+ Scenario: new
4
+ When I create an OpenFlow message with:
5
+ """
6
+ arp_request = Pio::Arp::Request.new(
7
+ source_mac: 'fa:ce:b0:00:00:cc',
8
+ sender_protocol_address: '192.168.0.1',
9
+ target_protocol_address: '192.168.0.2'
10
+ )
11
+
12
+ Pio::PacketOut.new(
13
+ transaction_id: 0x16,
14
+ buffer_id: 0xffffffff,
15
+ in_port: 0xffff,
16
+ actions: Pio::SendOutPort.new(2),
17
+ raw_data: arp_request.to_binary
18
+ )
19
+ """
20
+ Then the message has the following fields and values:
21
+ | field | value |
22
+ | transaction_id | 22 |
23
+ | xid | 22 |
24
+ | buffer_id.to_hex | 0xffffffff |
25
+ | in_port.to_hex | 0xffff |
26
+ | actions.length | 1 |
27
+ | actions[0].class | Pio::OpenFlow10::SendOutPort |
28
+ | actions[0].port | 2 |
29
+ | actions[0].max_length | 65535 |
30
+ | raw_data.length | 64 |
@@ -1,47 +1,26 @@
1
- Feature: Pio::OpenFlow10::PortStats::Request
2
- @open_flow10
1
+ @open_flow10
2
+ Feature: PortStats::Request
3
3
  Scenario: new(:none)
4
- When I try to create an OpenFlow message with:
4
+ When I create an OpenFlow message with:
5
5
  """
6
6
  Pio::OpenFlow10::PortStats::Request.new(:none)
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 | 1 |
12
- | message_type | 16 |
13
- | message_length | 20 |
10
+ | version | 1 |
14
11
  | transaction_id | 0 |
15
12
  | xid | 0 |
16
13
  | stats_type | :port |
17
14
  | port | :none |
18
15
 
19
- @open_flow10
20
16
  Scenario: new(:none, transaction_id: 123)
21
- When I try to create an OpenFlow message with:
17
+ When I create an OpenFlow message with:
22
18
  """
23
19
  Pio::OpenFlow10::PortStats::Request.new(:none, transaction_id: 123)
24
20
  """
25
- Then it should finish successfully
26
- And the message has the following fields and values:
21
+ Then the message has the following fields and values:
27
22
  | field | value |
28
- | ofp_version | 1 |
29
- | message_type | 16 |
30
- | message_length | 20 |
31
- | transaction_id | 123 |
32
- | xid | 123 |
33
- | stats_type | :port |
34
- | port | :none |
35
-
36
- @open_flow10
37
- Scenario: read
38
- When I try to parse a file named "open_flow10/port_stats_request.raw" with "PortStats::Request" class
39
- Then it should finish successfully
40
- And the message has the following fields and values:
41
- | field | value |
42
- | ofp_version | 1 |
43
- | message_type | 16 |
44
- | message_length | 20 |
23
+ | version | 1 |
45
24
  | transaction_id | 123 |
46
25
  | xid | 123 |
47
26
  | stats_type | :port |
@@ -1,23 +1,24 @@
1
- Feature: Pio::PortStatus
1
+ @open_flow10
2
+ Feature: PortStatus
3
+
4
+ As physical ports are added, modified, and removed from the
5
+ datapath, the controller needs to be informed with the PortStatus
6
+ message.
7
+
2
8
  Scenario: read
3
- When I try to parse a file named "open_flow10/port_status.raw" with "PortStatus" class
4
- Then it should finish successfully
5
- And the message has the following fields and values:
6
- | field | value |
7
- | class | Pio::OpenFlow10::PortStatus |
8
- | ofp_version | 1 |
9
- | message_type | 12 |
10
- | message_length | 64 |
11
- | transaction_id | 4 |
12
- | xid | 4 |
13
- | reason | :delete |
14
- | desc.port_no | 65533 |
15
- | desc.hardware_address | 01:02:03:04:05:06 |
16
- | desc.name | foo |
17
- | desc.config | [:no_flood] |
18
- | desc.state | [:stp_forward, :stp_block] |
19
- | desc.curr | [:port_10mb_hd] |
20
- | desc.advertised | [:port_1gb_fd] |
21
- | desc.supported | [:port_autoneg] |
22
- | desc.peer | [:port_pause_asym] |
9
+ When I parse a file named "open_flow10/port_status.raw" with "PortStatus" class
10
+ Then the message has the following fields and values:
11
+ | field | value |
12
+ | transaction_id | 4 |
13
+ | xid | 4 |
14
+ | reason | :delete |
15
+ | number | 65533 |
16
+ | mac_address | 01:02:03:04:05:06 |
17
+ | name | foo |
18
+ | config | [:no_flood] |
19
+ | state | [:stp_forward, :stp_block] |
20
+ | curr | [:port_10mb_hd] |
21
+ | advertised | [:port_1gb_fd] |
22
+ | supported | [:port_autoneg] |
23
+ | peer | [:port_pause_asym] |
23
24
 
@@ -1,51 +1,33 @@
1
- Feature: Pio::OpenFlow10::QueueStats::Request
2
- @open_flow10
1
+ @open_flow10
2
+ Feature: QueueStats::Request
3
+
4
+ Information about queues is requested with a Queue Stats Request
5
+ message.
6
+
3
7
  Scenario: new(port: 1, queue_id: 1)
4
- When I try to create an OpenFlow message with:
8
+ When I create an OpenFlow message with:
5
9
  """
6
10
  Pio::OpenFlow10::QueueStats::Request.new(port: 1, queue_id: 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 | 20 |
14
+ | version | 1 |
14
15
  | transaction_id | 0 |
15
16
  | xid | 0 |
16
17
  | stats_type | :queue |
17
18
  | port | 1 |
18
19
  | queue_id | 1 |
19
20
 
20
- @open_flow10
21
21
  Scenario: new(port: 1, queue_id: 1, transaction_id: 123)
22
- When I try to create an OpenFlow message with:
22
+ When I create an OpenFlow message with:
23
23
  """
24
24
  Pio::OpenFlow10::QueueStats::Request.new(port: 1, queue_id: 1, transaction_id: 123)
25
25
  """
26
- Then it should finish successfully
27
- And the message has the following fields and values:
26
+ Then the message has the following fields and values:
28
27
  | field | value |
29
- | ofp_version | 1 |
30
- | message_type | 16 |
31
- | message_length | 20 |
28
+ | version | 1 |
32
29
  | transaction_id | 123 |
33
30
  | xid | 123 |
34
31
  | stats_type | :queue |
35
32
  | port | 1 |
36
33
  | queue_id | 1 |
37
-
38
- @open_flow10
39
- Scenario: read
40
- When I try to parse a file named "open_flow10/queue_stats_request.raw" with "QueueStats::Request" class
41
- Then it should finish successfully
42
- And the message has the following fields and values:
43
- | field | value |
44
- | ofp_version | 1 |
45
- | message_type | 16 |
46
- | message_length | 20 |
47
- | transaction_id | 123 |
48
- | xid | 123 |
49
- | stats_type | :queue |
50
- | port | :all |
51
- | queue_id | 1 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::SendOutPort
2
+ Feature: SendOutPort
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::SendOutPort.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 | 0 |
13
12
  | action_length | 8 |
@@ -15,12 +14,11 @@ Feature: Pio::SendOutPort
15
14
  | max_length | 65535 |
16
15
 
17
16
  Scenario: new(:all)
18
- When I try to create an OpenFlow action with:
17
+ When I create an OpenFlow action with:
19
18
  """
20
19
  Pio::SendOutPort.new(:all)
21
20
  """
22
- Then it should finish successfully
23
- And the action has the following fields and values:
21
+ Then the action has the following fields and values:
24
22
  | field | value |
25
23
  | action_type | 0 |
26
24
  | action_length | 8 |
@@ -28,12 +26,11 @@ Feature: Pio::SendOutPort
28
26
  | max_length | 65535 |
29
27
 
30
28
  Scenario: new(:controller)
31
- When I try to create an OpenFlow action with:
29
+ When I create an OpenFlow action with:
32
30
  """
33
31
  Pio::SendOutPort.new(:controller)
34
32
  """
35
- Then it should finish successfully
36
- And the action has the following fields and values:
33
+ Then the action has the following fields and values:
37
34
  | field | value |
38
35
  | action_type | 0 |
39
36
  | action_length | 8 |
@@ -41,12 +38,11 @@ Feature: Pio::SendOutPort
41
38
  | max_length | 65535 |
42
39
 
43
40
  Scenario: new(:local)
44
- When I try to create an OpenFlow action with:
41
+ When I create an OpenFlow action with:
45
42
  """
46
43
  Pio::SendOutPort.new(:local)
47
44
  """
48
- Then it should finish successfully
49
- And the action has the following fields and values:
45
+ Then the action has the following fields and values:
50
46
  | field | value |
51
47
  | action_type | 0 |
52
48
  | action_length | 8 |
@@ -54,12 +50,11 @@ Feature: Pio::SendOutPort
54
50
  | max_length | 65535 |
55
51
 
56
52
  Scenario: new(:table)
57
- When I try to create an OpenFlow action with:
53
+ When I create an OpenFlow action with:
58
54
  """
59
55
  Pio::SendOutPort.new(:table)
60
56
  """
61
- Then it should finish successfully
62
- And the action has the following fields and values:
57
+ Then the action has the following fields and values:
63
58
  | field | value |
64
59
  | action_type | 0 |
65
60
  | action_length | 8 |
@@ -67,12 +62,11 @@ Feature: Pio::SendOutPort
67
62
  | max_length | 65535 |
68
63
 
69
64
  Scenario: new(:in_port)
70
- When I try to create an OpenFlow action with:
65
+ When I create an OpenFlow action with:
71
66
  """
72
67
  Pio::SendOutPort.new(:in_port)
73
68
  """
74
- Then it should finish successfully
75
- And the action has the following fields and values:
69
+ Then the action has the following fields and values:
76
70
  | field | value |
77
71
  | action_type | 0 |
78
72
  | action_length | 8 |
@@ -80,12 +74,11 @@ Feature: Pio::SendOutPort
80
74
  | max_length | 65535 |
81
75
 
82
76
  Scenario: new(:normal)
83
- When I try to create an OpenFlow action with:
77
+ When I create an OpenFlow action with:
84
78
  """
85
79
  Pio::SendOutPort.new(:normal)
86
80
  """
87
- Then it should finish successfully
88
- And the action has the following fields and values:
81
+ Then the action has the following fields and values:
89
82
  | field | value |
90
83
  | action_type | 0 |
91
84
  | action_length | 8 |
@@ -93,12 +86,11 @@ Feature: Pio::SendOutPort
93
86
  | max_length | 65535 |
94
87
 
95
88
  Scenario: new(:flood)
96
- When I try to create an OpenFlow action with:
89
+ When I create an OpenFlow action with:
97
90
  """
98
91
  Pio::SendOutPort.new(:flood)
99
92
  """
100
- Then it should finish successfully
101
- And the action has the following fields and values:
93
+ Then the action has the following fields and values:
102
94
  | field | value |
103
95
  | action_type | 0 |
104
96
  | action_length | 8 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::SetDestinationMacAddress
2
+ Feature: SetDestinationMacAddress
3
3
 
4
4
  Scenario: new('11:22:33:44:55:66')
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::SetDestinationMacAddress.new('11:22:33:44:55:66')
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 | 5 |
13
12
  | action_length | 16 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::SetDestinationIpAddress
2
+ Feature: SetDestinationIpAddress
3
3
 
4
4
  Scenario: new('192.168.0.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::SetDestinationIpAddress.new('192.168.0.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 | 7 |
13
12
  | action_length | 8 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::SetSourceIpAddress
2
+ Feature: SetSourceIpAddress
3
3
 
4
4
  Scenario: new('192.168.0.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::SetSourceIpAddress.new('192.168.0.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 | 6 |
13
12
  | action_length | 8 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::SetSourceMacAddress
2
+ Feature: SetSourceMacAddress
3
3
 
4
4
  Scenario: new('11:22:33:44:55:66')
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::SetSourceMacAddress.new('11:22:33:44:55:66')
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 | 4 |
13
12
  | action_length | 16 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::SetTos
2
+ Feature: SetTos
3
3
 
4
4
  Scenario: new(0b11111100)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::OpenFlow10::SetTos.new(0b11111100)
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 | 8 |
13
12
  | action_length | 8 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::SetTransportDestinationPort
2
+ Feature: SetTransportDestinationPort
3
3
 
4
4
  Scenario: new(100)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::OpenFlow10::SetTransportDestinationPort.new(100)
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 | 10 |
13
12
  | action_length | 8 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::SetTransportSourcePort
2
+ Feature: SetTransportSourcePort
3
3
 
4
4
  Scenario: new(100)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::OpenFlow10::SetTransportSourcePort.new(100)
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 | 9 |
13
12
  | action_length | 8 |