pio 0.30.0 → 0.30.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -386,7 +386,7 @@ describe Pio::OpenFlow13::Match do
386
386
  end
387
387
  Then { match.ether_type == 0x0800 }
388
388
  Then { match.ip_protocol == 1 }
389
- Then { match.icmpv4_code == 0 }
389
+ Then { match.icmpv4_code.zero? }
390
390
  And { match.class == Pio::OpenFlow13::Match }
391
391
  And { match.length == 24 }
392
392
  And { match.match_type == Pio::OpenFlow13::MATCH_TYPE_OXM }
@@ -696,15 +696,15 @@ describe Pio::OpenFlow13::Match do
696
696
  end
697
697
 
698
698
  def read_raw_data_file(name)
699
- IO.read File.join(__dir__, '..', '..', '..', name)
699
+ IO.read File.join(__dir__, '..', '..', '..', 'fixtures', name)
700
700
  end
701
701
 
702
702
  describe '.read' do
703
703
  When(:match) { Pio::OpenFlow13::Match.read(raw_data) }
704
704
 
705
- context 'with file "features/open_flow13/oxm_no_fields.raw"' do
705
+ context 'with file "open_flow13/oxm_no_fields.raw"' do
706
706
  Given(:raw_data) do
707
- read_raw_data_file 'features/open_flow13/oxm_no_fields.raw'
707
+ read_raw_data_file 'open_flow13/oxm_no_fields.raw'
708
708
  end
709
709
  Then { match.match_fields == [] }
710
710
  And { match.class == Pio::OpenFlow13::Match }
@@ -713,9 +713,9 @@ describe Pio::OpenFlow13::Match do
713
713
  And { match.match_length == 4 }
714
714
  end
715
715
 
716
- context 'with file "features/open_flow13/oxm_in_port_field.raw"' do
716
+ context 'with file "open_flow13/oxm_in_port_field.raw"' do
717
717
  Given(:raw_data) do
718
- read_raw_data_file 'features/open_flow13/oxm_in_port_field.raw'
718
+ read_raw_data_file 'open_flow13/oxm_in_port_field.raw'
719
719
  end
720
720
  Then { match.in_port == 1 }
721
721
  And { match.class == Pio::OpenFlow13::Match }
@@ -735,9 +735,9 @@ describe Pio::OpenFlow13::Match do
735
735
  And { match.match_fields[0].oxm_length == 4 }
736
736
  end
737
737
 
738
- context 'with file "features/open_flow13/oxm_ether_destination_field.raw"' do
738
+ context 'with file "open_flow13/oxm_ether_destination_field.raw"' do
739
739
  Given(:raw_data) do
740
- read_raw_data_file 'features/open_flow13/oxm_ether_destination_field.raw'
740
+ read_raw_data_file 'open_flow13/oxm_ether_destination_field.raw'
741
741
  end
742
742
  Then { match.destination_mac_address == 'ff:ff:ff:ff:ff:ff' }
743
743
  And { match.class == Pio::OpenFlow13::Match }
@@ -757,9 +757,9 @@ describe Pio::OpenFlow13::Match do
757
757
  And { match.match_fields[0].oxm_length == 6 }
758
758
  end
759
759
 
760
- context 'with file "features/open_flow13/oxm_ether_source_field.raw"' do
760
+ context 'with file "open_flow13/oxm_ether_source_field.raw"' do
761
761
  Given(:raw_data) do
762
- read_raw_data_file 'features/open_flow13/oxm_ether_source_field.raw'
762
+ read_raw_data_file 'open_flow13/oxm_ether_source_field.raw'
763
763
  end
764
764
  Then { match.source_mac_address == '01:02:03:04:05:06' }
765
765
  And { match.class == Pio::OpenFlow13::Match }
@@ -779,9 +779,9 @@ describe Pio::OpenFlow13::Match do
779
779
  And { match.match_fields[0].oxm_length == 6 }
780
780
  end
781
781
 
782
- context 'with file "features/open_flow13/oxm_masked_ether_destination_field.raw"' do
782
+ context 'with file "open_flow13/oxm_masked_ether_destination_field.raw"' do
783
783
  Given(:raw_data) do
784
- read_raw_data_file 'features/open_flow13/oxm_masked_ether_destination_field.raw'
784
+ read_raw_data_file 'open_flow13/oxm_masked_ether_destination_field.raw'
785
785
  end
786
786
  Then { match.destination_mac_address == 'ff:ff:ff:ff:ff:ff' }
787
787
  Then { match.destination_mac_address_mask == 'ff:ff:ff:00:00:00' }
@@ -802,9 +802,9 @@ describe Pio::OpenFlow13::Match do
802
802
  And { match.match_fields[0].oxm_length == 12 }
803
803
  end
804
804
 
805
- context 'with file "features/open_flow13/oxm_masked_ether_source_field.raw"' do
805
+ context 'with file "open_flow13/oxm_masked_ether_source_field.raw"' do
806
806
  Given(:raw_data) do
807
- read_raw_data_file 'features/open_flow13/oxm_masked_ether_source_field.raw'
807
+ read_raw_data_file 'open_flow13/oxm_masked_ether_source_field.raw'
808
808
  end
809
809
  Then { match.source_mac_address == '01:02:03:04:05:06' }
810
810
  Then { match.source_mac_address_mask == 'ff:ff:ff:00:00:00' }
@@ -825,11 +825,11 @@ describe Pio::OpenFlow13::Match do
825
825
  And { match.match_fields[0].oxm_length == 12 }
826
826
  end
827
827
 
828
- context 'with file "features/open_flow13/oxm_ether_type_field.raw"' do
828
+ context 'with file "open_flow13/oxm_ether_type_field.raw"' do
829
829
  Given(:raw_data) do
830
- read_raw_data_file 'features/open_flow13/oxm_ether_type_field.raw'
830
+ read_raw_data_file 'open_flow13/oxm_ether_type_field.raw'
831
831
  end
832
- Then { match.ether_type == 0 }
832
+ Then { match.ether_type.zero? }
833
833
  And { match.class == Pio::OpenFlow13::Match }
834
834
  And { match.length == 16 }
835
835
  And { match.match_type == Pio::OpenFlow13::MATCH_TYPE_OXM }
@@ -847,9 +847,9 @@ describe Pio::OpenFlow13::Match do
847
847
  And { match.match_fields[0].oxm_length == 2 }
848
848
  end
849
849
 
850
- context 'with file "features/open_flow13/oxm_vlan_vid_field.raw"' do
850
+ context 'with file "open_flow13/oxm_vlan_vid_field.raw"' do
851
851
  Given(:raw_data) do
852
- read_raw_data_file 'features/open_flow13/oxm_vlan_vid_field.raw'
852
+ read_raw_data_file 'open_flow13/oxm_vlan_vid_field.raw'
853
853
  end
854
854
  Then { match.vlan_vid == 10 }
855
855
  And { match.class == Pio::OpenFlow13::Match }
@@ -869,9 +869,9 @@ describe Pio::OpenFlow13::Match do
869
869
  And { match.match_fields[0].oxm_length == 2 }
870
870
  end
871
871
 
872
- context 'with file "features/open_flow13/oxm_vlan_pcp_field.raw"' do
872
+ context 'with file "open_flow13/oxm_vlan_pcp_field.raw"' do
873
873
  Given(:raw_data) do
874
- read_raw_data_file 'features/open_flow13/oxm_vlan_pcp_field.raw'
874
+ read_raw_data_file 'open_flow13/oxm_vlan_pcp_field.raw'
875
875
  end
876
876
  Then { match.vlan_pcp == 5 }
877
877
  And { match.class == Pio::OpenFlow13::Match }
@@ -891,9 +891,9 @@ describe Pio::OpenFlow13::Match do
891
891
  And { match.match_fields[0].oxm_length == 2 }
892
892
  end
893
893
 
894
- context 'with file "features/open_flow13/oxm_ip_dscp_field.raw"' do
894
+ context 'with file "open_flow13/oxm_ip_dscp_field.raw"' do
895
895
  Given(:raw_data) do
896
- read_raw_data_file 'features/open_flow13/oxm_ip_dscp_field.raw'
896
+ read_raw_data_file 'open_flow13/oxm_ip_dscp_field.raw'
897
897
  end
898
898
  Then { match.ip_dscp == 0x2e }
899
899
  And { match.class == Pio::OpenFlow13::Match }
@@ -913,9 +913,9 @@ describe Pio::OpenFlow13::Match do
913
913
  And { match.match_fields[0].oxm_length == 2 }
914
914
  end
915
915
 
916
- context 'with file "features/open_flow13/oxm_ip_ecn_field.raw"' do
916
+ context 'with file "open_flow13/oxm_ip_ecn_field.raw"' do
917
917
  Given(:raw_data) do
918
- read_raw_data_file 'features/open_flow13/oxm_ip_ecn_field.raw'
918
+ read_raw_data_file 'open_flow13/oxm_ip_ecn_field.raw'
919
919
  end
920
920
  Then { match.ip_ecn == 3 }
921
921
  And { match.class == Pio::OpenFlow13::Match }
@@ -935,9 +935,9 @@ describe Pio::OpenFlow13::Match do
935
935
  And { match.match_fields[0].oxm_length == 2 }
936
936
  end
937
937
 
938
- context 'with file "features/open_flow13/oxm_ipv4_source_field.raw"' do
938
+ context 'with file "open_flow13/oxm_ipv4_source_field.raw"' do
939
939
  Given(:raw_data) do
940
- read_raw_data_file 'features/open_flow13/oxm_ipv4_source_field.raw'
940
+ read_raw_data_file 'open_flow13/oxm_ipv4_source_field.raw'
941
941
  end
942
942
  Then { match.ether_type == 0x0800 }
943
943
  Then { match.ipv4_source_address == '1.2.3.4' }
@@ -968,9 +968,9 @@ describe Pio::OpenFlow13::Match do
968
968
  And { match.match_fields[1].oxm_length == 4 }
969
969
  end
970
970
 
971
- context 'with file "features/open_flow13/oxm_ipv4_destination_field.raw"' do
971
+ context 'with file "open_flow13/oxm_ipv4_destination_field.raw"' do
972
972
  Given(:raw_data) do
