pio 0.30.0 → 0.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +6 -49
- data/Rakefile +4 -4
- data/features/{arp.feature → arp/arp.feature} +14 -30
- data/features/arp/arp_reply.feature +69 -0
- data/features/arp/arp_request.feature +67 -0
- data/features/dhcp.feature +157 -162
- data/features/ethernet_header.feature +149 -0
- data/features/icmp/icmp.feature +47 -0
- data/features/icmp/icmp_reply.feature +93 -0
- data/features/icmp/icmp_request.feature +89 -0
- data/features/ipv4_header.feature +89 -0
- data/features/lldp.feature +5 -8
- data/features/open_flow/header.feature +13 -0
- data/features/open_flow/nicira_resubmit.feature +4 -22
- data/features/open_flow/nicira_resubmit_table.feature +6 -16
- data/features/open_flow10/aggregate_stats_reply.feature +5 -7
- data/features/open_flow10/aggregate_stats_request.feature +12 -14
- data/features/open_flow10/bad_request.feature +7 -24
- data/features/open_flow10/barrier_reply.feature +14 -25
- data/features/open_flow10/barrier_request.feature +12 -25
- data/features/open_flow10/description_stats_reply.feature +9 -7
- data/features/open_flow10/description_stats_request.feature +12 -25
- data/features/open_flow10/echo_reply.feature +14 -35
- data/features/open_flow10/echo_request.feature +16 -39
- data/features/open_flow10/enqueue.feature +3 -4
- data/features/open_flow10/exact_match.feature +5 -5
- data/features/open_flow10/features_reply.feature +28 -73
- data/features/open_flow10/features_request.feature +10 -28
- data/features/open_flow10/flow_mod.feature +4 -188
- data/features/open_flow10/flow_removed.feature +28 -30
- data/features/open_flow10/flow_stats_reply.feature +5 -89
- data/features/open_flow10/flow_stats_request.feature +12 -42
- data/features/open_flow10/hello.feature +10 -32
- data/features/open_flow10/hello_failed.feature +7 -57
- data/features/open_flow10/packet_in.feature +130 -49
- data/features/open_flow10/packet_out.feature +29 -18
- data/features/open_flow10/port_stats_request.feature +8 -29
- data/features/open_flow10/port_status.feature +22 -21
- data/features/open_flow10/queue_stats_request.feature +12 -30
- data/features/open_flow10/send_out_port.feature +17 -25
- data/features/open_flow10/set_destination_mac_address.feature +3 -4
- data/features/open_flow10/set_ip_destination_address.feature +3 -4
- data/features/open_flow10/set_source_ip_address.feature +3 -4
- data/features/open_flow10/set_source_mac_address.feature +3 -4
- data/features/open_flow10/set_tos.feature +3 -4
- data/features/open_flow10/set_transport_destination_port.feature +3 -4
- data/features/open_flow10/set_transport_source_port.feature +3 -4
- data/features/open_flow10/set_vlan_priority.feature +3 -4
- data/features/open_flow10/set_vlan_vid.feature +3 -4
- data/features/open_flow10/strip_vlan_header.feature +3 -4
- data/features/open_flow10/table_stats_request.feature +11 -13
- data/features/open_flow10/vendor_action.feature +4 -5
- data/features/open_flow13/apply_actions.feature +15 -18
- data/features/open_flow13/bad_request.feature +7 -13
- data/features/open_flow13/copy_ttl_inwards.feature +13 -0
- data/features/open_flow13/copy_ttl_outwards.feature +13 -0
- data/features/open_flow13/decrement_ip_ttl.feature +11 -0
- data/features/open_flow13/echo_reply.feature +16 -42
- data/features/open_flow13/echo_request.feature +16 -42
- data/features/open_flow13/features_reply.feature +4 -25
- data/features/open_flow13/features_request.feature +7 -36
- data/features/open_flow13/flow_mod.feature +16 -76
- data/features/open_flow13/goto_table.feature +18 -20
- data/features/open_flow13/hello.feature +7 -37
- data/features/open_flow13/hello_failed.feature +7 -30
- data/features/open_flow13/match.feature +239 -248
- data/features/open_flow13/meter.feature +18 -20
- data/features/open_flow13/nicira_conjunction.feature +15 -0
- data/features/open_flow13/nicira_reg_load.feature +27 -42
- data/features/open_flow13/nicira_reg_move.feature +41 -35
- data/features/open_flow13/nicira_send_out_port.feature +21 -13
- data/features/open_flow13/nicira_stack_pop.feature +26 -0
- data/features/open_flow13/nicira_stack_push.feature +26 -0
- data/features/open_flow13/packet_in.feature +7 -34
- data/features/open_flow13/packet_out.feature +7 -45
- data/features/open_flow13/send_out_port.feature +19 -28
- data/features/open_flow13/set_arp_operation.feature +4 -5
- data/features/open_flow13/set_arp_sender_hardware_address.feature +3 -4
- data/features/open_flow13/set_arp_sender_protocol_address.feature +3 -4
- data/features/open_flow13/set_destination_mac_address.feature +3 -4
- data/features/open_flow13/set_ip_ttl.feature +12 -0
- data/features/open_flow13/set_metadata.feature +3 -4
- data/features/open_flow13/set_source_mac_address.feature +3 -4
- data/features/open_flow13/stats_request.feature +4 -7
- data/features/open_flow13/write_metadata.feature +20 -22
- data/features/open_flow_read.feature +24 -5
- data/features/open_flow_version.feature +1 -1
- data/features/parser.feature +8 -9
- data/features/step_definitions/open_flow_steps.rb +11 -16
- data/features/step_definitions/packet_data_steps.rb +16 -32
- data/features/step_definitions/ruby_steps.rb +7 -0
- data/features/step_definitions/show_stats_steps.rb +3 -3
- data/features/support/env.rb +1 -0
- data/features/support/hooks.rb +2 -2
- data/features/udp.feature +26 -27
- data/lib/pio.rb +1 -1
- data/lib/pio/arp.rb +9 -6
- data/lib/pio/arp/format.rb +3 -7
- data/lib/pio/arp/message.rb +8 -4
- data/lib/pio/arp/reply.rb +9 -32
- data/lib/pio/arp/request.rb +9 -33
- data/lib/pio/class_inspector.rb +18 -0
- data/lib/pio/dhcp.rb +2 -2
- data/lib/pio/dhcp/frame.rb +4 -4
- data/lib/pio/dhcp/optional_tlv.rb +3 -3
- data/lib/pio/ethernet_frame.rb +20 -0
- data/lib/pio/ethernet_header.rb +35 -13
- data/lib/pio/icmp.rb +8 -5
- data/lib/pio/icmp/format.rb +19 -22
- data/lib/pio/icmp/message.rb +18 -4
- data/lib/pio/icmp/reply.rb +8 -34
- data/lib/pio/icmp/request.rb +8 -43
- data/lib/pio/instance_inspector.rb +14 -0
- data/lib/pio/ipv4_address.rb +11 -11
- data/lib/pio/ipv4_header.rb +24 -2
- data/lib/pio/lldp/frame.rb +2 -2
- data/lib/pio/lldp/optional_tlv.rb +2 -2
- data/lib/pio/mac.rb +7 -3
- data/lib/pio/message.rb +50 -0
- data/lib/pio/monkey_patch/bindata_record.rb +6 -0
- data/lib/pio/monkey_patch/bindata_string.rb +10 -0
- data/lib/pio/monkey_patch/integer/base_conversions.rb +1 -1
- data/lib/pio/monkey_patch/uint.rb +9 -0
- data/lib/pio/monkey_patch/uint/base_conversions.rb +14 -0
- data/lib/pio/open_flow.rb +38 -52
- data/lib/pio/open_flow/action.rb +8 -4
- data/lib/pio/open_flow/buffer_id.rb +19 -0
- data/lib/pio/open_flow/datapath_id.rb +3 -3
- data/lib/pio/open_flow/error_message.rb +32 -0
- data/lib/pio/open_flow/flags.rb +15 -6
- data/lib/pio/open_flow/flow_match.rb +10 -0
- data/lib/pio/open_flow/header.rb +26 -0
- data/lib/pio/open_flow/hello_failed_code.rb +1 -1
- data/lib/pio/open_flow/instruction.rb +10 -0
- data/lib/pio/open_flow/message.rb +49 -14
- data/lib/pio/open_flow/nicira_resubmit.rb +13 -11
- data/lib/pio/open_flow/nicira_resubmit_table.rb +17 -10
- data/lib/pio/open_flow/parser.rb +19 -0
- data/lib/pio/open_flow/port.rb +2 -2
- data/lib/pio/open_flow/transaction_id.rb +2 -2
- data/lib/pio/open_flow/version.rb +22 -0
- data/lib/pio/open_flow10/actions.rb +16 -16
- data/lib/pio/open_flow10/aggregate_stats/reply.rb +2 -1
- data/lib/pio/open_flow10/aggregate_stats/request.rb +1 -3
- data/lib/pio/open_flow10/barrier/reply.rb +1 -1
- data/lib/pio/open_flow10/barrier/request.rb +1 -1
- data/lib/pio/open_flow10/description_stats/reply.rb +1 -1
- data/lib/pio/open_flow10/description_stats/request.rb +1 -3
- data/lib/pio/open_flow10/echo/reply.rb +3 -3
- data/lib/pio/open_flow10/echo/request.rb +3 -3
- data/lib/pio/open_flow10/enqueue.rb +3 -3
- data/lib/pio/open_flow10/error.rb +3 -13
- data/lib/pio/open_flow10/error/bad_request.rb +5 -29
- data/lib/pio/open_flow10/error/bad_request/bad_request_code.rb +35 -0
- data/lib/pio/open_flow10/error/error_type10.rb +1 -1
- data/lib/pio/open_flow10/error/hello_failed.rb +6 -4
- data/lib/pio/open_flow10/exact_match.rb +12 -10
- data/lib/pio/open_flow10/features/reply.rb +16 -31
- data/lib/pio/open_flow10/features/request.rb +1 -4
- data/lib/pio/open_flow10/flow_mod.rb +8 -33
- data/lib/pio/open_flow10/flow_mod/command.rb +28 -0
- data/lib/pio/open_flow10/flow_removed.rb +2 -17
- data/lib/pio/open_flow10/flow_removed/reason.rb +22 -0
- data/lib/pio/open_flow10/flow_stats/reply.rb +3 -4
- data/lib/pio/open_flow10/flow_stats/request.rb +1 -3
- data/lib/pio/open_flow10/hello.rb +1 -4
- data/lib/pio/open_flow10/match.rb +13 -12
- data/lib/pio/open_flow10/packet_in.rb +32 -28
- data/lib/pio/open_flow10/packet_in/reason.rb +25 -0
- data/lib/pio/open_flow10/packet_out.rb +5 -6
- data/lib/pio/open_flow10/phy_port16.rb +36 -58
- data/lib/pio/open_flow10/port_stats/request.rb +1 -3
- data/lib/pio/open_flow10/port_status.rb +23 -30
- data/lib/pio/open_flow10/port_status/reason.rb +21 -0
- data/lib/pio/open_flow10/queue_stats/request.rb +1 -3
- data/lib/pio/open_flow10/send_out_port.rb +2 -2
- data/lib/pio/open_flow10/set_tos.rb +2 -2
- data/lib/pio/open_flow10/set_transport_port.rb +4 -2
- data/lib/pio/open_flow10/set_vlan_priority.rb +1 -1
- data/lib/pio/open_flow10/set_vlan_vid.rb +1 -1
- data/lib/pio/open_flow10/stats_reply.rb +7 -10
- data/lib/pio/open_flow10/stats_request.rb +16 -15
- data/lib/pio/open_flow10/stats_type.rb +1 -1
- data/lib/pio/open_flow10/table_stats/request.rb +1 -3
- data/lib/pio/open_flow10/vendor_action.rb +22 -20
- data/lib/pio/open_flow13.rb +7 -0
- data/lib/pio/open_flow13/actions.rb +34 -32
- data/lib/pio/open_flow13/apply.rb +25 -22
- data/lib/pio/open_flow13/copy_ttl_inwards.rb +15 -0
- data/lib/pio/open_flow13/copy_ttl_outwards.rb +15 -0
- data/lib/pio/open_flow13/decrement_ip_ttl.rb +15 -0
- data/lib/pio/open_flow13/echo/reply.rb +3 -3
- data/lib/pio/open_flow13/echo/request.rb +3 -3
- data/lib/pio/open_flow13/error.rb +7 -18
- data/lib/pio/open_flow13/error/bad_request.rb +4 -3
- data/lib/pio/open_flow13/error/error_type13.rb +1 -1
- data/lib/pio/open_flow13/error/hello_failed.rb +3 -2
- data/lib/pio/open_flow13/features/reply.rb +9 -16
- data/lib/pio/open_flow13/features/request.rb +1 -1
- data/lib/pio/open_flow13/flow_mod.rb +14 -19
- data/lib/pio/open_flow13/goto_table.rb +26 -24
- data/lib/pio/open_flow13/hello.rb +3 -4
- data/lib/pio/open_flow13/match.rb +173 -9
- data/lib/pio/open_flow13/meter.rb +23 -20
- data/lib/pio/open_flow13/nicira_conjunction.rb +26 -0
- data/lib/pio/open_flow13/nicira_reg_load.rb +44 -24
- data/lib/pio/open_flow13/nicira_reg_move.rb +77 -35
- data/lib/pio/open_flow13/nicira_send_out_port.rb +37 -21
- data/lib/pio/open_flow13/nicira_stack_pop.rb +49 -0
- data/lib/pio/open_flow13/nicira_stack_push.rb +49 -0
- data/lib/pio/open_flow13/packet_in.rb +11 -8
- data/lib/pio/open_flow13/packet_out.rb +9 -8
- data/lib/pio/open_flow13/set_ip_ttl.rb +16 -0
- data/lib/pio/open_flow13/stats_request.rb +2 -4
- data/lib/pio/open_flow13/write_metadata.rb +40 -38
- data/lib/pio/options.rb +8 -3
- data/lib/pio/parser.rb +7 -16
- data/lib/pio/ruby_dumper.rb +69 -0
- data/lib/pio/type/ether_type.rb +31 -0
- data/lib/pio/type/ip_address.rb +8 -0
- data/lib/pio/type/mac_address.rb +10 -0
- data/lib/pio/udp.rb +3 -3
- data/lib/pio/udp_header.rb +1 -1
- data/lib/pio/version.rb +1 -1
- data/pio.gemspec +5 -38
- data/spec/pio/arp/reply_spec.rb +0 -4
- data/spec/pio/arp/request_spec.rb +0 -4
- data/spec/pio/arp_spec.rb +0 -4
- data/spec/pio/icmp/reply_spec.rb +4 -8
- data/spec/pio/icmp/request_spec.rb +6 -10
- data/spec/pio/icmp_spec.rb +8 -12
- data/spec/pio/monkey_patch/integer_spec.rb +23 -0
- data/spec/pio/open_flow/nicira_resubmit_spec.rb +19 -0
- data/spec/pio/open_flow/nicira_resubmit_table_spec.rb +20 -0
- data/spec/pio/open_flow10/error/hello_failed_spec.rb +2 -2
- data/spec/pio/open_flow10/flow_mod_spec.rb +24 -24
- data/spec/pio/open_flow10/flow_stats_request_spec.rb +3 -3
- data/spec/pio/open_flow10/hello_spec.rb +0 -2
- data/spec/pio/open_flow10/match_spec.rb +38 -38
- data/spec/pio/open_flow10/packet_out_spec.rb +0 -349
- data/spec/pio/open_flow10/phy_port16_spec.rb +5 -5
- data/spec/pio/open_flow13/error/hello_failed_spec.rb +2 -2
- data/spec/pio/open_flow13/goto_table_spec.rb +2 -2
- data/spec/pio/open_flow13/hello_spec.rb +15 -15
- data/spec/pio/open_flow13/match_spec.rb +29 -29
- data/spec/pio/open_flow13/meter_spec.rb +2 -2
- data/spec/pio/open_flow13/nicira_reg_load_spec.rb +71 -0
- data/spec/pio/open_flow13/nicira_reg_move_spec.rb +40 -0
- data/spec/pio/open_flow13/nicira_send_out_port_spec.rb +29 -0
- data/spec/pio/open_flow13/write_metadata_spec.rb +3 -3
- data/spec/pio/open_flow_spec.rb +6 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/support/shared_examples_for_openflow_messages.rb +5 -13
- metadata +191 -790
- data/LICENSE +0 -674
- data/bin/_guard-core +0 -16
- data/bin/byebug +0 -16
- data/bin/cc-tddium-post-worker +0 -16
- data/bin/cdiff +0 -16
- data/bin/coderay +0 -16
- data/bin/colortab +0 -16
- data/bin/coveralls +0 -16
- data/bin/cucumber +0 -16
- data/bin/decolor +0 -16
- data/bin/flay +0 -16
- data/bin/flog +0 -16
- data/bin/guard +0 -16
- data/bin/htmldiff +0 -16
- data/bin/inch +0 -16
- data/bin/ldiff +0 -16
- data/bin/listen +0 -16
- data/bin/minitar +0 -16
- data/bin/pry +0 -16
- data/bin/rake +0 -16
- data/bin/reek +0 -16
- data/bin/relish +0 -16
- data/bin/restclient +0 -16
- data/bin/rspec +0 -16
- data/bin/rubocop +0 -16
- data/bin/ruby-parse +0 -16
- data/bin/ruby-rewrite +0 -16
- data/bin/ruby_parse +0 -16
- data/bin/ruby_parse_extract_error +0 -16
- data/bin/sparkr +0 -16
- data/bin/term_display +0 -16
- data/bin/term_mandel +0 -16
- data/bin/terminal-notifier +0 -16
- data/bin/thor +0 -16
- data/bin/unparser +0 -16
- data/bin/yard +0 -16
- data/bin/yardoc +0 -16
- data/bin/yri +0 -16
- data/features/arp-storm.pcap +0 -0
- data/features/arp.pcap +0 -0
- data/features/dhcp.pcap +0 -0
- data/features/icmp.feature +0 -130
- data/features/icmp.pcap +0 -0
- data/features/icmpv6.pcap +0 -0
- data/features/lldp.detailed.pcap +0 -0
- data/features/lldp.minimal.pcap +0 -0
- data/features/open_flow10/aggregate_stats_reply.raw +0 -0
- data/features/open_flow10/aggregate_stats_request.raw +0 -0
- data/features/open_flow10/bad_request.raw +0 -0
- data/features/open_flow10/barrier_reply.raw +0 -0
- data/features/open_flow10/barrier_request.raw +0 -0
- data/features/open_flow10/description_stats_reply.raw +0 -0
- data/features/open_flow10/description_stats_request.raw +0 -0
- data/features/open_flow10/echo_reply.raw +0 -0
- data/features/open_flow10/echo_request.raw +0 -0
- data/features/open_flow10/error.raw +0 -0
- data/features/open_flow10/features_reply.raw +0 -0
- data/features/open_flow10/features_request.raw +0 -0
- data/features/open_flow10/flow_mod_add.raw +0 -0
- data/features/open_flow10/flow_mod_delete.raw +0 -0
- data/features/open_flow10/flow_mod_delete_strict.raw +0 -0
- data/features/open_flow10/flow_mod_modify.raw +0 -0
- data/features/open_flow10/flow_mod_modify_strict.raw +0 -0
- data/features/open_flow10/flow_removed.raw +0 -0
- data/features/open_flow10/flow_stats_reply.raw +0 -0
- data/features/open_flow10/flow_stats_request.raw +0 -0
- data/features/open_flow10/get_config_reply.raw +0 -0
- data/features/open_flow10/get_config_request.raw +0 -0
- data/features/open_flow10/hello.raw +0 -0
- data/features/open_flow10/hello_failed.raw +0 -0
- data/features/open_flow10/nx_flow_mod_add.raw +0 -0
- data/features/open_flow10/nx_flow_mod_delete.raw +0 -0
- data/features/open_flow10/nx_flow_mod_delete_strict.raw +0 -0
- data/features/open_flow10/nx_flow_mod_modify.raw +0 -0
- data/features/open_flow10/nx_flow_mod_modify_strict.raw +0 -0
- data/features/open_flow10/nxast_learn.raw +0 -0
- data/features/open_flow10/packet_in.raw +0 -0
- data/features/open_flow10/packet_in_arp_reply.raw +0 -0
- data/features/open_flow10/packet_in_arp_request.raw +0 -0
- data/features/open_flow10/packet_in_cbench.raw +0 -0
- data/features/open_flow10/packet_out.raw +0 -0
- data/features/open_flow10/port_mod.raw +0 -0
- data/features/open_flow10/port_stats_reply.raw +0 -0
- data/features/open_flow10/port_stats_request.raw +0 -0
- data/features/open_flow10/port_status.raw +0 -0
- data/features/open_flow10/queue_get_config_reply.raw +0 -0
- data/features/open_flow10/queue_get_config_request.raw +0 -0
- data/features/open_flow10/queue_stats_request.raw +0 -0
- data/features/open_flow10/set_config.raw +0 -0
- data/features/open_flow10/table_stats_reply.raw +0 -0
- data/features/open_flow10/table_stats_request.raw +0 -0
- data/features/open_flow10/vendor.raw +0 -0
- data/features/open_flow10/vendor_stats_request.raw +0 -0
- data/features/open_flow13/action_copy_ttl_in.raw +0 -0
- data/features/open_flow13/action_copy_ttl_out.raw +0 -0
- data/features/open_flow13/action_dec_mpls_ttl.raw +0 -0
- data/features/open_flow13/action_dec_nw_ttl.raw +0 -0
- data/features/open_flow13/action_group.raw +0 -0
- data/features/open_flow13/action_pop_mpls.raw +0 -0
- data/features/open_flow13/action_pop_pbb.raw +0 -0
- data/features/open_flow13/action_pop_vlan.raw +0 -0
- data/features/open_flow13/action_push_mpls.raw +0 -0
- data/features/open_flow13/action_push_pbb.raw +0 -0
- data/features/open_flow13/action_push_vlan.raw +0 -0
- data/features/open_flow13/action_set_field.raw +0 -0
- data/features/open_flow13/action_set_mpls_ttl.raw +0 -0
- data/features/open_flow13/action_set_nw_ttl.raw +0 -0
- data/features/open_flow13/action_set_queue.raw +0 -0
- data/features/open_flow13/apply_actions.raw +0 -0
- data/features/open_flow13/bad_request.raw +0 -0
- data/features/open_flow13/echo_reply_body.raw +0 -0
- data/features/open_flow13/echo_reply_no_body.raw +0 -0
- data/features/open_flow13/echo_request_body.raw +0 -0
- data/features/open_flow13/echo_request_no_body.raw +0 -0
- data/features/open_flow13/features_reply.raw +0 -0
- data/features/open_flow13/features_request.raw +0 -0
- data/features/open_flow13/flow_add_apply_no_match.raw +0 -0
- data/features/open_flow13/flow_mod_add_apply_no_match.raw +0 -0
- data/features/open_flow13/flow_mod_no_match_or_instructions.raw +0 -0
- data/features/open_flow13/hello_failed.raw +0 -0
- data/features/open_flow13/hello_no_version_bitmap.raw +0 -0
- data/features/open_flow13/hello_version_bitmap.raw +0 -0
- data/features/open_flow13/instruction_clear_actions.raw +0 -0
- data/features/open_flow13/instruction_goto_table.raw +0 -0
- data/features/open_flow13/instruction_meter.raw +0 -0
- data/features/open_flow13/instruction_write_actions.raw +0 -0
- data/features/open_flow13/instruction_write_metadata.raw +0 -0
- data/features/open_flow13/oxm_arp_op_field.raw +0 -0
- data/features/open_flow13/oxm_arp_sha_field.raw +0 -0
- data/features/open_flow13/oxm_arp_spa_field.raw +0 -0
- data/features/open_flow13/oxm_arp_tha_field.raw +0 -0
- data/features/open_flow13/oxm_arp_tpa_field.raw +0 -0
- data/features/open_flow13/oxm_ether_destination_field.raw +0 -0
- data/features/open_flow13/oxm_ether_source_field.raw +0 -0
- data/features/open_flow13/oxm_ether_type_field.raw +0 -0
- data/features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw +0 -0
- data/features/open_flow13/oxm_icmpv4_code_field.raw +0 -0
- data/features/open_flow13/oxm_icmpv4_type_field.raw +0 -0
- data/features/open_flow13/oxm_in_phy_port_field.raw +0 -0
- data/features/open_flow13/oxm_in_port_field.raw +0 -0
- data/features/open_flow13/oxm_invalid_field.raw +0 -0
- data/features/open_flow13/oxm_ip_dscp_field.raw +0 -0
- data/features/open_flow13/oxm_ip_ecn_field.raw +0 -0
- data/features/open_flow13/oxm_ipv4_destination_field.raw +0 -0
- data/features/open_flow13/oxm_ipv4_source_field.raw +0 -0
- data/features/open_flow13/oxm_ipv6_destination_field.raw +0 -0
- data/features/open_flow13/oxm_ipv6_source_field.raw +0 -0
- data/features/open_flow13/oxm_masked_arp_sha_field.raw +0 -0
- data/features/open_flow13/oxm_masked_arp_spa_field.raw +0 -0
- data/features/open_flow13/oxm_masked_arp_tha_field.raw +0 -0
- data/features/open_flow13/oxm_masked_arp_tpa_field.raw +0 -0
- data/features/open_flow13/oxm_masked_ether_destination_field.raw +0 -0
- data/features/open_flow13/oxm_masked_ether_source_field.raw +0 -0
- data/features/open_flow13/oxm_masked_ipv4_destination_field.raw +0 -0
- data/features/open_flow13/oxm_masked_ipv4_source_field.raw +0 -0
- data/features/open_flow13/oxm_masked_ipv6_destination_field.raw +0 -0
- data/features/open_flow13/oxm_masked_ipv6_source_field.raw +0 -0
- data/features/open_flow13/oxm_masked_tunnel_id_field.raw +0 -0
- data/features/open_flow13/oxm_metadata_field.raw +0 -0
- data/features/open_flow13/oxm_metadata_masked_field.raw +0 -0
- data/features/open_flow13/oxm_no_fields.raw +0 -0
- data/features/open_flow13/oxm_sctp_destination_field.raw +0 -0
- data/features/open_flow13/oxm_sctp_source_field.raw +0 -0
- data/features/open_flow13/oxm_tcp_destination_field.raw +0 -0
- data/features/open_flow13/oxm_tcp_field.raw +0 -0
- data/features/open_flow13/oxm_tcp_source_field.raw +0 -0
- data/features/open_flow13/oxm_tunnel_id_field.raw +0 -0
- data/features/open_flow13/oxm_udp_destination_field.raw +0 -0
- data/features/open_flow13/oxm_udp_field.raw +0 -0
- data/features/open_flow13/oxm_udp_source_field.raw +0 -0
- data/features/open_flow13/oxm_vlan_pcp_field.raw +0 -0
- data/features/open_flow13/oxm_vlan_vid_field.raw +0 -0
- data/features/open_flow13/packet_in.raw +0 -0
- data/features/open_flow13/packet_out.raw +0 -0
- data/features/open_flow13/send_out_port.raw +0 -0
- data/features/open_flow13/table_stats_reply.raw +0 -0
- data/features/open_flow13/table_stats_request.raw +0 -0
- data/features/step_definitions/LICENSE +0 -675
- data/features/udp_no_payload.raw +0 -0
- data/features/udp_with_payload.raw +0 -0
- data/lib/pio/icmp/options.rb +0 -21
- data/lib/pio/open_flow/error.rb +0 -19
- data/lib/pio/open_flow/open_flow_header.rb +0 -31
- data/lib/pio/open_flow13/buffer_id.rb +0 -17
- data/spec/pio/arp/reply/options_spec.rb +0 -143
- data/spec/pio/arp/request/options_spec.rb +0 -113
data/features/lldp.feature
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
Feature:
|
|
1
|
+
Feature: Lldp
|
|
2
2
|
Scenario: create
|
|
3
|
-
When I
|
|
3
|
+
When I create an OpenFlow message with:
|
|
4
4
|
"""
|
|
5
5
|
Pio::Lldp.new(dpid: 0x123, port_number: 12, source_mac: '11:22:33:44:55:66')
|
|
6
6
|
"""
|
|
7
|
-
Then
|
|
8
|
-
And the message has the following fields and values:
|
|
7
|
+
Then the message has the following fields and values:
|
|
9
8
|
| field | value |
|
|
10
9
|
| class | Pio::Lldp |
|
|
11
10
|
| destination_mac | 01:80:c2:00:00:0e |
|
|
@@ -23,8 +22,7 @@ Feature: Pio::Lldp
|
|
|
23
22
|
| organizationally_specific | |
|
|
24
23
|
|
|
25
24
|
Scenario: parse lldp.minimal.pcap
|
|
26
|
-
When I
|
|
27
|
-
Then it should finish successfully
|
|
25
|
+
When I parse a file named "lldp.minimal.pcap" with "Pio::Lldp" class
|
|
28
26
|
Then the message #1 have the following fields and values:
|
|
29
27
|
| field | value |
|
|
30
28
|
| class | Pio::Lldp |
|
|
@@ -43,5 +41,4 @@ Feature: Pio::Lldp
|
|
|
43
41
|
| organizationally_specific | |
|
|
44
42
|
|
|
45
43
|
Scenario: parse lldp.detailed.pcap
|
|
46
|
-
|
|
47
|
-
Then it should finish successfully
|
|
44
|
+
Then I parse a file named "lldp.detailed.pcap" with "Pio::Lldp" class
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Feature: OpenFlow::Header
|
|
2
|
+
|
|
3
|
+
Scenario: OpenFlow::Header#to_hex
|
|
4
|
+
When I create an OpenFlow message with:
|
|
5
|
+
"""
|
|
6
|
+
Pio::OpenFlow::Header.new(version: :OpenFlow10,
|
|
7
|
+
type: 10,
|
|
8
|
+
message_length: 18,
|
|
9
|
+
transaction_id: 0xff)
|
|
10
|
+
"""
|
|
11
|
+
Then the message has the following fields and values:
|
|
12
|
+
| field | value |
|
|
13
|
+
| to_bytes | 0x01, 0x0a, 0x00, 0x12, 0x00, 0x00, 0x00, 0xff |
|
|
@@ -1,29 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
@open_flow13
|
|
2
|
+
Feature: NiciraResubmit
|
|
2
3
|
|
|
3
4
|
Scenario: new(1)
|
|
4
|
-
When I
|
|
5
|
+
When I create an OpenFlow action with:
|
|
5
6
|
"""
|
|
6
7
|
Pio::NiciraResubmit.new(1)
|
|
7
8
|
"""
|
|
8
|
-
Then
|
|
9
|
-
And the action has the following fields and values:
|
|
9
|
+
Then the action has the following fields and values:
|
|
10
10
|
| field | value |
|
|
11
|
-
| action_type.to_hex | 0xffff |
|
|
12
|
-
| action_length | 16 |
|
|
13
|
-
| vendor.to_hex | 0x2320 |
|
|
14
|
-
| subtype | 1 |
|
|
15
11
|
| in_port | 1 |
|
|
16
|
-
|
|
17
|
-
Scenario: new(:in_port)
|
|
18
|
-
When I try to create an OpenFlow action with:
|
|
19
|
-
"""
|
|
20
|
-
Pio::NiciraResubmit.new(:in_port)
|
|
21
|
-
"""
|
|
22
|
-
Then it should finish successfully
|
|
23
|
-
And the action has the following fields and values:
|
|
24
|
-
| field | value |
|
|
25
|
-
| action_type.to_hex | 0xffff |
|
|
26
|
-
| action_length | 16 |
|
|
27
|
-
| vendor.to_hex | 0x2320 |
|
|
28
|
-
| subtype | 1 |
|
|
29
|
-
| in_port | :in_port |
|
|
@@ -1,31 +1,21 @@
|
|
|
1
|
-
Feature:
|
|
1
|
+
Feature: NiciraResubmitTable
|
|
2
2
|
|
|
3
3
|
Scenario: new(in_port: 1, table: 1)
|
|
4
|
-
When I
|
|
4
|
+
When I create an OpenFlow action with:
|
|
5
5
|
"""
|
|
6
6
|
Pio::NiciraResubmitTable.new(in_port: 1, table: 1)
|
|
7
7
|
"""
|
|
8
|
-
Then
|
|
9
|
-
And the action has the following fields and values:
|
|
8
|
+
Then the action has the following fields and values:
|
|
10
9
|
| field | value |
|
|
11
|
-
| action_type.to_hex | 0xffff |
|
|
12
|
-
| action_length | 16 |
|
|
13
|
-
| vendor.to_hex | 0x2320 |
|
|
14
|
-
| subtype | 14 |
|
|
15
10
|
| in_port | 1 |
|
|
16
11
|
| table | 1 |
|
|
17
12
|
|
|
18
|
-
Scenario: new(:
|
|
19
|
-
When I
|
|
13
|
+
Scenario: new(in_port: 1)
|
|
14
|
+
When I create an OpenFlow action with:
|
|
20
15
|
"""
|
|
21
16
|
Pio::NiciraResubmitTable.new(in_port: 1)
|
|
22
17
|
"""
|
|
23
|
-
Then
|
|
24
|
-
And the action has the following fields and values:
|
|
18
|
+
Then the action has the following fields and values:
|
|
25
19
|
| field | value |
|
|
26
|
-
| action_type.to_hex | 0xffff |
|
|
27
|
-
| action_length | 16 |
|
|
28
|
-
| vendor.to_hex | 0x2320 |
|
|
29
|
-
| subtype | 14 |
|
|
30
20
|
| in_port | 1 |
|
|
31
21
|
| table.to_hex | 0xff |
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: AggregateStats::Reply
|
|
3
|
+
|
|
3
4
|
Scenario: read
|
|
4
|
-
When I
|
|
5
|
-
Then
|
|
6
|
-
And the message has the following fields and values:
|
|
5
|
+
When I parse a file named "open_flow10/aggregate_stats_reply.raw" with "AggregateStats::Reply" class
|
|
6
|
+
Then the message has the following fields and values:
|
|
7
7
|
| field | value |
|
|
8
|
-
|
|
|
9
|
-
| message_type | 17 |
|
|
10
|
-
| message_length | 36 |
|
|
8
|
+
| version | 1 |
|
|
11
9
|
| transaction_id | 15 |
|
|
12
10
|
| xid | 15 |
|
|
13
11
|
| stats_type | :aggregate |
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: AggregateStats::Request
|
|
3
|
+
|
|
4
|
+
Aggregate information about multiple flows is requested with the
|
|
5
|
+
Aggregate Stats Request message
|
|
6
|
+
|
|
3
7
|
Scenario: new
|
|
4
|
-
When I
|
|
8
|
+
When I create an OpenFlow message with:
|
|
5
9
|
"""
|
|
6
|
-
Pio::AggregateStats::Request.new(match: Match.new(in_port: 1))
|
|
10
|
+
Pio::AggregateStats::Request.new(match: Pio::Match.new(in_port: 1))
|
|
7
11
|
"""
|
|
8
|
-
Then
|
|
9
|
-
And the message has the following fields and values:
|
|
12
|
+
Then the message has the following fields and values:
|
|
10
13
|
| field | value |
|
|
11
|
-
|
|
|
12
|
-
| message_type | 16 |
|
|
13
|
-
| message_length | 56 |
|
|
14
|
+
| version | 1 |
|
|
14
15
|
| transaction_id | 0 |
|
|
15
16
|
| xid | 0 |
|
|
16
17
|
| stats_type | :aggregate |
|
|
@@ -32,13 +33,10 @@ Feature: Pio::AggregateStats::Request
|
|
|
32
33
|
|
|
33
34
|
|
|
34
35
|
Scenario: read
|
|
35
|
-
When I
|
|
36
|
-
Then
|
|
37
|
-
And the message has the following fields and values:
|
|
36
|
+
When I parse a file named "open_flow10/aggregate_stats_request.raw" with "Pio::AggregateStats::Request" class
|
|
37
|
+
Then the message has the following fields and values:
|
|
38
38
|
| field | value |
|
|
39
|
-
|
|
|
40
|
-
| message_type | 16 |
|
|
41
|
-
| message_length | 56 |
|
|
39
|
+
| version | 1 |
|
|
42
40
|
| transaction_id | 14 |
|
|
43
41
|
| xid | 14 |
|
|
44
42
|
| stats_type | :aggregate |
|
|
@@ -1,33 +1,16 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: Error::BadRequest
|
|
3
3
|
|
|
4
|
-
Request was not understood error
|
|
4
|
+
Request was not understood error
|
|
5
5
|
|
|
6
|
-
Scenario: new (
|
|
7
|
-
When I
|
|
6
|
+
Scenario: new (error_code: :bad_version, raw_data: EchoRequest 1.3)
|
|
7
|
+
When I create an OpenFlow message with:
|
|
8
8
|
"""
|
|
9
|
-
Pio::Error::BadRequest.new(
|
|
9
|
+
Pio::Error::BadRequest.new(error_code: :bad_version,
|
|
10
|
+
raw_data: Pio::OpenFlow13::Echo::Request.new.to_binary)
|
|
10
11
|
"""
|
|
11
|
-
Then
|
|
12
|
-
And the message has the following fields and values:
|
|
12
|
+
Then the message has the following fields and values:
|
|
13
13
|
| field | value |
|
|
14
|
-
| ofp_version | 1 |
|
|
15
|
-
| message_type | 1 |
|
|
16
|
-
| message_length | 20 |
|
|
17
|
-
| transaction_id | 0 |
|
|
18
|
-
| xid | 0 |
|
|
19
|
-
| error_type | :bad_request |
|
|
20
|
-
| error_code | :bad_version |
|
|
21
|
-
| raw_data.length | 8 |
|
|
22
|
-
|
|
23
|
-
Scenario: read
|
|
24
|
-
When I try to parse a file named "open_flow10/bad_request.raw" with "Pio::Error::BadRequest" class
|
|
25
|
-
Then it should finish successfully
|
|
26
|
-
And the message has the following fields and values:
|
|
27
|
-
| field | value |
|
|
28
|
-
| ofp_version | 1 |
|
|
29
|
-
| message_type | 1 |
|
|
30
|
-
| message_length | 20 |
|
|
31
14
|
| transaction_id | 0 |
|
|
32
15
|
| xid | 0 |
|
|
33
16
|
| error_type | :bad_request |
|
|
@@ -1,43 +1,32 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: Barrier::Reply
|
|
3
|
+
|
|
4
|
+
When the switch received a Barrier Request message, the switch must
|
|
5
|
+
finish processing all previously-received messages before executing
|
|
6
|
+
any messages beyond the Barrier Request. When such processing is
|
|
7
|
+
complete, the switch must send an Barrier Reply message with the xid
|
|
8
|
+
of the original request.
|
|
9
|
+
|
|
3
10
|
Scenario: new
|
|
4
|
-
When I
|
|
11
|
+
When I create an OpenFlow message with:
|
|
5
12
|
"""
|
|
6
13
|
Pio::Barrier::Reply.new
|
|
7
14
|
"""
|
|
8
|
-
Then
|
|
9
|
-
And the message has the following fields and values:
|
|
15
|
+
Then the message has the following fields and values:
|
|
10
16
|
| field | value |
|
|
11
|
-
|
|
|
12
|
-
| message_type | 19 |
|
|
13
|
-
| message_length | 8 |
|
|
17
|
+
| version | 1 |
|
|
14
18
|
| transaction_id | 0 |
|
|
15
19
|
| xid | 0 |
|
|
16
20
|
| body | |
|
|
17
21
|
|
|
18
22
|
Scenario: new(transaction_id: 123)
|
|
19
|
-
When I
|
|
23
|
+
When I create an OpenFlow message with:
|
|
20
24
|
"""
|
|
21
25
|
Pio::Barrier::Reply.new(transaction_id: 123)
|
|
22
26
|
"""
|
|
23
|
-
Then
|
|
24
|
-
And the message has the following fields and values:
|
|
27
|
+
Then the message has the following fields and values:
|
|
25
28
|
| field | value |
|
|
26
|
-
|
|
|
27
|
-
| message_type | 19 |
|
|
28
|
-
| message_length | 8 |
|
|
29
|
+
| version | 1 |
|
|
29
30
|
| transaction_id | 123 |
|
|
30
31
|
| xid | 123 |
|
|
31
32
|
| body | |
|
|
32
|
-
|
|
33
|
-
Scenario: read
|
|
34
|
-
When I try to parse a file named "open_flow10/barrier_reply.raw" with "Barrier::Reply" class
|
|
35
|
-
Then it should finish successfully
|
|
36
|
-
And the message has the following fields and values:
|
|
37
|
-
| field | value |
|
|
38
|
-
| ofp_version | 1 |
|
|
39
|
-
| message_type | 19 |
|
|
40
|
-
| message_length | 8 |
|
|
41
|
-
| transaction_id | 0 |
|
|
42
|
-
| xid | 0 |
|
|
43
|
-
| body | |
|
|
@@ -1,43 +1,30 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: Barrier::Request
|
|
3
|
+
|
|
4
|
+
When the controller wants to ensure message dependencies have been
|
|
5
|
+
met or wants to receive notifications for completed operations, it
|
|
6
|
+
may use an Barrier Request message. This message has no body.
|
|
7
|
+
|
|
3
8
|
Scenario: new
|
|
4
|
-
When I
|
|
9
|
+
When I create an OpenFlow message with:
|
|
5
10
|
"""
|
|
6
11
|
Pio::Barrier::Request.new
|
|
7
12
|
"""
|
|
8
|
-
Then
|
|
9
|
-
And the message has the following fields and values:
|
|
13
|
+
Then the message has the following fields and values:
|
|
10
14
|
| field | value |
|
|
11
|
-
|
|
|
12
|
-
| message_type | 18 |
|
|
13
|
-
| message_length | 8 |
|
|
15
|
+
| version | 1 |
|
|
14
16
|
| transaction_id | 0 |
|
|
15
17
|
| xid | 0 |
|
|
16
18
|
| body | |
|
|
17
19
|
|
|
18
20
|
Scenario: new(transaction_id: 123)
|
|
19
|
-
When I
|
|
21
|
+
When I create an OpenFlow message with:
|
|
20
22
|
"""
|
|
21
23
|
Pio::Barrier::Request.new(transaction_id: 123)
|
|
22
24
|
"""
|
|
23
|
-
Then
|
|
24
|
-
And the message has the following fields and values:
|
|
25
|
+
Then the message has the following fields and values:
|
|
25
26
|
| field | value |
|
|
26
|
-
|
|
|
27
|
-
| message_type | 18 |
|
|
28
|
-
| message_length | 8 |
|
|
27
|
+
| version | 1 |
|
|
29
28
|
| transaction_id | 123 |
|
|
30
29
|
| xid | 123 |
|
|
31
30
|
| body | |
|
|
32
|
-
|
|
33
|
-
Scenario: read
|
|
34
|
-
When I try to parse a file named "open_flow10/barrier_request.raw" with "Barrier::Request" class
|
|
35
|
-
Then it should finish successfully
|
|
36
|
-
And the message has the following fields and values:
|
|
37
|
-
| field | value |
|
|
38
|
-
| ofp_version | 1 |
|
|
39
|
-
| message_type | 18 |
|
|
40
|
-
| message_length | 8 |
|
|
41
|
-
| transaction_id | 0 |
|
|
42
|
-
| xid | 0 |
|
|
43
|
-
| body | |
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: DescriptionStats::Reply
|
|
3
|
+
|
|
4
|
+
Information about the switch manufacturer, hardware revision,
|
|
5
|
+
software revision, serial number, and a description field is
|
|
6
|
+
available from a Description Stats Reply.
|
|
7
|
+
|
|
3
8
|
Scenario: read
|
|
4
|
-
When I
|
|
5
|
-
Then
|
|
6
|
-
And the message has the following fields and values:
|
|
9
|
+
When I parse a file named "open_flow10/description_stats_reply.raw" with "DescriptionStats::Reply" class
|
|
10
|
+
Then the message has the following fields and values:
|
|
7
11
|
| field | value |
|
|
8
|
-
|
|
|
9
|
-
| message_type | 17 |
|
|
10
|
-
| message_length | 1068 |
|
|
12
|
+
| version | 1 |
|
|
11
13
|
| transaction_id | 12 |
|
|
12
14
|
| xid | 12 |
|
|
13
15
|
| stats_type | :description |
|
|
@@ -1,43 +1,30 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: DescriptionStats::Request
|
|
3
|
+
|
|
4
|
+
Information about the switch manufacturer, hardware revision,
|
|
5
|
+
software revision, serial number, and a description field is
|
|
6
|
+
available by sending a Description Stats Request.
|
|
7
|
+
|
|
3
8
|
Scenario: new
|
|
4
|
-
When I
|
|
9
|
+
When I create an OpenFlow message with:
|
|
5
10
|
"""
|
|
6
11
|
Pio::DescriptionStats::Request.new
|
|
7
12
|
"""
|
|
8
|
-
Then
|
|
9
|
-
And the message has the following fields and values:
|
|
13
|
+
Then the message has the following fields and values:
|
|
10
14
|
| field | value |
|
|
11
|
-
|
|
|
12
|
-
| message_type | 16 |
|
|
13
|
-
| message_length | 12 |
|
|
15
|
+
| version | 1 |
|
|
14
16
|
| transaction_id | 0 |
|
|
15
17
|
| xid | 0 |
|
|
16
18
|
| stats_type | :description |
|
|
17
19
|
|
|
18
20
|
Scenario: new(transaction_id: 123)
|
|
19
|
-
When I
|
|
21
|
+
When I create an OpenFlow message with:
|
|
20
22
|
"""
|
|
21
23
|
Pio::DescriptionStats::Request.new(transaction_id: 123)
|
|
22
24
|
"""
|
|
23
|
-
Then
|
|
24
|
-
And the message has the following fields and values:
|
|
25
|
+
Then the message has the following fields and values:
|
|
25
26
|
| field | value |
|
|
26
|
-
|
|
|
27
|
-
| message_type | 16 |
|
|
28
|
-
| message_length | 12 |
|
|
27
|
+
| version | 1 |
|
|
29
28
|
| transaction_id | 123 |
|
|
30
29
|
| xid | 123 |
|
|
31
30
|
| stats_type | :description |
|
|
32
|
-
|
|
33
|
-
Scenario: read
|
|
34
|
-
When I try to parse a file named "open_flow10/description_stats_request.raw" with "DescriptionStats::Request" class
|
|
35
|
-
Then it should finish successfully
|
|
36
|
-
And the message has the following fields and values:
|
|
37
|
-
| field | value |
|
|
38
|
-
| ofp_version | 1 |
|
|
39
|
-
| message_type | 16 |
|
|
40
|
-
| message_length | 12 |
|
|
41
|
-
| transaction_id | 12 |
|
|
42
|
-
| xid | 12 |
|
|
43
|
-
| stats_type | :description |
|
|
@@ -1,62 +1,41 @@
|
|
|
1
1
|
@open_flow10
|
|
2
|
-
Feature:
|
|
2
|
+
Feature: Echo::Reply
|
|
3
|
+
|
|
4
|
+
An Echo Reply message consists of an OpenFlow header plus the
|
|
5
|
+
unmodified data field of an echo request message.
|
|
6
|
+
|
|
3
7
|
Scenario: new
|
|
4
|
-
When I
|
|
8
|
+
When I create an OpenFlow message with:
|
|
5
9
|
"""
|
|
6
10
|
Pio::Echo::Reply.new
|
|
7
11
|
"""
|
|
8
|
-
Then
|
|
9
|
-
And the message has the following fields and values:
|
|
12
|
+
Then the message has the following fields and values:
|
|
10
13
|
| field | value |
|
|
11
|
-
| ofp_version | 1 |
|
|
12
|
-
| message_type | 3 |
|
|
13
|
-
| message_length | 8 |
|
|
14
14
|
| transaction_id | 0 |
|
|
15
15
|
| xid | 0 |
|
|
16
16
|
| body | |
|
|
17
17
|
| user_data | |
|
|
18
18
|
|
|
19
19
|
Scenario: new(transaction_id: 123)
|
|
20
|
-
When I
|
|
20
|
+
When I create an OpenFlow message with:
|
|
21
21
|
"""
|
|
22
22
|
Pio::Echo::Reply.new(transaction_id: 123)
|
|
23
23
|
"""
|
|
24
|
-
Then
|
|
25
|
-
And the message has the following fields and values:
|
|
24
|
+
Then the message has the following fields and values:
|
|
26
25
|
| field | value |
|
|
27
|
-
| ofp_version | 1 |
|
|
28
|
-
| message_type | 3 |
|
|
29
|
-
| message_length | 8 |
|
|
30
26
|
| transaction_id | 123 |
|
|
31
27
|
| xid | 123 |
|
|
32
28
|
| body | |
|
|
33
29
|
| user_data | |
|
|
34
30
|
|
|
35
31
|
Scenario: new(body: 'echo reply body')
|
|
36
|
-
When I
|
|
32
|
+
When I create an OpenFlow message with:
|
|
37
33
|
"""
|
|
38
34
|
Pio::Echo::Reply.new(body: 'echo reply body')
|
|
39
35
|
"""
|
|
40
|
-
Then
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
| message_type | 3 |
|
|
45
|
-
| message_length | 23 |
|
|
46
|
-
| transaction_id | 0 |
|
|
47
|
-
| xid | 0 |
|
|
36
|
+
Then the message has the following fields and values:
|
|
37
|
+
| field | value |
|
|
38
|
+
| transaction_id | 0 |
|
|
39
|
+
| xid | 0 |
|
|
48
40
|
| body | echo reply body |
|
|
49
41
|
| user_data | echo reply body |
|
|
50
|
-
|
|
51
|
-
Scenario: read (no message body)
|
|
52
|
-
When I try to parse a file named "open_flow10/echo_reply.raw" with "Pio::Echo::Reply" class
|
|
53
|
-
Then it should finish successfully
|
|
54
|
-
And the message has the following fields and values:
|
|
55
|
-
| field | value |
|
|
56
|
-
| ofp_version | 1 |
|
|
57
|
-
| message_type | 3 |
|
|
58
|
-
| message_length | 8 |
|
|
59
|
-
| transaction_id | 6 |
|
|
60
|
-
| xid | 6 |
|
|
61
|
-
| body | |
|
|
62
|
-
| user_data | |
|