973
- read_raw_data_file 'features/open_flow13/oxm_ipv4_destination_field.raw'
973
+ read_raw_data_file 'open_flow13/oxm_ipv4_destination_field.raw'
974
974
  end
975
975
  Then { match.ether_type == 0x0800 }
976
976
  Then { match.ipv4_destination_address == '11.22.33.44' }
@@ -1,8 +1,8 @@
1
1
  require 'pio/open_flow13/meter'
2
2
 
3
- describe Pio::Meter do
3
+ describe Pio::OpenFlow13::Meter do
4
4
  describe '.new' do
5
- When(:meter) { Pio::Meter.new(options) }
5
+ When(:meter) { Pio::OpenFlow13::Meter.new(options) }
6
6
 
7
7
  context 'with 1' do
8
8
  Given(:options) { 1 }
@@ -0,0 +1,71 @@
1
+ require 'pio/open_flow13/nicira_reg_load'
2
+
3
+ describe Pio::OpenFlow13::NiciraRegLoad do
4
+ describe '.new' do
5
+ When(:nicira_reg_load) do
6
+ Pio::OpenFlow13::NiciraRegLoad.new(value, destination, options)
7
+ end
8
+
9
+ context 'with 0xdeadbeef, :reg0' do
10
+ Given(:value) { 0xdeadbeef }
11
+ Given(:destination) { :reg0 }
12
+ Given(:options) { {} }
13
+
14
+ Invariant do
15
+ nicira_reg_load.n_bits == nicira_reg_load._destination[:oxm_length] * 8
16
+ end
17
+
18
+ Then { nicira_reg_load.action_type == 0xffff }
19
+ Then { nicira_reg_load.action_length == 24 }
20
+ Then { nicira_reg_load.vendor == 0x2320 }
21
+ Then { nicira_reg_load.subtype == 7 }
22
+ Then { nicira_reg_load.offset.zero? }
23
+ Then { nicira_reg_load.n_bits == 32 }
24
+ Then { nicira_reg_load.destination == :reg0 }
25
+ Then { nicira_reg_load._destination[:oxm_class] == 1 }
26
+ Then { nicira_reg_load._destination[:oxm_field].zero? }
27
+ Then { nicira_reg_load._destination[:oxm_length] == 4 }
28
+ Then { nicira_reg_load.value == 0xdeadbeef }
29
+ end
30
+
31
+ context 'with 0xdeadbeef, :metadata' do
32
+ Given(:value) { 0xdeadbeef }
33
+ Given(:destination) { :metadata }
34
+ Given(:options) { {} }
35
+
36
+ Invariant do
37
+ nicira_reg_load.n_bits == nicira_reg_load._destination[:oxm_length] * 8
38
+ end
39
+
40
+ Then { nicira_reg_load.action_type == 0xffff }
41
+ Then { nicira_reg_load.action_length == 24 }
42
+ Then { nicira_reg_load.vendor == 0x2320 }
43
+ Then { nicira_reg_load.subtype == 7 }
44
+ Then { nicira_reg_load.offset.zero? }
45
+ Then { nicira_reg_load.n_bits == 64 }
46
+ Then { nicira_reg_load.destination == :metadata }
47
+ Then { nicira_reg_load._destination[:oxm_class] == 0x8000 }
48
+ Then { nicira_reg_load._destination[:oxm_field] == 2 }
49
+ Then { nicira_reg_load._destination[:oxm_length] == 8 }
50
+ Then { nicira_reg_load.value == 0xdeadbeef }
51
+ end
52
+
53
+ context 'with 0xdeadbeef, :reg0, offset: 16, n_bits: 16' do
54
+ Given(:value) { 0xdeadbeef }
55
+ Given(:destination) { :reg0 }
56
+ Given(:options) { { offset: 16, n_bits: 16 } }
57
+
58
+ Then { nicira_reg_load.action_type == 0xffff }
59
+ Then { nicira_reg_load.action_length == 24 }
60
+ Then { nicira_reg_load.vendor == 0x2320 }
61
+ Then { nicira_reg_load.subtype == 7 }
62
+ Then { nicira_reg_load.offset == 16 }
63
+ Then { nicira_reg_load.n_bits == 16 }
64
+ Then { nicira_reg_load.destination == :reg0 }
65
+ Then { nicira_reg_load._destination[:oxm_class] == 1 }
66
+ Then { nicira_reg_load._destination[:oxm_field].zero? }
67
+ Then { nicira_reg_load._destination[:oxm_length] == 4 }
68
+ Then { nicira_reg_load.value == 0xdeadbeef }
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,40 @@
1
+ require 'pio/open_flow13/nicira_reg_move'
2
+
3
+ describe Pio::OpenFlow13::NiciraRegMove do
4
+ describe '.new' do
5
+ When(:nicira_reg_move) do
6
+ Pio::OpenFlow13::NiciraRegMove.new(options)
7
+ end
8
+
9
+ context 'with source: :arp_sender_hardware_address,'\
10
+ ' destination: :arp_target_hardware_address' do
11
+ Given(:options) do
12
+ { source: :arp_sender_hardware_address,
13
+ destination: :arp_target_hardware_address }
14
+ end
15
+
16
+ Invariant do
17
+ nicira_reg_move.n_bits ==
18
+ nicira_reg_move._source[:oxm_length] * 8
19
+ end
20
+
21
+ Then { nicira_reg_move.action_type == 0xffff }
22
+ Then { nicira_reg_move.action_length == 24 }
23
+ Then { nicira_reg_move.vendor == 0x2320 }
24
+ Then { nicira_reg_move.subtype == 6 }
25
+ Then { nicira_reg_move.n_bits == 48 }
26
+ Then { nicira_reg_move.source_offset.zero? }
27
+ Then { nicira_reg_move.destination_offset.zero? }
28
+ Then { nicira_reg_move.source == :arp_sender_hardware_address }
29
+ Then { nicira_reg_move._source[:oxm_class] == 0x8000 }
30
+ Then { nicira_reg_move._source[:oxm_field] == 24 }
31
+ Then { nicira_reg_move._source[:oxm_hasmask].zero? }
32
+ Then { nicira_reg_move._source[:oxm_length] == 6 }
33
+ Then { nicira_reg_move.destination == :arp_target_hardware_address }
34
+ Then { nicira_reg_move._destination[:oxm_class] == 0x8000 }
35
+ Then { nicira_reg_move._destination[:oxm_field] == 25 }
36
+ Then { nicira_reg_move._destination[:oxm_hasmask].zero? }
37
+ Then { nicira_reg_move._destination[:oxm_length] == 6 }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,29 @@
1
+ require 'pio/open_flow13/nicira_send_out_port'
2
+
3
+ describe Pio::OpenFlow13::NiciraSendOutPort do
4
+ describe '.new' do
5
+ When(:nicira_send_out_port) do
6
+ Pio::OpenFlow13::NiciraSendOutPort.new(source)
7
+ end
8
+
9
+ context 'with :reg0' do
10
+ Given(:source) { :reg0 }
11
+
12
+ Invariant do
13
+ nicira_send_out_port.n_bits ==
14
+ nicira_send_out_port._source[:oxm_length] * 8
15
+ end
16
+
17
+ Then { nicira_send_out_port.action_type == 0xffff }
18
+ Then { nicira_send_out_port.action_length == 24 }
19
+ Then { nicira_send_out_port.vendor == 0x2320 }
20
+ Then { nicira_send_out_port.subtype == 15 }
21
+ Then { nicira_send_out_port.offset.zero? }
22
+ Then { nicira_send_out_port.n_bits == 32 }
23
+ Then { nicira_send_out_port.source == :reg0 }
24
+ Then { nicira_send_out_port._source[:oxm_class] == 1 }
25
+ Then { nicira_send_out_port._source[:oxm_field].zero? }
26
+ Then { nicira_send_out_port._source[:oxm_length] == 4 }
27
+ end
28
+ end
29
+ end
@@ -1,8 +1,8 @@
1
1
  require 'pio/open_flow13/write_metadata'
2
2
 
3
- describe Pio::WriteMetadata do
3
+ describe Pio::OpenFlow13::WriteMetadata do
4
4
  describe '.new' do
5
- When(:write_metadata) { Pio::WriteMetadata.new(options) }
5
+ When(:write_metadata) { Pio::OpenFlow13::WriteMetadata.new(options) }
6
6
 
7
7
  context 'with metadata: 1' do
8
8
  Given(:options) do
@@ -11,7 +11,7 @@ describe Pio::WriteMetadata do
11
11
  }
12
12
  end
13
13
  Then { write_metadata.metadata == 1 }
14
- Then { write_metadata.metadata_mask == 0 }
14
+ Then { write_metadata.metadata_mask.zero? }
15
15
  end
16
16
 
17
17
  context 'with metadata: 1, metadata_mask: 1' do
@@ -2,32 +2,32 @@ require 'pio/open_flow'
2
2
 
3
3
  describe Pio::OpenFlow do
4
4
  describe 'switch_version' do
5
- When(:error) { Pio::OpenFlow.switch_version(version) }
5
+ When(:result) { Pio::OpenFlow.version = version }
6
6
 
7
7
  context 'with :OpenFlow10' do
8
8
  Given(:version) { :OpenFlow10 }
9
- Then { Pio::OpenFlow.version == 'OpenFlow10' }
9
+ Then { Pio::OpenFlow.version == :OpenFlow10 }
10
10
  end
11
11
 
12
12
  context 'with "OpenFlow10"' do
13
13
  Given(:version) { 'OpenFlow10' }
14
- Then { Pio::OpenFlow.version == 'OpenFlow10' }
14
+ Then { Pio::OpenFlow.version == :OpenFlow10 }
15
15
  end
16
16
 
17
17
  context 'with :OpenFlow13' do
18
18
  Given(:version) { :OpenFlow13 }
19
- Then { Pio::OpenFlow.version == 'OpenFlow13' }
19
+ Then { Pio::OpenFlow.version == :OpenFlow13 }
20
20
  end
21
21
 
22
22
  context 'with "OpenFlow13"' do
23
23
  Given(:version) { 'OpenFlow13' }
24
- Then { Pio::OpenFlow.version == 'OpenFlow13' }
24
+ Then { Pio::OpenFlow.version == :OpenFlow13 }
25
25
  end
26
26
 
27
27
  context 'with :OpenFlow100' do
28
28
  Given(:version) { :OpenFlow100 }
29
29
  Then do
30
- error == Failure(RuntimeError, 'OpenFlow100 is not supported yet.')
30
+ result == Failure(RuntimeError, 'OpenFlow100 is not supported yet.')
31
31
  end
32
32
  end
33
33
  end
@@ -8,7 +8,7 @@ if ENV['CODECLIMATE_REPO_TOKEN']
8
8
  formatters << CodeClimate::TestReporter::Formatter
9
9
  end
10
10
 
11
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[*formatters]
11
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(formatters)
12
12
  SimpleCov.start { add_filter '/vendor/' }
13
13
 
14
14
  require 'rspec/given'
@@ -38,18 +38,6 @@ shared_examples 'an OpenFlow message' do |klass|
38
38
  end
39
39
  end
40
40
 
41
- shared_examples 'an OpenFlow message with no body' do |klass|
42
- describe '.new' do
43
- When(:message) { klass.new(options) }
44
-
45
- context "with body: 'DEADBEEF'" do
46
- When(:options) { { body: 'DEADBEEF' } }
47
-
48
- Then { message.body == '' }
49
- end
50
- end
51
- end
52
-
53
41
  shared_examples 'an OpenFlow message with Datapath ID' do |klass|
54
42
  When(:message) { klass.new(options) }
55
43
 
@@ -63,14 +51,18 @@ shared_examples 'an OpenFlow message with Datapath ID' do |klass|
63
51
 
64
52
  context 'with { datapath_id: 0 }' do
65
53
  Given(:options) { { datapath_id: 0 } }
66
- Then { message.datapath_id == 0 }
54
+ Then { message.datapath_id.zero? }
55
+ And { message.dpid.zero? }
67
56
  And { message.datapath_id.is_a? Integer }
57
+ And { message.dpid.is_a? Integer }
68
58
  end
69
59
 
70
60
  context 'with { datapath_id: 2**64 - 1 }' do
71
61
  Given(:options) { { datapath_id: 2**64 - 1 } }
72
62
  Then { message.datapath_id == 2**64 - 1 }
63
+ And { message.dpid == 2**64 - 1 }
73
64
  And { message.datapath_id.is_a? Integer }
65
+ And { message.dpid.is_a? Integer }
74
66
  end
75
67
 
76
68
  context 'with { datapath_id: 2**64 }' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0
4
+ version: 0.30.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yasuhito Takamiya
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-17 00:00:00.000000000 Z
11
+ date: 2017-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata
@@ -30,356 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.2'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 4.2.4
33
+ version: 5.0.2
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '4.2'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 4.2.4
47
- - !ruby/object:Gem::Dependency
48
- name: bundler
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: 1.10.6
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: 1.10.6
61
- - !ruby/object:Gem::Dependency
62
- name: pry
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: 0.10.3
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: 0.10.3
75
- - !ruby/object:Gem::Dependency
76
- name: rake
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- - !ruby/object:Gem::Dependency
90
- name: guard
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: 2.13.0
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: 2.13.0
103
- - !ruby/object:Gem::Dependency
104
- name: guard-bundler
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: 2.1.0
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: 2.1.0
117
- - !ruby/object:Gem::Dependency
118
- name: guard-cucumber
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: 1.6.0
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: 1.6.0
131
- - !ruby/object:Gem::Dependency
132
- name: guard-rspec
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: 4.6.4
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: 4.6.4
145
- - !ruby/object:Gem::Dependency
146
- name: guard-rubocop
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: 1.2.0
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: 1.2.0
159
- - !ruby/object:Gem::Dependency
160
- name: rb-fchange
161
- requirement: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: 0.0.6
166
- type: :development
167
- prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: 0.0.6
173
- - !ruby/object:Gem::Dependency
174
- name: rb-fsevent
175
- requirement: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: 0.9.6
180
- type: :development
181
- prerelease: false
182
- version_requirements: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - "~>"
185
- - !ruby/object:Gem::Version
186
- version: 0.9.6
187
- - !ruby/object:Gem::Dependency
188
- name: rb-inotify
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: 0.9.5
194
- type: :development
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: 0.9.5
201
- - !ruby/object:Gem::Dependency
202
- name: terminal-notifier-guard
203
- requirement: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: 1.6.4
208
- type: :development
209
- prerelease: false
210
- version_requirements: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "~>"
213
- - !ruby/object:Gem::Version
214
- version: 1.6.4
215
- - !ruby/object:Gem::Dependency
216
- name: inch
217
- requirement: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: 0.7.0
222
- type: :development
223
- prerelease: false
224
- version_requirements: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - "~>"
227
- - !ruby/object:Gem::Version
228
- version: 0.7.0
229
- - !ruby/object:Gem::Dependency
230
- name: relish
231
- requirement: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: 0.7.1
236
- type: :development
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - "~>"
241
- - !ruby/object:Gem::Version
242
- version: 0.7.1
243
- - !ruby/object:Gem::Dependency
244
- name: yard
245
- requirement: !ruby/object:Gem::Requirement
246
- requirements:
247
- - - "~>"
248
- - !ruby/object:Gem::Version
249
- version: 0.8.7.6
250
- type: :development
251
- prerelease: false
252
- version_requirements: !ruby/object:Gem::Requirement
253
- requirements:
254
- - - "~>"
255
- - !ruby/object:Gem::Version
256
- version: 0.8.7.6
257
- - !ruby/object:Gem::Dependency
258
- name: codeclimate-test-reporter
259
- requirement: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - "~>"
262
- - !ruby/object:Gem::Version
263
- version: 0.4.8
264
- type: :development
265
- prerelease: false
266
- version_requirements: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: 0.4.8
271
- - !ruby/object:Gem::Dependency
272
- name: coveralls
273
- requirement: !ruby/object:Gem::Requirement
274
- requirements:
275
- - - "~>"
276
- - !ruby/object:Gem::Version
277
- version: 0.8.3
278
- type: :development
279
- prerelease: false
280
- version_requirements: !ruby/object:Gem::Requirement
281
- requirements:
282
- - - "~>"
283
- - !ruby/object:Gem::Version
284
- version: 0.8.3
285
- - !ruby/object:Gem::Dependency
286
- name: cucumber
287
- requirement: !ruby/object:Gem::Requirement
288
- requirements:
289
- - - "~>"
290
- - !ruby/object:Gem::Version
291
- version: 2.1.0
292
- type: :development
293
- prerelease: false
294
- version_requirements: !ruby/object:Gem::Requirement
295
- requirements:
296
- - - "~>"
297
- - !ruby/object:Gem::Version
298
- version: 2.1.0
299
- - !ruby/object:Gem::Dependency
300
- name: flay
301
- requirement: !ruby/object:Gem::Requirement
302
- requirements:
303
- - - "~>"
304
- - !ruby/object:Gem::Version
305
- version: 2.6.1
306
- type: :development
307
- prerelease: false
308
- version_requirements: !ruby/object:Gem::Requirement
309
- requirements:
310
- - - "~>"
311
- - !ruby/object:Gem::Version
312
- version: 2.6.1
313
- - !ruby/object:Gem::Dependency
314
- name: flog
315
- requirement: !ruby/object:Gem::Requirement
316
- requirements:
317
- - - "~>"
318
- - !ruby/object:Gem::Version
319
- version: 4.3.2
320
- type: :development
321
- prerelease: false
322
- version_requirements: !ruby/object:Gem::Requirement
323
- requirements:
324
- - - "~>"
325
- - !ruby/object:Gem::Version
326
- version: 4.3.2
327
- - !ruby/object:Gem::Dependency
328
- name: reek
329
- requirement: !ruby/object:Gem::Requirement
330
- requirements:
331
- - - "~>"
332
- - !ruby/object:Gem::Version
333
- version: 3.6.0
334
- type: :development
335
- prerelease: false
336
- version_requirements: !ruby/object:Gem::Requirement
337
- requirements:
338
- - - "~>"
339
- - !ruby/object:Gem::Version
340
- version: 3.6.0
341
- - !ruby/object:Gem::Dependency
342
- name: rspec
343
- requirement: !ruby/object:Gem::Requirement
344
- requirements:
345
- - - "~>"
346
- - !ruby/object:Gem::Version
347
- version: 3.3.0
348
- type: :development
349
- prerelease: false
350
- version_requirements: !ruby/object:Gem::Requirement
351
- requirements:
352
- - - "~>"
353
- - !ruby/object:Gem::Version
354
- version: 3.3.0
355
- - !ruby/object:Gem::Dependency
356
- name: rspec-given
357
- requirement: !ruby/object:Gem::Requirement
358
- requirements:
359
- - - "~>"
360
- - !ruby/object:Gem::Version
361
- version: 3.7.1
362
- type: :development
363
- prerelease: false
364
- version_requirements: !ruby/object:Gem::Requirement
365
- requirements:
366
- - - "~>"
367
- - !ruby/object:Gem::Version
368
- version: 3.7.1
369
- - !ruby/object:Gem::Dependency
370
- name: rubocop
371
- requirement: !ruby/object:Gem::Requirement
372
- requirements:
373
- - - "~>"
374
- - !ruby/object:Gem::Version
375
- version: 0.34.2
376
- type: :development
377
- prerelease: false
378
- version_requirements: !ruby/object:Gem::Requirement
379
- requirements:
380
- - - "~>"
381
- - !ruby/object:Gem::Version
382
- version: 0.34.2
40
+ version: 5.0.2
383
41
  description: Pure ruby packet parser and generator.
384
42
  email:
385
43
  - yasuhito@gmail.com
@@ -388,132 +46,50 @@ extensions: []
388
46
  extra_rdoc_files:
389
47
  - README.md
390
48
  - CHANGELOG.md
391
- - LICENSE
392
49
  - CONTRIBUTING.md
393
50
  files:
394
51
  - CHANGELOG.md
395
52
  - CONTRIBUTING.md
396
- - LICENSE
397
53
  - README.md
398
54
  - Rakefile
399
- - bin/_guard-core
400
- - bin/byebug
401
- - bin/cc-tddium-post-worker
402
- - bin/cdiff
403
- - bin/coderay
404
- - bin/colortab
405
- - bin/coveralls
406
- - bin/cucumber
407
- - bin/decolor
408
- - bin/flay
409
- - bin/flog
410
- - bin/guard
411
- - bin/htmldiff
412
- - bin/inch
413
- - bin/ldiff
414
- - bin/listen
415
- - bin/minitar
416
- - bin/pry
417
- - bin/rake
418
- - bin/reek
419
- - bin/relish
420
- - bin/restclient
421
- - bin/rspec
422
- - bin/rubocop
423
- - bin/ruby-parse
424
- - bin/ruby-rewrite
425
- - bin/ruby_parse
426
- - bin/ruby_parse_extract_error
427
- - bin/sparkr
428
- - bin/term_display
429
- - bin/term_mandel
430
- - bin/terminal-notifier
431
- - bin/thor
432
- - bin/unparser
433
- - bin/yard
434
- - bin/yardoc
435
- - bin/yri
436
- - features/arp-storm.pcap
437
- - features/arp.feature
438
- - features/arp.pcap
55
+ - features/arp/arp.feature
56
+ - features/arp/arp_reply.feature
57
+ - features/arp/arp_request.feature
439
58
  - features/dhcp.feature
440
- - features/dhcp.pcap
441
- - features/icmp.feature
442
- - features/icmp.pcap
443
- - features/icmpv6.pcap
444
- - features/lldp.detailed.pcap
59
+ - features/ethernet_header.feature
60
+ - features/icmp/icmp.feature
61
+ - features/icmp/icmp_reply.feature
62
+ - features/icmp/icmp_request.feature
63
+ - features/ipv4_header.feature
445
64
  - features/lldp.feature
446
- - features/lldp.minimal.pcap
65
+ - features/open_flow/header.feature
447
66
  - features/open_flow/nicira_resubmit.feature
448
67
  - features/open_flow/nicira_resubmit_table.feature
449
68
  - features/open_flow10/aggregate_stats_reply.feature
450
- - features/open_flow10/aggregate_stats_reply.raw
451
69
  - features/open_flow10/aggregate_stats_request.feature
452
- - features/open_flow10/aggregate_stats_request.raw
453
70
  - features/open_flow10/bad_request.feature
454
- - features/open_flow10/bad_request.raw
455
71
  - features/open_flow10/barrier_reply.feature
456
- - features/open_flow10/barrier_reply.raw
457
72
  - features/open_flow10/barrier_request.feature
458
- - features/open_flow10/barrier_request.raw
459
73
  - features/open_flow10/description_stats_reply.feature
460
- - features/open_flow10/description_stats_reply.raw
461
74
  - features/open_flow10/description_stats_request.feature
462
- - features/open_flow10/description_stats_request.raw
463
75
  - features/open_flow10/echo_reply.feature
464
- - features/open_flow10/echo_reply.raw
465
76
  - features/open_flow10/echo_request.feature
466
- - features/open_flow10/echo_request.raw
467
77
  - features/open_flow10/enqueue.feature
468
- - features/open_flow10/error.raw
469
78
  - features/open_flow10/exact_match.feature
470
79
  - features/open_flow10/features_reply.feature
471
- - features/open_flow10/features_reply.raw
472
80
  - features/open_flow10/features_request.feature
473
- - features/open_flow10/features_request.raw
474
81
  - features/open_flow10/flow_mod.feature
475
- - features/open_flow10/flow_mod_add.raw
476
- - features/open_flow10/flow_mod_delete.raw
477
- - features/open_flow10/flow_mod_delete_strict.raw
478
- - features/open_flow10/flow_mod_modify.raw
479
- - features/open_flow10/flow_mod_modify_strict.raw
480
82
  - features/open_flow10/flow_removed.feature
481
- - features/open_flow10/flow_removed.raw
482
83
  - features/open_flow10/flow_stats_reply.feature
483
- - features/open_flow10/flow_stats_reply.raw
484
84
  - features/open_flow10/flow_stats_request.feature
485
- - features/open_flow10/flow_stats_request.raw
486
- - features/open_flow10/get_config_reply.raw
487
- - features/open_flow10/get_config_request.raw
488
85
  - features/open_flow10/hello.feature
489
- - features/open_flow10/hello.raw
490
86
  - features/open_flow10/hello_failed.feature
491
- - features/open_flow10/hello_failed.raw
492
- - features/open_flow10/nx_flow_mod_add.raw
493
- - features/open_flow10/nx_flow_mod_delete.raw
494
- - features/open_flow10/nx_flow_mod_delete_strict.raw
495
- - features/open_flow10/nx_flow_mod_modify.raw
496
- - features/open_flow10/nx_flow_mod_modify_strict.raw
497
- - features/open_flow10/nxast_learn.raw
498
87
  - features/open_flow10/packet_in.feature
499
- - features/open_flow10/packet_in.raw
500
- - features/open_flow10/packet_in_arp_reply.raw
501
- - features/open_flow10/packet_in_arp_request.raw
502
- - features/open_flow10/packet_in_cbench.raw
503
88
  - features/open_flow10/packet_out.feature
504
- - features/open_flow10/packet_out.raw
505
- - features/open_flow10/port_mod.raw
506
- - features/open_flow10/port_stats_reply.raw
507
89
  - features/open_flow10/port_stats_request.feature
508
- - features/open_flow10/port_stats_request.raw
509
90
  - features/open_flow10/port_status.feature
510
- - features/open_flow10/port_status.raw
511
- - features/open_flow10/queue_get_config_reply.raw
512
- - features/open_flow10/queue_get_config_request.raw
513
91
  - features/open_flow10/queue_stats_request.feature
514
- - features/open_flow10/queue_stats_request.raw
515
92
  - features/open_flow10/send_out_port.feature
516
- - features/open_flow10/set_config.raw
517
93
  - features/open_flow10/set_destination_mac_address.feature
518
94
  - features/open_flow10/set_ip_destination_address.feature
519
95
  - features/open_flow10/set_source_ip_address.feature
@@ -524,148 +100,66 @@ files:
524
100
  - features/open_flow10/set_vlan_priority.feature
525
101
  - features/open_flow10/set_vlan_vid.feature
526
102
  - features/open_flow10/strip_vlan_header.feature
527
- - features/open_flow10/table_stats_reply.raw
528
103
  - features/open_flow10/table_stats_request.feature
529
- - features/open_flow10/table_stats_request.raw
530
- - features/open_flow10/vendor.raw
531
104
  - features/open_flow10/vendor_action.feature
532
- - features/open_flow10/vendor_stats_request.raw
533
- - features/open_flow13/action_copy_ttl_in.raw
534
- - features/open_flow13/action_copy_ttl_out.raw
535
- - features/open_flow13/action_dec_mpls_ttl.raw
536
- - features/open_flow13/action_dec_nw_ttl.raw
537
- - features/open_flow13/action_group.raw
538
- - features/open_flow13/action_pop_mpls.raw
539
- - features/open_flow13/action_pop_pbb.raw
540
- - features/open_flow13/action_pop_vlan.raw
541
- - features/open_flow13/action_push_mpls.raw
542
- - features/open_flow13/action_push_pbb.raw
543
- - features/open_flow13/action_push_vlan.raw
544
- - features/open_flow13/action_set_field.raw
545
- - features/open_flow13/action_set_mpls_ttl.raw
546
- - features/open_flow13/action_set_nw_ttl.raw
547
- - features/open_flow13/action_set_queue.raw
548
105
  - features/open_flow13/apply_actions.feature
549
- - features/open_flow13/apply_actions.raw
550
106
  - features/open_flow13/bad_request.feature
551
- - features/open_flow13/bad_request.raw
107
+ - features/open_flow13/copy_ttl_inwards.feature
108
+ - features/open_flow13/copy_ttl_outwards.feature
109
+ - features/open_flow13/decrement_ip_ttl.feature
552
110
  - features/open_flow13/echo_reply.feature
553
- - features/open_flow13/echo_reply_body.raw
554
- - features/open_flow13/echo_reply_no_body.raw
555
111
  - features/open_flow13/echo_request.feature
556
- - features/open_flow13/echo_request_body.raw
557
- - features/open_flow13/echo_request_no_body.raw
558
112
  - features/open_flow13/features_reply.feature
559
- - features/open_flow13/features_reply.raw
560
113
  - features/open_flow13/features_request.feature
561
- - features/open_flow13/features_request.raw
562
- - features/open_flow13/flow_add_apply_no_match.raw
563
114
  - features/open_flow13/flow_mod.feature
564
- - features/open_flow13/flow_mod_add_apply_no_match.raw
565
- - features/open_flow13/flow_mod_no_match_or_instructions.raw
566
115
  - features/open_flow13/goto_table.feature
567
116
  - features/open_flow13/hello.feature
568
117
  - features/open_flow13/hello_failed.feature
569
- - features/open_flow13/hello_failed.raw
570
- - features/open_flow13/hello_no_version_bitmap.raw
571
- - features/open_flow13/hello_version_bitmap.raw
572
- - features/open_flow13/instruction_clear_actions.raw
573
- - features/open_flow13/instruction_goto_table.raw
574
- - features/open_flow13/instruction_meter.raw
575
- - features/open_flow13/instruction_write_actions.raw
576
- - features/open_flow13/instruction_write_metadata.raw
577
118
  - features/open_flow13/match.feature
578
119
  - features/open_flow13/meter.feature
120
+ - features/open_flow13/nicira_conjunction.feature
579
121
  - features/open_flow13/nicira_reg_load.feature
580
122
  - features/open_flow13/nicira_reg_move.feature
581
123
  - features/open_flow13/nicira_send_out_port.feature
582
- - features/open_flow13/oxm_arp_op_field.raw
583
- - features/open_flow13/oxm_arp_sha_field.raw
584
- - features/open_flow13/oxm_arp_spa_field.raw
585
- - features/open_flow13/oxm_arp_tha_field.raw
586
- - features/open_flow13/oxm_arp_tpa_field.raw
587
- - features/open_flow13/oxm_ether_destination_field.raw
588
- - features/open_flow13/oxm_ether_source_field.raw
589
- - features/open_flow13/oxm_ether_type_field.raw
590
- - features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw
591
- - features/open_flow13/oxm_icmpv4_code_field.raw
592
- - features/open_flow13/oxm_icmpv4_type_field.raw
593
- - features/open_flow13/oxm_in_phy_port_field.raw
594
- - features/open_flow13/oxm_in_port_field.raw
595
- - features/open_flow13/oxm_invalid_field.raw
596
- - features/open_flow13/oxm_ip_dscp_field.raw
597
- - features/open_flow13/oxm_ip_ecn_field.raw
598
- - features/open_flow13/oxm_ipv4_destination_field.raw
599
- - features/open_flow13/oxm_ipv4_source_field.raw
600
- - features/open_flow13/oxm_ipv6_destination_field.raw
601
- - features/open_flow13/oxm_ipv6_source_field.raw
602
- - features/open_flow13/oxm_masked_arp_sha_field.raw
603
- - features/open_flow13/oxm_masked_arp_spa_field.raw
604
- - features/open_flow13/oxm_masked_arp_tha_field.raw
605
- - features/open_flow13/oxm_masked_arp_tpa_field.raw
606
- - features/open_flow13/oxm_masked_ether_destination_field.raw
607
- - features/open_flow13/oxm_masked_ether_source_field.raw
608
- - features/open_flow13/oxm_masked_ipv4_destination_field.raw
609
- - features/open_flow13/oxm_masked_ipv4_source_field.raw
610
- - features/open_flow13/oxm_masked_ipv6_destination_field.raw
611
- - features/open_flow13/oxm_masked_ipv6_source_field.raw
612
- - features/open_flow13/oxm_masked_tunnel_id_field.raw
613
- - features/open_flow13/oxm_metadata_field.raw
614
- - features/open_flow13/oxm_metadata_masked_field.raw
615
- - features/open_flow13/oxm_no_fields.raw
616
- - features/open_flow13/oxm_sctp_destination_field.raw
617
- - features/open_flow13/oxm_sctp_source_field.raw
618
- - features/open_flow13/oxm_tcp_destination_field.raw
619
- - features/open_flow13/oxm_tcp_field.raw
620
- - features/open_flow13/oxm_tcp_source_field.raw
621
- - features/open_flow13/oxm_tunnel_id_field.raw
622
- - features/open_flow13/oxm_udp_destination_field.raw
623
- - features/open_flow13/oxm_udp_field.raw
624
- - features/open_flow13/oxm_udp_source_field.raw
625
- - features/open_flow13/oxm_vlan_pcp_field.raw
626
- - features/open_flow13/oxm_vlan_vid_field.raw
124
+ - features/open_flow13/nicira_stack_pop.feature
125
+ - features/open_flow13/nicira_stack_push.feature
627
126
  - features/open_flow13/packet_in.feature
628
- - features/open_flow13/packet_in.raw
629
127
  - features/open_flow13/packet_out.feature
630
- - features/open_flow13/packet_out.raw
631
128
  - features/open_flow13/send_out_port.feature
632
- - features/open_flow13/send_out_port.raw
633
129
  - features/open_flow13/set_arp_operation.feature
634
130
  - features/open_flow13/set_arp_sender_hardware_address.feature
635
131
  - features/open_flow13/set_arp_sender_protocol_address.feature
636
132
  - features/open_flow13/set_destination_mac_address.feature
133
+ - features/open_flow13/set_ip_ttl.feature
637
134
  - features/open_flow13/set_metadata.feature
638
135
  - features/open_flow13/set_source_mac_address.feature
639
136
  - features/open_flow13/stats_request.feature
640
- - features/open_flow13/table_stats_reply.raw
641
- - features/open_flow13/table_stats_request.raw
642
137
  - features/open_flow13/write_metadata.feature
643
138
  - features/open_flow_read.feature
644
139
  - features/open_flow_version.feature
645
140
  - features/parser.feature
646
141
  - features/step_definitions/Gemfile
647
142
  - features/step_definitions/Guardfile
648
- - features/step_definitions/LICENSE
649
143
  - features/step_definitions/README.md
650
144
  - features/step_definitions/Rakefile
651
145
  - features/step_definitions/dump_flows_steps.rb
652
146
  - features/step_definitions/open_flow_steps.rb
653
147
  - features/step_definitions/packet_data_steps.rb
654
148
  - features/step_definitions/rest_api_steps.rb
149
+ - features/step_definitions/ruby_steps.rb
655
150
  - features/step_definitions/show_stats_steps.rb
656
151
  - features/step_definitions/trema_steps.rb
657
152
  - features/step_definitions/virtual_link_steps.rb
658
153
  - features/support/env.rb
659
154
  - features/support/hooks.rb
660
155
  - features/udp.feature
661
- - features/udp_no_payload.raw
662
- - features/udp_with_payload.raw
663
156
  - lib/pio.rb
664
157
  - lib/pio/arp.rb
665
158
  - lib/pio/arp/format.rb
666
159
  - lib/pio/arp/message.rb
667
160
  - lib/pio/arp/reply.rb
668
161
  - lib/pio/arp/request.rb
162
+ - lib/pio/class_inspector.rb
669
163
  - lib/pio/dhcp.rb
670
164
  - lib/pio/dhcp/ack.rb
671
165
  - lib/pio/dhcp/boot_reply.rb
@@ -684,13 +178,14 @@ files:
684
178
  - lib/pio/dhcp/optional_tlv.rb
685
179
  - lib/pio/dhcp/parameter_list.rb
686
180
  - lib/pio/dhcp/request.rb
181
+ - lib/pio/ethernet_frame.rb
687
182
  - lib/pio/ethernet_header.rb
688
183
  - lib/pio/icmp.rb
689
184
  - lib/pio/icmp/format.rb
690
185
  - lib/pio/icmp/message.rb
691
- - lib/pio/icmp/options.rb
692
186
  - lib/pio/icmp/reply.rb
693
187
  - lib/pio/icmp/request.rb
188
+ - lib/pio/instance_inspector.rb
694
189
  - lib/pio/ipv4_address.rb
695
190
  - lib/pio/ipv4_header.rb
696
191
  - lib/pio/lldp.rb
@@ -708,23 +203,33 @@ files:
708
203
  - lib/pio/lldp/system_name_value.rb
709
204
  - lib/pio/lldp/ttl_tlv.rb
710
205
  - lib/pio/mac.rb
206
+ - lib/pio/message.rb
711
207
  - lib/pio/message_type_selector.rb
208
+ - lib/pio/monkey_patch/bindata_record.rb
209
+ - lib/pio/monkey_patch/bindata_string.rb
712
210
  - lib/pio/monkey_patch/integer.rb
713
211
  - lib/pio/monkey_patch/integer/base_conversions.rb
714
212
  - lib/pio/monkey_patch/integer/ranges.rb
213
+ - lib/pio/monkey_patch/uint.rb
214
+ - lib/pio/monkey_patch/uint/base_conversions.rb
715
215
  - lib/pio/open_flow.rb
716
216
  - lib/pio/open_flow/action.rb
217
+ - lib/pio/open_flow/buffer_id.rb
717
218
  - lib/pio/open_flow/datapath_id.rb
718
- - lib/pio/open_flow/error.rb
219
+ - lib/pio/open_flow/error_message.rb
719
220
  - lib/pio/open_flow/flags.rb
221
+ - lib/pio/open_flow/flow_match.rb
222
+ - lib/pio/open_flow/header.rb
720
223
  - lib/pio/open_flow/hello_failed_code.rb
224
+ - lib/pio/open_flow/instruction.rb
721
225
  - lib/pio/open_flow/message.rb
722
226
  - lib/pio/open_flow/nicira_action.rb
723
227
  - lib/pio/open_flow/nicira_resubmit.rb
724
228
  - lib/pio/open_flow/nicira_resubmit_table.rb
725
- - lib/pio/open_flow/open_flow_header.rb
229
+ - lib/pio/open_flow/parser.rb
726
230
  - lib/pio/open_flow/port.rb
727
231
  - lib/pio/open_flow/transaction_id.rb
232
+ - lib/pio/open_flow/version.rb
728
233
  - lib/pio/open_flow10.rb
729
234
  - lib/pio/open_flow10/actions.rb
730
235
  - lib/pio/open_flow10/aggregate_stats/reply.rb
@@ -738,6 +243,7 @@ files:
738
243
  - lib/pio/open_flow10/enqueue.rb
739
244
  - lib/pio/open_flow10/error.rb
740
245
  - lib/pio/open_flow10/error/bad_request.rb
246
+ - lib/pio/open_flow10/error/bad_request/bad_request_code.rb
741
247
  - lib/pio/open_flow10/error/error_type10.rb
742
248
  - lib/pio/open_flow10/error/hello_failed.rb
743
249
  - lib/pio/open_flow10/exact_match.rb
@@ -745,18 +251,22 @@ files:
745
251
  - lib/pio/open_flow10/features/reply.rb
746
252
  - lib/pio/open_flow10/features/request.rb
747
253
  - lib/pio/open_flow10/flow_mod.rb
254
+ - lib/pio/open_flow10/flow_mod/command.rb
748
255
  - lib/pio/open_flow10/flow_removed.rb
256
+ - lib/pio/open_flow10/flow_removed/reason.rb
749
257
  - lib/pio/open_flow10/flow_stats/reply.rb
750
258
  - lib/pio/open_flow10/flow_stats/request.rb
751
259
  - lib/pio/open_flow10/hello.rb
752
260
  - lib/pio/open_flow10/match.rb
753
261
  - lib/pio/open_flow10/match10.rb
754
262
  - lib/pio/open_flow10/packet_in.rb
263
+ - lib/pio/open_flow10/packet_in/reason.rb
755
264
  - lib/pio/open_flow10/packet_out.rb
756
265
  - lib/pio/open_flow10/phy_port16.rb
757
266
  - lib/pio/open_flow10/port16.rb
758
267
  - lib/pio/open_flow10/port_stats/request.rb
759
268
  - lib/pio/open_flow10/port_status.rb
269
+ - lib/pio/open_flow10/port_status/reason.rb
760
270
  - lib/pio/open_flow10/queue_stats/request.rb
761
271
  - lib/pio/open_flow10/send_out_port.rb
762
272
  - lib/pio/open_flow10/set_destination_ip_address.rb
@@ -776,7 +286,9 @@ files:
776
286
  - lib/pio/open_flow13.rb
777
287
  - lib/pio/open_flow13/actions.rb
778
288
  - lib/pio/open_flow13/apply.rb
779
- - lib/pio/open_flow13/buffer_id.rb
289
+ - lib/pio/open_flow13/copy_ttl_inwards.rb
290
+ - lib/pio/open_flow13/copy_ttl_outwards.rb
291
+ - lib/pio/open_flow13/decrement_ip_ttl.rb
780
292
  - lib/pio/open_flow13/echo/reply.rb
781
293
  - lib/pio/open_flow13/echo/request.rb
782
294
  - lib/pio/open_flow13/error.rb
@@ -790,9 +302,12 @@ files:
790
302
  - lib/pio/open_flow13/hello.rb
791
303
  - lib/pio/open_flow13/match.rb
792
304
  - lib/pio/open_flow13/meter.rb
305
+ - lib/pio/open_flow13/nicira_conjunction.rb
793
306
  - lib/pio/open_flow13/nicira_reg_load.rb
794
307
  - lib/pio/open_flow13/nicira_reg_move.rb
795
308
  - lib/pio/open_flow13/nicira_send_out_port.rb
309
+ - lib/pio/open_flow13/nicira_stack_pop.rb
310
+ - lib/pio/open_flow13/nicira_stack_push.rb
796
311
  - lib/pio/open_flow13/packet_in.rb
797
312
  - lib/pio/open_flow13/packet_out.rb
798
313
  - lib/pio/open_flow13/port32.rb
@@ -801,6 +316,7 @@ files:
801
316
  - lib/pio/open_flow13/set_arp_sender_hardware_address.rb
802
317
  - lib/pio/open_flow13/set_arp_sender_protocol_address.rb
803
318
  - lib/pio/open_flow13/set_destination_mac_address.rb
319
+ - lib/pio/open_flow13/set_ip_ttl.rb
804
320
  - lib/pio/open_flow13/set_metadata.rb
805
321
  - lib/pio/open_flow13/set_source_mac_address.rb
806
322
  - lib/pio/open_flow13/stats_request.rb
@@ -810,6 +326,8 @@ files:
810
326
  - lib/pio/parser.rb
811
327
  - lib/pio/payload.rb
812
328
  - lib/pio/pcap.rb
329
+ - lib/pio/ruby_dumper.rb
330
+ - lib/pio/type/ether_type.rb
813
331
  - lib/pio/type/ip_address.rb
814
332
  - lib/pio/type/ipv6_address.rb
815
333
  - lib/pio/type/mac_address.rb
@@ -817,9 +335,7 @@ files:
817
335
  - lib/pio/udp_header.rb
818
336
  - lib/pio/version.rb
819
337
  - pio.gemspec
820
- - spec/pio/arp/reply/options_spec.rb
821
338
  - spec/pio/arp/reply_spec.rb
822
- - spec/pio/arp/request/options_spec.rb
823
339
  - spec/pio/arp/request_spec.rb
824
340
  - spec/pio/arp_spec.rb
825
341
  - spec/pio/dhcp/ack_spec.rb
@@ -833,6 +349,9 @@ files:
833
349
  - spec/pio/ipv4_address_spec.rb
834
350
  - spec/pio/lldp/options_spec.rb
835
351
  - spec/pio/mac_spec.rb
352
+ - spec/pio/monkey_patch/integer_spec.rb
353
+ - spec/pio/open_flow/nicira_resubmit_spec.rb
354
+ - spec/pio/open_flow/nicira_resubmit_table_spec.rb
836
355
  - spec/pio/open_flow10/echo/reply_spec.rb
837
356
  - spec/pio/open_flow10/echo/request_spec.rb
838
357
  - spec/pio/open_flow10/enqueue_spec.rb
@@ -869,6 +388,9 @@ files:
869
388
  - spec/pio/open_flow13/hello_spec.rb
870
389
  - spec/pio/open_flow13/match_spec.rb
871
390
  - spec/pio/open_flow13/meter_spec.rb
391
+ - spec/pio/open_flow13/nicira_reg_load_spec.rb
392
+ - spec/pio/open_flow13/nicira_reg_move_spec.rb
393
+ - spec/pio/open_flow13/nicira_send_out_port_spec.rb
872
394
  - spec/pio/open_flow13/packet_in_spec.rb
873
395
  - spec/pio/open_flow13/packet_out_spec.rb
874
396
  - spec/pio/open_flow13/write_metadata_spec.rb
@@ -877,7 +399,8 @@ files:
877
399
  - spec/support/shared_examples_for_openflow_messages.rb
878
400
  homepage: http://github.com/trema/pio
879
401
  licenses:
880
- - GPL3
402
+ - GPLv2
403
+ - MIT
881
404
  metadata: {}
882
405
  post_install_message:
883
406
  rdoc_options: []
@@ -887,7 +410,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
887
410
  requirements:
888
411
  - - ">="
889
412
  - !ruby/object:Gem::Version
890
- version: 2.0.0
413
+ version: 2.2.2
891
414
  required_rubygems_version: !ruby/object:Gem::Requirement
892
415
  requirements:
893
416
  - - ">="
@@ -895,294 +418,172 @@ required_rubygems_version: !ruby/object:Gem::Requirement
895
418
  version: '0'
896
419
  requirements: []
897
420
  rubyforge_project:
898
- rubygems_version: 2.4.6
421
+ rubygems_version: 2.6.11
899
422
  signing_key:
900
423
  specification_version: 4
901
424
  summary: Packet parser and generator.
902
425
  test_files:
903
- - spec/pio/arp/reply/options_spec.rb
904
- - spec/pio/arp/reply_spec.rb
905
- - spec/pio/arp/request/options_spec.rb
906
- - spec/pio/arp/request_spec.rb
426
+ - spec/pio/icmp/request_spec.rb
427
+ - spec/pio/icmp/reply_spec.rb
907
428
  - spec/pio/arp_spec.rb
908
- - spec/pio/dhcp/ack_spec.rb
429
+ - spec/pio/open_flow_spec.rb
430
+ - spec/pio/open_flow13/error/bad_request_spec.rb
431
+ - spec/pio/open_flow13/error/hello_failed_spec.rb
432
+ - spec/pio/open_flow13/match_spec.rb
433
+ - spec/pio/open_flow13/packet_out_spec.rb
434
+ - spec/pio/open_flow13/write_metadata_spec.rb
435
+ - spec/pio/open_flow13/echo_reply_spec.rb
436
+ - spec/pio/open_flow13/packet_in_spec.rb
437
+ - spec/pio/open_flow13/nicira_reg_load_spec.rb
438
+ - spec/pio/open_flow13/nicira_reg_move_spec.rb
439
+ - spec/pio/open_flow13/meter_spec.rb
440
+ - spec/pio/open_flow13/features/request_spec.rb
441
+ - spec/pio/open_flow13/features/reply_spec.rb
442
+ - spec/pio/open_flow13/nicira_send_out_port_spec.rb
443
+ - spec/pio/open_flow13/echo_request_spec.rb
444
+ - spec/pio/open_flow13/hello_spec.rb
445
+ - spec/pio/open_flow13/goto_table_spec.rb
446
+ - spec/pio/open_flow/nicira_resubmit_spec.rb
447
+ - spec/pio/open_flow/nicira_resubmit_table_spec.rb
448
+ - spec/pio/lldp/options_spec.rb
449
+ - spec/pio/dhcp/request_spec.rb
909
450
  - spec/pio/dhcp/discover_spec.rb
451
+ - spec/pio/dhcp/ack_spec.rb
910
452
  - spec/pio/dhcp/offer_spec.rb
911
- - spec/pio/dhcp/request_spec.rb
912
- - spec/pio/dhcp_spec.rb
913
- - spec/pio/icmp/reply_spec.rb
914
- - spec/pio/icmp/request_spec.rb
915
- - spec/pio/icmp_spec.rb
916
- - spec/pio/ipv4_address_spec.rb
917
- - spec/pio/lldp/options_spec.rb
918
- - spec/pio/mac_spec.rb
919
- - spec/pio/open_flow10/echo/reply_spec.rb
920
- - spec/pio/open_flow10/echo/request_spec.rb
921
- - spec/pio/open_flow10/enqueue_spec.rb
922
453
  - spec/pio/open_flow10/error/hello_failed_spec.rb
923
- - spec/pio/open_flow10/features/reply_spec.rb
924
- - spec/pio/open_flow10/features/request_spec.rb
925
- - spec/pio/open_flow10/flow_mod_spec.rb
926
- - spec/pio/open_flow10/flow_stats_reply_spec.rb
927
- - spec/pio/open_flow10/flow_stats_request_spec.rb
928
- - spec/pio/open_flow10/hello_spec.rb
929
454
  - spec/pio/open_flow10/match_spec.rb
930
- - spec/pio/open_flow10/packet_in_spec.rb
455
+ - spec/pio/open_flow10/set_destination_mac_address_spec.rb
456
+ - spec/pio/open_flow10/set_transport_destination_port_spec.rb
931
457
  - spec/pio/open_flow10/packet_out_spec.rb
458
+ - spec/pio/open_flow10/flow_stats_reply_spec.rb
459
+ - spec/pio/open_flow10/packet_in_spec.rb
460
+ - spec/pio/open_flow10/enqueue_spec.rb
461
+ - spec/pio/open_flow10/set_source_mac_address_spec.rb
462
+ - spec/pio/open_flow10/flow_stats_request_spec.rb
463
+ - spec/pio/open_flow10/set_transport_source_port_spec.rb
464
+ - spec/pio/open_flow10/echo/request_spec.rb
465
+ - spec/pio/open_flow10/echo/reply_spec.rb
932
466
  - spec/pio/open_flow10/phy_port16_spec.rb
467
+ - spec/pio/open_flow10/features/request_spec.rb
468
+ - spec/pio/open_flow10/features/reply_spec.rb
469
+ - spec/pio/open_flow10/set_vlan_priority_spec.rb
470
+ - spec/pio/open_flow10/wildcards_spec.rb
471
+ - spec/pio/open_flow10/flow_mod_spec.rb
933
472
  - spec/pio/open_flow10/send_out_port_spec.rb
473
+ - spec/pio/open_flow10/set_vlan_vid_spec.rb
934
474
  - spec/pio/open_flow10/set_destination_ip_address_spec.rb
935
- - spec/pio/open_flow10/set_destination_mac_address_spec.rb
936
475
  - spec/pio/open_flow10/set_source_ip_address_spec.rb
937
- - spec/pio/open_flow10/set_source_mac_address_spec.rb
938
476
  - spec/pio/open_flow10/set_tos_spec.rb
939
- - spec/pio/open_flow10/set_transport_destination_port_spec.rb
940
- - spec/pio/open_flow10/set_transport_source_port_spec.rb
941
- - spec/pio/open_flow10/set_vlan_priority_spec.rb
942
- - spec/pio/open_flow10/set_vlan_vid_spec.rb
477
+ - spec/pio/open_flow10/hello_spec.rb
943
478
  - spec/pio/open_flow10/strip_vlan_header_spec.rb
944
- - spec/pio/open_flow10/wildcards_spec.rb
945
- - spec/pio/open_flow13/echo_reply_spec.rb
946
- - spec/pio/open_flow13/echo_request_spec.rb
947
- - spec/pio/open_flow13/error/bad_request_spec.rb
948
- - spec/pio/open_flow13/error/hello_failed_spec.rb
949
- - spec/pio/open_flow13/features/reply_spec.rb
950
- - spec/pio/open_flow13/features/request_spec.rb
951
- - spec/pio/open_flow13/goto_table_spec.rb
952
- - spec/pio/open_flow13/hello_spec.rb
953
- - spec/pio/open_flow13/match_spec.rb
954
- - spec/pio/open_flow13/meter_spec.rb
955
- - spec/pio/open_flow13/packet_in_spec.rb
956
- - spec/pio/open_flow13/packet_out_spec.rb
957
- - spec/pio/open_flow13/write_metadata_spec.rb
958
- - spec/pio/open_flow_spec.rb
959
- - spec/spec_helper.rb
479
+ - spec/pio/arp/request_spec.rb
480
+ - spec/pio/arp/reply_spec.rb
481
+ - spec/pio/icmp_spec.rb
482
+ - spec/pio/mac_spec.rb
483
+ - spec/pio/monkey_patch/integer_spec.rb
484
+ - spec/pio/dhcp_spec.rb
485
+ - spec/pio/ipv4_address_spec.rb
960
486
  - spec/support/shared_examples_for_openflow_messages.rb
961
- - features/arp-storm.pcap
962
- - features/arp.feature
963
- - features/arp.pcap
487
+ - spec/spec_helper.rb
488
+ - features/icmp/icmp_request.feature
489
+ - features/icmp/icmp.feature
490
+ - features/icmp/icmp_reply.feature
964
491
  - features/dhcp.feature
965
- - features/dhcp.pcap
966
- - features/icmp.feature
967
- - features/icmp.pcap
968
- - features/icmpv6.pcap
969
- - features/lldp.detailed.pcap
970
- - features/lldp.feature
971
- - features/lldp.minimal.pcap
972
- - features/open_flow/nicira_resubmit.feature
492
+ - features/open_flow_version.feature
493
+ - features/ipv4_header.feature
494
+ - features/open_flow13/packet_out.feature
495
+ - features/open_flow13/packet_in.feature
496
+ - features/open_flow13/echo_request.feature
497
+ - features/open_flow13/apply_actions.feature
498
+ - features/open_flow13/match.feature
499
+ - features/open_flow13/echo_reply.feature
500
+ - features/open_flow13/set_ip_ttl.feature
501
+ - features/open_flow13/goto_table.feature
502
+ - features/open_flow13/stats_request.feature
503
+ - features/open_flow13/flow_mod.feature
504
+ - features/open_flow13/nicira_reg_load.feature
505
+ - features/open_flow13/nicira_reg_move.feature
506
+ - features/open_flow13/set_arp_operation.feature
507
+ - features/open_flow13/send_out_port.feature
508
+ - features/open_flow13/hello_failed.feature
509
+ - features/open_flow13/copy_ttl_outwards.feature
510
+ - features/open_flow13/features_request.feature
511
+ - features/open_flow13/set_destination_mac_address.feature
512
+ - features/open_flow13/nicira_stack_push.feature
513
+ - features/open_flow13/set_source_mac_address.feature
514
+ - features/open_flow13/write_metadata.feature
515
+ - features/open_flow13/features_reply.feature
516
+ - features/open_flow13/nicira_conjunction.feature
517
+ - features/open_flow13/set_arp_sender_hardware_address.feature
518
+ - features/open_flow13/nicira_send_out_port.feature
519
+ - features/open_flow13/nicira_stack_pop.feature
520
+ - features/open_flow13/decrement_ip_ttl.feature
521
+ - features/open_flow13/set_arp_sender_protocol_address.feature
522
+ - features/open_flow13/bad_request.feature
523
+ - features/open_flow13/set_metadata.feature
524
+ - features/open_flow13/copy_ttl_inwards.feature
525
+ - features/open_flow13/hello.feature
526
+ - features/open_flow13/meter.feature
973
527
  - features/open_flow/nicira_resubmit_table.feature
528
+ - features/open_flow/header.feature
529
+ - features/open_flow/nicira_resubmit.feature
530
+ - features/open_flow10/packet_out.feature
974
531
  - features/open_flow10/aggregate_stats_reply.feature
975
- - features/open_flow10/aggregate_stats_reply.raw
976
- - features/open_flow10/aggregate_stats_request.feature
977
- - features/open_flow10/aggregate_stats_request.raw
978
- - features/open_flow10/bad_request.feature
979
- - features/open_flow10/bad_request.raw
980
- - features/open_flow10/barrier_reply.feature
981
- - features/open_flow10/barrier_reply.raw
982
- - features/open_flow10/barrier_request.feature
983
- - features/open_flow10/barrier_request.raw
984
- - features/open_flow10/description_stats_reply.feature
985
- - features/open_flow10/description_stats_reply.raw
986
- - features/open_flow10/description_stats_request.feature
987
- - features/open_flow10/description_stats_request.raw
988
- - features/open_flow10/echo_reply.feature
989
- - features/open_flow10/echo_reply.raw
532
+ - features/open_flow10/packet_in.feature
533
+ - features/open_flow10/table_stats_request.feature
990
534
  - features/open_flow10/echo_request.feature
991
- - features/open_flow10/echo_request.raw
992
535
  - features/open_flow10/enqueue.feature
993
- - features/open_flow10/error.raw
994
- - features/open_flow10/exact_match.feature
995
- - features/open_flow10/features_reply.feature
996
- - features/open_flow10/features_reply.raw
997
- - features/open_flow10/features_request.feature
998
- - features/open_flow10/features_request.raw
999
- - features/open_flow10/flow_mod.feature
1000
- - features/open_flow10/flow_mod_add.raw
1001
- - features/open_flow10/flow_mod_delete.raw
1002
- - features/open_flow10/flow_mod_delete_strict.raw
1003
- - features/open_flow10/flow_mod_modify.raw
1004
- - features/open_flow10/flow_mod_modify_strict.raw
1005
- - features/open_flow10/flow_removed.feature
1006
- - features/open_flow10/flow_removed.raw
1007
- - features/open_flow10/flow_stats_reply.feature
1008
- - features/open_flow10/flow_stats_reply.raw
1009
- - features/open_flow10/flow_stats_request.feature
1010
- - features/open_flow10/flow_stats_request.raw
1011
- - features/open_flow10/get_config_reply.raw
1012
- - features/open_flow10/get_config_request.raw
1013
- - features/open_flow10/hello.feature
1014
- - features/open_flow10/hello.raw
1015
- - features/open_flow10/hello_failed.feature
1016
- - features/open_flow10/hello_failed.raw
1017
- - features/open_flow10/nx_flow_mod_add.raw
1018
- - features/open_flow10/nx_flow_mod_delete.raw
1019
- - features/open_flow10/nx_flow_mod_delete_strict.raw
1020
- - features/open_flow10/nx_flow_mod_modify.raw
1021
- - features/open_flow10/nx_flow_mod_modify_strict.raw
1022
- - features/open_flow10/nxast_learn.raw
1023
- - features/open_flow10/packet_in.feature
1024
- - features/open_flow10/packet_in.raw
1025
- - features/open_flow10/packet_in_arp_reply.raw
1026
- - features/open_flow10/packet_in_arp_request.raw
1027
- - features/open_flow10/packet_in_cbench.raw
1028
- - features/open_flow10/packet_out.feature
1029
- - features/open_flow10/packet_out.raw
1030
- - features/open_flow10/port_mod.raw
1031
- - features/open_flow10/port_stats_reply.raw
1032
- - features/open_flow10/port_stats_request.feature
1033
- - features/open_flow10/port_stats_request.raw
1034
- - features/open_flow10/port_status.feature
1035
- - features/open_flow10/port_status.raw
1036
- - features/open_flow10/queue_get_config_reply.raw
1037
- - features/open_flow10/queue_get_config_request.raw
536
+ - features/open_flow10/set_ip_destination_address.feature
537
+ - features/open_flow10/set_vlan_vid.feature
538
+ - features/open_flow10/echo_reply.feature
1038
539
  - features/open_flow10/queue_stats_request.feature
1039
- - features/open_flow10/queue_stats_request.raw
540
+ - features/open_flow10/flow_stats_reply.feature
541
+ - features/open_flow10/flow_mod.feature
542
+ - features/open_flow10/exact_match.feature
543
+ - features/open_flow10/set_transport_source_port.feature
544
+ - features/open_flow10/set_source_ip_address.feature
545
+ - features/open_flow10/vendor_action.feature
1040
546
  - features/open_flow10/send_out_port.feature
1041
- - features/open_flow10/set_config.raw
547
+ - features/open_flow10/hello_failed.feature
548
+ - features/open_flow10/features_request.feature
1042
549
  - features/open_flow10/set_destination_mac_address.feature
1043
- - features/open_flow10/set_ip_destination_address.feature
1044
- - features/open_flow10/set_source_ip_address.feature
550
+ - features/open_flow10/description_stats_reply.feature
1045
551
  - features/open_flow10/set_source_mac_address.feature
1046
- - features/open_flow10/set_tos.feature
1047
- - features/open_flow10/set_transport_destination_port.feature
1048
- - features/open_flow10/set_transport_source_port.feature
1049
552
  - features/open_flow10/set_vlan_priority.feature
1050
- - features/open_flow10/set_vlan_vid.feature
553
+ - features/open_flow10/port_stats_request.feature
1051
554
  - features/open_flow10/strip_vlan_header.feature
1052
- - features/open_flow10/table_stats_reply.raw
1053
- - features/open_flow10/table_stats_request.feature
1054
- - features/open_flow10/table_stats_request.raw
1055
- - features/open_flow10/vendor.raw
1056
- - features/open_flow10/vendor_action.feature
1057
- - features/open_flow10/vendor_stats_request.raw
1058
- - features/open_flow13/action_copy_ttl_in.raw
1059
- - features/open_flow13/action_copy_ttl_out.raw
1060
- - features/open_flow13/action_dec_mpls_ttl.raw
1061
- - features/open_flow13/action_dec_nw_ttl.raw
1062
- - features/open_flow13/action_group.raw
1063
- - features/open_flow13/action_pop_mpls.raw
1064
- - features/open_flow13/action_pop_pbb.raw
1065
- - features/open_flow13/action_pop_vlan.raw
1066
- - features/open_flow13/action_push_mpls.raw
1067
- - features/open_flow13/action_push_pbb.raw
1068
- - features/open_flow13/action_push_vlan.raw
1069
- - features/open_flow13/action_set_field.raw
1070
- - features/open_flow13/action_set_mpls_ttl.raw
1071
- - features/open_flow13/action_set_nw_ttl.raw
1072
- - features/open_flow13/action_set_queue.raw
1073
- - features/open_flow13/apply_actions.feature
1074
- - features/open_flow13/apply_actions.raw
1075
- - features/open_flow13/bad_request.feature
1076
- - features/open_flow13/bad_request.raw
1077
- - features/open_flow13/echo_reply.feature
1078
- - features/open_flow13/echo_reply_body.raw
1079
- - features/open_flow13/echo_reply_no_body.raw
1080
- - features/open_flow13/echo_request.feature
1081
- - features/open_flow13/echo_request_body.raw
1082
- - features/open_flow13/echo_request_no_body.raw
1083
- - features/open_flow13/features_reply.feature
1084
- - features/open_flow13/features_reply.raw
1085
- - features/open_flow13/features_request.feature
1086
- - features/open_flow13/features_request.raw
1087
- - features/open_flow13/flow_add_apply_no_match.raw
1088
- - features/open_flow13/flow_mod.feature
1089
- - features/open_flow13/flow_mod_add_apply_no_match.raw
1090
- - features/open_flow13/flow_mod_no_match_or_instructions.raw
1091
- - features/open_flow13/goto_table.feature
1092
- - features/open_flow13/hello.feature
1093
- - features/open_flow13/hello_failed.feature
1094
- - features/open_flow13/hello_failed.raw
1095
- - features/open_flow13/hello_no_version_bitmap.raw
1096
- - features/open_flow13/hello_version_bitmap.raw
1097
- - features/open_flow13/instruction_clear_actions.raw
1098
- - features/open_flow13/instruction_goto_table.raw
1099
- - features/open_flow13/instruction_meter.raw
1100
- - features/open_flow13/instruction_write_actions.raw
1101
- - features/open_flow13/instruction_write_metadata.raw
1102
- - features/open_flow13/match.feature
1103
- - features/open_flow13/meter.feature
1104
- - features/open_flow13/nicira_reg_load.feature
1105
- - features/open_flow13/nicira_reg_move.feature
1106
- - features/open_flow13/nicira_send_out_port.feature
1107
- - features/open_flow13/oxm_arp_op_field.raw
1108
- - features/open_flow13/oxm_arp_sha_field.raw
1109
- - features/open_flow13/oxm_arp_spa_field.raw
1110
- - features/open_flow13/oxm_arp_tha_field.raw
1111
- - features/open_flow13/oxm_arp_tpa_field.raw
1112
- - features/open_flow13/oxm_ether_destination_field.raw
1113
- - features/open_flow13/oxm_ether_source_field.raw
1114
- - features/open_flow13/oxm_ether_type_field.raw
1115
- - features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw
1116
- - features/open_flow13/oxm_icmpv4_code_field.raw
1117
- - features/open_flow13/oxm_icmpv4_type_field.raw
1118
- - features/open_flow13/oxm_in_phy_port_field.raw
1119
- - features/open_flow13/oxm_in_port_field.raw
1120
- - features/open_flow13/oxm_invalid_field.raw
1121
- - features/open_flow13/oxm_ip_dscp_field.raw
1122
- - features/open_flow13/oxm_ip_ecn_field.raw
1123
- - features/open_flow13/oxm_ipv4_destination_field.raw
1124
- - features/open_flow13/oxm_ipv4_source_field.raw
1125
- - features/open_flow13/oxm_ipv6_destination_field.raw
1126
- - features/open_flow13/oxm_ipv6_source_field.raw
1127
- - features/open_flow13/oxm_masked_arp_sha_field.raw
1128
- - features/open_flow13/oxm_masked_arp_spa_field.raw
1129
- - features/open_flow13/oxm_masked_arp_tha_field.raw
1130
- - features/open_flow13/oxm_masked_arp_tpa_field.raw
1131
- - features/open_flow13/oxm_masked_ether_destination_field.raw
1132
- - features/open_flow13/oxm_masked_ether_source_field.raw
1133
- - features/open_flow13/oxm_masked_ipv4_destination_field.raw
1134
- - features/open_flow13/oxm_masked_ipv4_source_field.raw
1135
- - features/open_flow13/oxm_masked_ipv6_destination_field.raw
1136
- - features/open_flow13/oxm_masked_ipv6_source_field.raw
1137
- - features/open_flow13/oxm_masked_tunnel_id_field.raw
1138
- - features/open_flow13/oxm_metadata_field.raw
1139
- - features/open_flow13/oxm_metadata_masked_field.raw
1140
- - features/open_flow13/oxm_no_fields.raw
1141
- - features/open_flow13/oxm_sctp_destination_field.raw
1142
- - features/open_flow13/oxm_sctp_source_field.raw
1143
- - features/open_flow13/oxm_tcp_destination_field.raw
1144
- - features/open_flow13/oxm_tcp_field.raw
1145
- - features/open_flow13/oxm_tcp_source_field.raw
1146
- - features/open_flow13/oxm_tunnel_id_field.raw
1147
- - features/open_flow13/oxm_udp_destination_field.raw
1148
- - features/open_flow13/oxm_udp_field.raw
1149
- - features/open_flow13/oxm_udp_source_field.raw
1150
- - features/open_flow13/oxm_vlan_pcp_field.raw
1151
- - features/open_flow13/oxm_vlan_vid_field.raw
1152
- - features/open_flow13/packet_in.feature
1153
- - features/open_flow13/packet_in.raw
1154
- - features/open_flow13/packet_out.feature
1155
- - features/open_flow13/packet_out.raw
1156
- - features/open_flow13/send_out_port.feature
1157
- - features/open_flow13/send_out_port.raw
1158
- - features/open_flow13/set_arp_operation.feature
1159
- - features/open_flow13/set_arp_sender_hardware_address.feature
1160
- - features/open_flow13/set_arp_sender_protocol_address.feature
1161
- - features/open_flow13/set_destination_mac_address.feature
1162
- - features/open_flow13/set_metadata.feature
1163
- - features/open_flow13/set_source_mac_address.feature
1164
- - features/open_flow13/stats_request.feature
1165
- - features/open_flow13/table_stats_reply.raw
1166
- - features/open_flow13/table_stats_request.raw
1167
- - features/open_flow13/write_metadata.feature
1168
- - features/open_flow_read.feature
1169
- - features/open_flow_version.feature
555
+ - features/open_flow10/description_stats_request.feature
556
+ - features/open_flow10/features_reply.feature
557
+ - features/open_flow10/flow_stats_request.feature
558
+ - features/open_flow10/set_transport_destination_port.feature
559
+ - features/open_flow10/set_tos.feature
560
+ - features/open_flow10/port_status.feature
561
+ - features/open_flow10/flow_removed.feature
562
+ - features/open_flow10/aggregate_stats_request.feature
563
+ - features/open_flow10/barrier_request.feature
564
+ - features/open_flow10/bad_request.feature
565
+ - features/open_flow10/barrier_reply.feature
566
+ - features/open_flow10/hello.feature
567
+ - features/arp/arp_request.feature
568
+ - features/arp/arp_reply.feature
569
+ - features/arp/arp.feature
1170
570
  - features/parser.feature
1171
- - features/step_definitions/dump_flows_steps.rb
1172
- - features/step_definitions/Gemfile
1173
- - features/step_definitions/Guardfile
1174
- - features/step_definitions/LICENSE
571
+ - features/open_flow_read.feature
1175
572
  - features/step_definitions/open_flow_steps.rb
1176
- - features/step_definitions/packet_data_steps.rb
1177
- - features/step_definitions/Rakefile
1178
- - features/step_definitions/README.md
1179
- - features/step_definitions/rest_api_steps.rb
573
+ - features/step_definitions/Guardfile
574
+ - features/step_definitions/dump_flows_steps.rb
1180
575
  - features/step_definitions/show_stats_steps.rb
1181
576
  - features/step_definitions/trema_steps.rb
577
+ - features/step_definitions/ruby_steps.rb
578
+ - features/step_definitions/Gemfile
579
+ - features/step_definitions/rest_api_steps.rb
580
+ - features/step_definitions/Rakefile
1182
581
  - features/step_definitions/virtual_link_steps.rb
582
+ - features/step_definitions/packet_data_steps.rb
583
+ - features/step_definitions/README.md
584
+ - features/ethernet_header.feature
585
+ - features/lldp.feature
1183
586
  - features/support/env.rb
1184
587
  - features/support/hooks.rb
1185
588
  - features/udp.feature
1186
- - features/udp_no_payload.raw
1187
- - features/udp_with_payload.raw
1188
589
  has_rdoc: