pio 0.30.0 → 0.30.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +6 -53
- data/Rakefile +8 -6
- 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/Gemfile +2 -0
- data/features/step_definitions/Guardfile +2 -0
- data/features/step_definitions/Rakefile +2 -0
- data/features/step_definitions/dump_flows_steps.rb +2 -0
- data/features/step_definitions/open_flow_steps.rb +13 -16
- data/features/step_definitions/packet_data_steps.rb +19 -33
- data/features/step_definitions/rest_api_steps.rb +2 -0
- data/features/step_definitions/ruby_steps.rb +9 -0
- data/features/step_definitions/show_stats_steps.rb +5 -3
- data/features/step_definitions/trema_steps.rb +2 -0
- data/features/step_definitions/virtual_link_steps.rb +2 -0
- data/features/support/env.rb +2 -2
- data/features/support/hooks.rb +4 -2
- data/features/udp.feature +26 -27
- data/lib/pio/arp/format.rb +5 -7
- data/lib/pio/arp/message.rb +10 -4
- data/lib/pio/arp/reply.rb +11 -32
- data/lib/pio/arp/request.rb +11 -33
- data/lib/pio/arp.rb +11 -6
- data/lib/pio/class_inspector.rb +20 -0
- data/lib/pio/dhcp/ack.rb +2 -0
- data/lib/pio/dhcp/boot_reply.rb +2 -0
- data/lib/pio/dhcp/boot_reply_options.rb +2 -0
- data/lib/pio/dhcp/boot_request.rb +2 -0
- data/lib/pio/dhcp/boot_request_options.rb +2 -0
- data/lib/pio/dhcp/client_id.rb +2 -0
- data/lib/pio/dhcp/common_options.rb +2 -0
- data/lib/pio/dhcp/dhcp_field.rb +2 -0
- data/lib/pio/dhcp/dhcp_tlv_options.rb +30 -20
- data/lib/pio/dhcp/discover.rb +2 -0
- data/lib/pio/dhcp/field_util.rb +3 -1
- data/lib/pio/dhcp/frame.rb +6 -4
- data/lib/pio/dhcp/message.rb +2 -0
- data/lib/pio/dhcp/offer.rb +2 -0
- data/lib/pio/dhcp/optional_tlv.rb +4 -2
- data/lib/pio/dhcp/parameter_list.rb +2 -0
- data/lib/pio/dhcp/request.rb +2 -0
- data/lib/pio/dhcp.rb +4 -2
- data/lib/pio/ethernet_frame.rb +22 -0
- data/lib/pio/ethernet_header.rb +37 -13
- data/lib/pio/icmp/format.rb +21 -22
- data/lib/pio/icmp/message.rb +20 -4
- data/lib/pio/icmp/reply.rb +10 -34
- data/lib/pio/icmp/request.rb +10 -43
- data/lib/pio/icmp.rb +10 -5
- data/lib/pio/instance_inspector.rb +16 -0
- data/lib/pio/ipv4_address.rb +13 -11
- data/lib/pio/ipv4_header.rb +26 -2
- data/lib/pio/lldp/chassis_id_tlv.rb +2 -0
- data/lib/pio/lldp/end_of_lldpdu_value.rb +2 -0
- data/lib/pio/lldp/frame.rb +4 -2
- data/lib/pio/lldp/management_address_value.rb +2 -0
- data/lib/pio/lldp/optional_tlv.rb +4 -2
- data/lib/pio/lldp/options.rb +4 -2
- data/lib/pio/lldp/organizationally_specific_value.rb +2 -0
- data/lib/pio/lldp/port_description_value.rb +2 -0
- data/lib/pio/lldp/port_id_tlv.rb +2 -0
- data/lib/pio/lldp/system_capabilities_value.rb +2 -0
- data/lib/pio/lldp/system_description_value.rb +2 -0
- data/lib/pio/lldp/system_name_value.rb +2 -0
- data/lib/pio/lldp/ttl_tlv.rb +2 -0
- data/lib/pio/lldp.rb +2 -0
- data/lib/pio/mac.rb +9 -3
- data/lib/pio/message.rb +52 -0
- data/lib/pio/message_type_selector.rb +2 -0
- data/lib/pio/monkey_patch/bindata_record.rb +8 -0
- data/lib/pio/monkey_patch/bindata_string.rb +12 -0
- data/lib/pio/monkey_patch/integer/base_conversions.rb +3 -1
- data/lib/pio/monkey_patch/integer/ranges.rb +2 -0
- data/lib/pio/monkey_patch/integer.rb +2 -0
- data/lib/pio/monkey_patch/uint/base_conversions.rb +16 -0
- data/lib/pio/monkey_patch/uint.rb +11 -0
- data/lib/pio/open_flow/action.rb +10 -4
- data/lib/pio/open_flow/buffer_id.rb +21 -0
- data/lib/pio/open_flow/datapath_id.rb +5 -3
- data/lib/pio/open_flow/error_message.rb +34 -0
- data/lib/pio/open_flow/flags.rb +17 -6
- data/lib/pio/open_flow/flow_match.rb +12 -0
- data/lib/pio/open_flow/header.rb +28 -0
- data/lib/pio/open_flow/hello_failed_code.rb +3 -1
- data/lib/pio/open_flow/instruction.rb +12 -0
- data/lib/pio/open_flow/message.rb +51 -14
- data/lib/pio/open_flow/nicira_action.rb +2 -0
- data/lib/pio/open_flow/nicira_resubmit.rb +15 -11
- data/lib/pio/open_flow/nicira_resubmit_table.rb +19 -10
- data/lib/pio/open_flow/parser.rb +21 -0
- data/lib/pio/open_flow/port.rb +4 -2
- data/lib/pio/open_flow/transaction_id.rb +4 -2
- data/lib/pio/open_flow/version.rb +24 -0
- data/lib/pio/open_flow.rb +40 -52
- data/lib/pio/open_flow10/actions.rb +18 -16
- data/lib/pio/open_flow10/aggregate_stats/reply.rb +4 -1
- data/lib/pio/open_flow10/aggregate_stats/request.rb +3 -3
- data/lib/pio/open_flow10/barrier/reply.rb +3 -1
- data/lib/pio/open_flow10/barrier/request.rb +3 -1
- data/lib/pio/open_flow10/description_stats/reply.rb +3 -1
- data/lib/pio/open_flow10/description_stats/request.rb +3 -3
- data/lib/pio/open_flow10/echo/reply.rb +5 -3
- data/lib/pio/open_flow10/echo/request.rb +5 -3
- data/lib/pio/open_flow10/enqueue.rb +5 -3
- data/lib/pio/open_flow10/error/bad_request/bad_request_code.rb +37 -0
- data/lib/pio/open_flow10/error/bad_request.rb +7 -29
- data/lib/pio/open_flow10/error/error_type10.rb +3 -1
- data/lib/pio/open_flow10/error/hello_failed.rb +8 -4
- data/lib/pio/open_flow10/error.rb +5 -13
- data/lib/pio/open_flow10/exact_match.rb +14 -10
- data/lib/pio/open_flow10/features/reply.rb +35 -48
- data/lib/pio/open_flow10/features/request.rb +3 -4
- data/lib/pio/open_flow10/features.rb +2 -0
- data/lib/pio/open_flow10/flow_mod/command.rb +30 -0
- data/lib/pio/open_flow10/flow_mod.rb +10 -33
- data/lib/pio/open_flow10/flow_removed/reason.rb +24 -0
- data/lib/pio/open_flow10/flow_removed.rb +4 -17
- data/lib/pio/open_flow10/flow_stats/reply.rb +5 -4
- data/lib/pio/open_flow10/flow_stats/request.rb +3 -3
- data/lib/pio/open_flow10/hello.rb +3 -4
- data/lib/pio/open_flow10/match.rb +16 -13
- data/lib/pio/open_flow10/match10.rb +2 -0
- data/lib/pio/open_flow10/packet_in/reason.rb +27 -0
- data/lib/pio/open_flow10/packet_in.rb +34 -28
- data/lib/pio/open_flow10/packet_out.rb +7 -6
- data/lib/pio/open_flow10/phy_port16.rb +41 -61
- data/lib/pio/open_flow10/port16.rb +2 -0
- data/lib/pio/open_flow10/port_stats/request.rb +3 -3
- data/lib/pio/open_flow10/port_status/reason.rb +23 -0
- data/lib/pio/open_flow10/port_status.rb +25 -30
- data/lib/pio/open_flow10/queue_stats/request.rb +3 -3
- data/lib/pio/open_flow10/send_out_port.rb +4 -2
- data/lib/pio/open_flow10/set_destination_ip_address.rb +2 -0
- data/lib/pio/open_flow10/set_destination_mac_address.rb +2 -0
- data/lib/pio/open_flow10/set_source_ip_address.rb +2 -0
- data/lib/pio/open_flow10/set_source_mac_address.rb +2 -0
- data/lib/pio/open_flow10/set_tos.rb +4 -2
- data/lib/pio/open_flow10/set_transport_port.rb +6 -2
- data/lib/pio/open_flow10/set_vlan_priority.rb +3 -1
- data/lib/pio/open_flow10/set_vlan_vid.rb +3 -1
- data/lib/pio/open_flow10/stats_reply.rb +9 -10
- data/lib/pio/open_flow10/stats_request.rb +18 -15
- data/lib/pio/open_flow10/stats_type.rb +3 -1
- data/lib/pio/open_flow10/strip_vlan_header.rb +2 -0
- data/lib/pio/open_flow10/table_stats/request.rb +3 -3
- data/lib/pio/open_flow10/vendor_action.rb +24 -20
- data/lib/pio/open_flow10.rb +2 -0
- data/lib/pio/open_flow13/actions.rb +36 -32
- data/lib/pio/open_flow13/apply.rb +27 -22
- data/lib/pio/open_flow13/copy_ttl_inwards.rb +17 -0
- data/lib/pio/open_flow13/copy_ttl_outwards.rb +17 -0
- data/lib/pio/open_flow13/decrement_ip_ttl.rb +17 -0
- data/lib/pio/open_flow13/echo/reply.rb +5 -3
- data/lib/pio/open_flow13/echo/request.rb +5 -3
- data/lib/pio/open_flow13/error/bad_request.rb +6 -3
- data/lib/pio/open_flow13/error/error_type13.rb +3 -1
- data/lib/pio/open_flow13/error/hello_failed.rb +5 -2
- data/lib/pio/open_flow13/error.rb +9 -18
- data/lib/pio/open_flow13/features/reply.rb +15 -20
- data/lib/pio/open_flow13/features/request.rb +3 -1
- data/lib/pio/open_flow13/flow_mod.rb +16 -19
- data/lib/pio/open_flow13/goto_table.rb +28 -24
- data/lib/pio/open_flow13/hello.rb +5 -4
- data/lib/pio/open_flow13/match.rb +187 -21
- data/lib/pio/open_flow13/meter.rb +25 -20
- data/lib/pio/open_flow13/nicira_conjunction.rb +28 -0
- data/lib/pio/open_flow13/nicira_reg_load.rb +46 -24
- data/lib/pio/open_flow13/nicira_reg_move.rb +79 -35
- data/lib/pio/open_flow13/nicira_send_out_port.rb +39 -21
- data/lib/pio/open_flow13/nicira_stack_pop.rb +51 -0
- data/lib/pio/open_flow13/nicira_stack_push.rb +51 -0
- data/lib/pio/open_flow13/packet_in.rb +13 -8
- data/lib/pio/open_flow13/packet_out.rb +11 -8
- data/lib/pio/open_flow13/port32.rb +2 -0
- data/lib/pio/open_flow13/send_out_port.rb +2 -0
- data/lib/pio/open_flow13/set_arp_operation.rb +2 -0
- data/lib/pio/open_flow13/set_arp_sender_hardware_address.rb +2 -0
- data/lib/pio/open_flow13/set_arp_sender_protocol_address.rb +2 -0
- data/lib/pio/open_flow13/set_destination_mac_address.rb +2 -0
- data/lib/pio/open_flow13/set_ip_ttl.rb +18 -0
- data/lib/pio/open_flow13/set_metadata.rb +2 -0
- data/lib/pio/open_flow13/set_source_mac_address.rb +2 -0
- data/lib/pio/open_flow13/stats_request.rb +10 -10
- data/lib/pio/open_flow13/write_metadata.rb +42 -38
- data/lib/pio/open_flow13.rb +9 -0
- data/lib/pio/options.rb +10 -3
- data/lib/pio/parse_error.rb +2 -0
- data/lib/pio/parser.rb +9 -16
- data/lib/pio/payload.rb +2 -0
- data/lib/pio/pcap.rb +2 -0
- data/lib/pio/ruby_dumper.rb +71 -0
- data/lib/pio/type/ether_type.rb +33 -0
- data/lib/pio/type/ip_address.rb +10 -0
- data/lib/pio/type/ipv6_address.rb +2 -0
- data/lib/pio/type/mac_address.rb +12 -0
- data/lib/pio/udp.rb +5 -3
- data/lib/pio/udp_header.rb +3 -1
- data/lib/pio/version.rb +3 -1
- data/lib/pio.rb +3 -1
- data/pio.gemspec +7 -38
- data/spec/pio/arp/reply_spec.rb +2 -4
- data/spec/pio/arp/request_spec.rb +2 -4
- data/spec/pio/arp_spec.rb +2 -4
- data/spec/pio/dhcp/ack_spec.rb +2 -0
- data/spec/pio/dhcp/discover_spec.rb +2 -0
- data/spec/pio/dhcp/offer_spec.rb +2 -0
- data/spec/pio/dhcp/request_spec.rb +2 -0
- data/spec/pio/dhcp_spec.rb +2 -0
- data/spec/pio/icmp/reply_spec.rb +6 -8
- data/spec/pio/icmp/request_spec.rb +8 -10
- data/spec/pio/icmp_spec.rb +10 -12
- data/spec/pio/ipv4_address_spec.rb +2 -0
- data/spec/pio/lldp/options_spec.rb +2 -0
- data/spec/pio/mac_spec.rb +2 -0
- data/spec/pio/monkey_patch/integer_spec.rb +25 -0
- data/spec/pio/open_flow/nicira_resubmit_spec.rb +21 -0
- data/spec/pio/open_flow/nicira_resubmit_table_spec.rb +22 -0
- data/spec/pio/open_flow10/echo/reply_spec.rb +2 -0
- data/spec/pio/open_flow10/echo/request_spec.rb +2 -0
- data/spec/pio/open_flow10/enqueue_spec.rb +2 -0
- data/spec/pio/open_flow10/error/hello_failed_spec.rb +4 -2
- data/spec/pio/open_flow10/features/reply_spec.rb +2 -0
- data/spec/pio/open_flow10/features/request_spec.rb +2 -0
- data/spec/pio/open_flow10/flow_mod_spec.rb +53 -51
- data/spec/pio/open_flow10/flow_stats_reply_spec.rb +2 -0
- data/spec/pio/open_flow10/flow_stats_request_spec.rb +10 -8
- data/spec/pio/open_flow10/hello_spec.rb +2 -2
- data/spec/pio/open_flow10/match_spec.rb +106 -104
- data/spec/pio/open_flow10/packet_in_spec.rb +2 -0
- data/spec/pio/open_flow10/packet_out_spec.rb +2 -349
- data/spec/pio/open_flow10/phy_port16_spec.rb +9 -7
- data/spec/pio/open_flow10/send_out_port_spec.rb +2 -0
- data/spec/pio/open_flow10/set_destination_ip_address_spec.rb +2 -0
- data/spec/pio/open_flow10/set_destination_mac_address_spec.rb +2 -0
- data/spec/pio/open_flow10/set_source_ip_address_spec.rb +2 -0
- data/spec/pio/open_flow10/set_source_mac_address_spec.rb +2 -0
- data/spec/pio/open_flow10/set_tos_spec.rb +2 -0
- data/spec/pio/open_flow10/set_transport_destination_port_spec.rb +2 -0
- data/spec/pio/open_flow10/set_transport_source_port_spec.rb +2 -0
- data/spec/pio/open_flow10/set_vlan_priority_spec.rb +2 -0
- data/spec/pio/open_flow10/set_vlan_vid_spec.rb +2 -0
- data/spec/pio/open_flow10/strip_vlan_header_spec.rb +2 -0
- data/spec/pio/open_flow10/wildcards_spec.rb +2 -0
- data/spec/pio/open_flow13/echo_reply_spec.rb +2 -0
- data/spec/pio/open_flow13/echo_request_spec.rb +2 -0
- data/spec/pio/open_flow13/error/bad_request_spec.rb +2 -0
- data/spec/pio/open_flow13/error/hello_failed_spec.rb +4 -2
- data/spec/pio/open_flow13/features/reply_spec.rb +2 -0
- data/spec/pio/open_flow13/features/request_spec.rb +2 -0
- data/spec/pio/open_flow13/goto_table_spec.rb +4 -2
- data/spec/pio/open_flow13/hello_spec.rb +18 -16
- data/spec/pio/open_flow13/match_spec.rb +31 -29
- data/spec/pio/open_flow13/meter_spec.rb +4 -2
- data/spec/pio/open_flow13/nicira_reg_load_spec.rb +73 -0
- data/spec/pio/open_flow13/nicira_reg_move_spec.rb +42 -0
- data/spec/pio/open_flow13/nicira_send_out_port_spec.rb +31 -0
- data/spec/pio/open_flow13/packet_in_spec.rb +2 -0
- data/spec/pio/open_flow13/packet_out_spec.rb +2 -0
- data/spec/pio/open_flow13/write_metadata_spec.rb +5 -3
- data/spec/pio/open_flow_spec.rb +8 -6
- data/spec/spec_helper.rb +1 -12
- data/spec/support/shared_examples_for_openflow_messages.rb +7 -13
- metadata +83 -683
- 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
@@ -1,789 +1,780 @@
|
|
1
1
|
@open_flow13
|
2
|
-
Feature:
|
2
|
+
Feature: Match
|
3
3
|
Scenario: new
|
4
|
-
When I
|
4
|
+
When I create an OpenFlow message with:
|
5
5
|
"""
|
6
6
|
Pio::Match.new
|
7
7
|
"""
|
8
|
-
Then
|
9
|
-
And the message has the following fields and values:
|
8
|
+
Then the message has the following fields and values:
|
10
9
|
| field | value |
|
11
10
|
| match_fields | [] |
|
12
11
|
|
13
12
|
Scenario: new(in_port: 1)
|
14
|
-
When I
|
13
|
+
When I create an OpenFlow message with:
|
15
14
|
"""
|
16
15
|
Pio::Match.new(in_port: 1)
|
17
16
|
"""
|
18
|
-
Then
|
19
|
-
And the message has the following fields and values:
|
17
|
+
Then the message has the following fields and values:
|
20
18
|
| field | value |
|
21
19
|
| in_port | 1 |
|
22
20
|
|
23
21
|
Scenario: new(metadata: 1)
|
24
|
-
When I
|
22
|
+
When I create an OpenFlow message with:
|
25
23
|
"""
|
26
24
|
Pio::Match.new(metadata: 1)
|
27
25
|
"""
|
28
|
-
Then
|
29
|
-
And the message has the following fields and values:
|
26
|
+
Then the message has the following fields and values:
|
30
27
|
| field | value |
|
31
28
|
| metadata | 1 |
|
32
29
|
|
33
30
|
Scenario: new(metadata: 1, metadata_mask: 1)
|
34
|
-
When I
|
31
|
+
When I create an OpenFlow message with:
|
35
32
|
"""
|
36
33
|
Pio::Match.new(metadata: 1, metadata_mask: 1)
|
37
34
|
"""
|
38
|
-
Then
|
39
|
-
And the message has the following fields and values:
|
35
|
+
Then the message has the following fields and values:
|
40
36
|
| field | value |
|
41
37
|
| metadata | 1 |
|
42
38
|
| metadata_mask | 1 |
|
43
39
|
|
44
40
|
Scenario: new(source_mac_address: '01:02:03:04:05:06')
|
45
|
-
When I
|
41
|
+
When I create an OpenFlow message with:
|
46
42
|
"""
|
47
43
|
Pio::Match.new(source_mac_address: '01:02:03:04:05:06')
|
48
44
|
"""
|
49
|
-
Then
|
50
|
-
And the message has the following fields and values:
|
45
|
+
Then the message has the following fields and values:
|
51
46
|
| field | value |
|
52
47
|
| source_mac_address | 01:02:03:04:05:06 |
|
53
48
|
|
54
49
|
Scenario: new(destination_mac_address: '01:02:03:04:05:06')
|
55
|
-
When I
|
50
|
+
When I create an OpenFlow message with:
|
56
51
|
"""
|
57
52
|
Pio::Match.new(destination_mac_address: '01:02:03:04:05:06')
|
58
53
|
"""
|
59
|
-
Then
|
60
|
-
And the message has the following fields and values:
|
54
|
+
Then the message has the following fields and values:
|
61
55
|
| field | value |
|
62
56
|
| destination_mac_address | 01:02:03:04:05:06 |
|
63
57
|
|
64
58
|
Scenario: new(source_mac_address: '01:02:03:04:05:06', source_mac_address_mask: 'ff:ff:ff:00:00:00')
|
65
|
-
When I
|
59
|
+
When I create an OpenFlow message with:
|
66
60
|
"""
|
67
61
|
Pio::Match.new(source_mac_address: '01:02:03:04:05:06', source_mac_address_mask: 'ff:ff:ff:00:00:00')
|
68
62
|
"""
|
69
|
-
Then
|
70
|
-
And the message has the following fields and values:
|
63
|
+
Then the message has the following fields and values:
|
71
64
|
| field | value |
|
72
65
|
| source_mac_address | 01:02:03:04:05:06 |
|
73
66
|
| source_mac_address_mask | ff:ff:ff:00:00:00 |
|
74
67
|
|
75
68
|
Scenario: new(destination_mac_address: '01:02:03:04:05:06', destination_mac_address_mask: 'ff:ff:ff:00:00:00')
|
76
|
-
When I
|
69
|
+
When I create an OpenFlow message with:
|
77
70
|
"""
|
78
71
|
Pio::Match.new(destination_mac_address: '01:02:03:04:05:06', destination_mac_address_mask: 'ff:ff:ff:00:00:00')
|
79
72
|
"""
|
80
|
-
Then
|
81
|
-
And the message has the following fields and values:
|
73
|
+
Then the message has the following fields and values:
|
82
74
|
| field | value |
|
83
75
|
| destination_mac_address | 01:02:03:04:05:06 |
|
84
76
|
| destination_mac_address_mask | ff:ff:ff:00:00:00 |
|
85
77
|
|
86
78
|
Scenario: new(ether_type: 0x0800)
|
87
|
-
When I
|
79
|
+
When I create an OpenFlow message with:
|
88
80
|
"""
|
89
81
|
Pio::Match.new(ether_type: 0x0800)
|
90
82
|
"""
|
91
|
-
Then
|
92
|
-
And the message has the following fields and values:
|
83
|
+
Then the message has the following fields and values:
|
93
84
|
| field | value |
|
94
85
|
| ether_type | 2048 |
|
95
86
|
|
96
87
|
Scenario: new(vlan_vid: 10)
|
97
|
-
When I
|
88
|
+
When I create an OpenFlow message with:
|
98
89
|
"""
|
99
90
|
Pio::Match.new(vlan_vid: 10)
|
100
91
|
"""
|
101
|
-
Then
|
102
|
-
And the message has the following fields and values:
|
92
|
+
Then the message has the following fields and values:
|
103
93
|
| field | value |
|
104
94
|
| vlan_vid | 10 |
|
105
95
|
|
106
96
|
Scenario: new(vlan_vid: 10, vlan_pcp: 5)
|
107
|
-
When I
|
97
|
+
When I create an OpenFlow message with:
|
108
98
|
"""
|
109
99
|
Pio::Match.new(vlan_vid: 10, vlan_pcp: 5)
|
110
100
|
"""
|
111
|
-
Then
|
112
|
-
And the message has the following fields and values:
|
101
|
+
Then the message has the following fields and values:
|
113
102
|
| field | value |
|
114
103
|
| vlan_vid | 10 |
|
115
104
|
| vlan_pcp | 5 |
|
116
105
|
|
117
106
|
Scenario: new(eth_type: 2048, ip_dscp: 46)
|
118
|
-
When I
|
107
|
+
When I create an OpenFlow message with:
|
119
108
|
"""
|
120
109
|
Pio::Match.new(ether_type: 2048, ip_dscp: 46)
|
121
110
|
"""
|
122
|
-
Then
|
123
|
-
And the message has the following fields and values:
|
111
|
+
Then the message has the following fields and values:
|
124
112
|
| field | value |
|
125
113
|
| ether_type | 2048 |
|
126
114
|
| ip_dscp | 46 |
|
127
115
|
|
128
116
|
Scenario: new(eth_type: 2048, ip_ecn: 3)
|
129
|
-
When I
|
117
|
+
When I create an OpenFlow message with:
|
130
118
|
"""
|
131
119
|
Pio::Match.new(ether_type: 2048, ip_ecn: 46)
|
132
120
|
"""
|
133
|
-
Then
|
134
|
-
And the message has the following fields and values:
|
121
|
+
Then the message has the following fields and values:
|
135
122
|
| field | value |
|
136
123
|
| ether_type | 2048 |
|
137
124
|
| ip_ecn | 3 |
|
138
125
|
|
139
126
|
Scenario: new(ether_type: 0x0800, ipv4_source_address: '192.168.0.1')
|
140
|
-
When I
|
127
|
+
When I create an OpenFlow message with:
|
141
128
|
"""
|
142
129
|
Pio::Match.new(ether_type: 0x0800, ipv4_source_address: '192.168.0.1')
|
143
130
|
"""
|
144
|
-
Then
|
145
|
-
And the message has the following fields and values:
|
131
|
+
Then the message has the following fields and values:
|
146
132
|
| field | value |
|
147
133
|
| ether_type | 2048 |
|
148
134
|
| ipv4_source_address | 192.168.0.1 |
|
149
135
|
|
150
136
|
Scenario: new(ether_type: 0x0800, ipv4_destination_address: '192.168.0.1')
|
151
|
-
When I
|
137
|
+
When I create an OpenFlow message with:
|
152
138
|
"""
|
153
139
|
Pio::Match.new(ether_type: 0x0800, ipv4_destination_address: '192.168.0.1')
|
154
140
|
"""
|
155
|
-
Then
|
156
|
-
And the message has the following fields and values:
|
141
|
+
Then the message has the following fields and values:
|
157
142
|
| field | value |
|
158
143
|
| ether_type | 2048 |
|
159
144
|
| ipv4_destination_address | 192.168.0.1 |
|
160
145
|
|
161
146
|
Scenario: new(ether_type: 0x0800, ipv4_source_address: '192.168.0.1', ivp4_source_address_mask: '255.255.0.0')
|
162
|
-
When I
|
147
|
+
When I create an OpenFlow message with:
|
163
148
|
"""
|
164
149
|
Pio::Match.new(ether_type: 0x0800, ipv4_source_address: '192.168.0.1', ipv4_source_address_mask: '255.255.0.0')
|
165
150
|
"""
|
166
|
-
Then
|
167
|
-
And the message has the following fields and values:
|
151
|
+
Then the message has the following fields and values:
|
168
152
|
| field | value |
|
169
153
|
| ether_type | 2048 |
|
170
154
|
| ipv4_source_address | 192.168.0.1 |
|
171
155
|
| ipv4_source_address_mask | 255.255.0.0 |
|
172
156
|
|
173
157
|
Scenario: new(ether_type: 0x0800, ipv4_destination_address: '192.168.0.1', ivp4_destination_address_mask: '255.255.0.0')
|
174
|
-
When I
|
158
|
+
When I create an OpenFlow message with:
|
175
159
|
"""
|
176
160
|
Pio::Match.new(ether_type: 0x0800, ipv4_destination_address: '192.168.0.1', ipv4_destination_address_mask: '255.255.0.0')
|
177
161
|
"""
|
178
|
-
Then
|
179
|
-
And the message has the following fields and values:
|
162
|
+
Then the message has the following fields and values:
|
180
163
|
| field | value |
|
181
164
|
| ether_type | 2048 |
|
182
165
|
| ipv4_destination_address | 192.168.0.1 |
|
183
166
|
| ipv4_destination_address_mask | 255.255.0.0 |
|
184
167
|
|
185
168
|
Scenario: new(ether_type: 0x0800, ip_protocol: 6, tcp_source_port: 1111)
|
186
|
-
When I
|
169
|
+
When I create an OpenFlow message with:
|
187
170
|
"""
|
188
171
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 6, tcp_source_port: 1111)
|
189
172
|
"""
|
190
|
-
Then
|
191
|
-
And the message has the following fields and values:
|
173
|
+
Then the message has the following fields and values:
|
192
174
|
| field | value |
|
193
175
|
| ether_type | 2048 |
|
194
176
|
| ip_protocol | 6 |
|
195
177
|
| tcp_source_port | 1111 |
|
196
178
|
|
197
179
|
Scenario: new(ether_type: 0x0800, ip_protocol: 6, tcp_destination_port: 80)
|
198
|
-
When I
|
180
|
+
When I create an OpenFlow message with:
|
199
181
|
"""
|
200
182
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 6, tcp_destination_port: 80)
|
201
183
|
"""
|
202
|
-
Then
|
203
|
-
And the message has the following fields and values:
|
184
|
+
Then the message has the following fields and values:
|
204
185
|
| field | value |
|
205
186
|
| ether_type | 2048 |
|
206
187
|
| ip_protocol | 6 |
|
207
188
|
| tcp_destination_port | 80 |
|
208
189
|
|
209
190
|
Scenario: new(ether_type: 0x0800, ip_protocol: 17, udp_source_port: 2222)
|
210
|
-
When I
|
191
|
+
When I create an OpenFlow message with:
|
211
192
|
"""
|
212
193
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 17, udp_source_port: 2222)
|
213
194
|
"""
|
214
|
-
Then
|
215
|
-
And the message has the following fields and values:
|
195
|
+
Then the message has the following fields and values:
|
216
196
|
| field | value |
|
217
197
|
| ether_type | 2048 |
|
218
198
|
| ip_protocol | 17 |
|
219
199
|
| udp_source_port | 2222 |
|
220
200
|
|
221
201
|
Scenario: new(ether_type: 0x0800, ip_protocol: 17, udp_destination_port: 3333)
|
222
|
-
When I
|
202
|
+
When I create an OpenFlow message with:
|
223
203
|
"""
|
224
204
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 17, udp_destination_port: 3333)
|
225
205
|
"""
|
226
|
-
Then
|
227
|
-
And the message has the following fields and values:
|
206
|
+
Then the message has the following fields and values:
|
228
207
|
| field | value |
|
229
208
|
| ether_type | 2048 |
|
230
209
|
| ip_protocol | 17 |
|
231
210
|
| udp_destination_port | 3333 |
|
232
211
|
|
233
212
|
Scenario: new(ether_type: 0x0800, ip_protocol: 132, sctp_source_port: 22)
|
234
|
-
When I
|
213
|
+
When I create an OpenFlow message with:
|
235
214
|
"""
|
236
215
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 132, sctp_source_port: 22)
|
237
216
|
"""
|
238
|
-
Then
|
239
|
-
And the message has the following fields and values:
|
217
|
+
Then the message has the following fields and values:
|
240
218
|
| field | value |
|
241
219
|
| ether_type | 2048 |
|
242
220
|
| ip_protocol | 132 |
|
243
221
|
| sctp_source_port | 22 |
|
244
222
|
|
245
223
|
Scenario: new(ether_type: 0x0800, ip_protocol: 132, sctp_destination_port: 22)
|
246
|
-
When I
|
224
|
+
When I create an OpenFlow message with:
|
247
225
|
"""
|
248
226
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 132, sctp_destination_port: 22)
|
249
227
|
"""
|
250
|
-
Then
|
251
|
-
And the message has the following fields and values:
|
228
|
+
Then the message has the following fields and values:
|
252
229
|
| field | value |
|
253
230
|
| ether_type | 2048 |
|
254
231
|
| ip_protocol | 132 |
|
255
232
|
| sctp_destination_port | 22 |
|
256
233
|
|
257
234
|
Scenario: new(ether_type: 0x0800, ip_protocol: 1, icmpv4_type: 8)
|
258
|
-
When I
|
235
|
+
When I create an OpenFlow message with:
|
259
236
|
"""
|
260
237
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 1, icmpv4_type: 8)
|
261
238
|
"""
|
262
|
-
Then
|
263
|
-
And the message has the following fields and values:
|
239
|
+
Then the message has the following fields and values:
|
264
240
|
| field | value |
|
265
241
|
| ether_type | 2048 |
|
266
242
|
| ip_protocol | 1 |
|
267
243
|
| icmpv4_type | 8 |
|
268
244
|
|
269
245
|
Scenario: new(ether_type: 0x0800, ip_protocol: 1, icmpv4_code: 0)
|
270
|
-
When I
|
246
|
+
When I create an OpenFlow message with:
|
271
247
|
"""
|
272
248
|
Pio::Match.new(ether_type: 0x0800, ip_protocol: 1, icmpv4_code: 0)
|
273
249
|
"""
|
274
|
-
Then
|
275
|
-
And the message has the following fields and values:
|
250
|
+
Then the message has the following fields and values:
|
276
251
|
| field | value |
|
277
252
|
| ether_type | 2048 |
|
278
253
|
| ip_protocol | 1 |
|
279
254
|
| icmpv4_code | 0 |
|
280
255
|
|
281
256
|
Scenario: new(eth_type: 2054, arp_operation: 1)
|
282
|
-
When I
|
257
|
+
When I create an OpenFlow message with:
|
283
258
|
"""
|
284
259
|
Pio::Match.new(ether_type: 2054, arp_operation: 1)
|
285
260
|
"""
|
286
|
-
Then
|
287
|
-
And the message has the following fields and values:
|
261
|
+
Then the message has the following fields and values:
|
288
262
|
| field | value |
|
289
263
|
| ether_type | 2054 |
|
290
264
|
| arp_operation | 1 |
|
291
265
|
|
292
266
|
Scenario: new(eth_type: 2054, arp_sender_protocol_address: '1.2.3.4')
|
293
|
-
When I
|
267
|
+
When I create an OpenFlow message with:
|
294
268
|
"""
|
295
269
|
Pio::Match.new(ether_type: 2054, arp_sender_protocol_address: '1.2.3.4')
|
296
270
|
"""
|
297
|
-
Then
|
298
|
-
And the message has the following fields and values:
|
271
|
+
Then the message has the following fields and values:
|
299
272
|
| field | value |
|
300
273
|
| ether_type | 2054 |
|
301
274
|
| arp_sender_protocol_address | 1.2.3.4 |
|
302
275
|
|
303
276
|
Scenario: new(eth_type: 2054, arp_sender_protocol_address: '1.2.3.4', arp_sender_protocol_address_mask: '255.255.0.0')
|
304
|
-
When I
|
277
|
+
When I create an OpenFlow message with:
|
305
278
|
"""
|
306
279
|
Pio::Match.new(ether_type: 2054, arp_sender_protocol_address: '1.2.3.4', arp_sender_protocol_address_mask: '255.255.0.0')
|
307
280
|
"""
|
308
|
-
Then
|
309
|
-
And the message has the following fields and values:
|
281
|
+
Then the message has the following fields and values:
|
310
282
|
| field | value |
|
311
283
|
| ether_type | 2054 |
|
312
284
|
| arp_sender_protocol_address | 1.2.3.4 |
|
313
285
|
| arp_sender_protocol_address_mask | 255.255.0.0 |
|
314
286
|
|
315
287
|
Scenario: new(eth_type: 2054, arp_target_protocol_address: '1.2.3.4')
|
316
|
-
When I
|
288
|
+
When I create an OpenFlow message with:
|
317
289
|
"""
|
318
290
|
Pio::Match.new(ether_type: 2054, arp_target_protocol_address: '1.2.3.4')
|
319
291
|
"""
|
320
|
-
Then
|
321
|
-
And the message has the following fields and values:
|
292
|
+
Then the message has the following fields and values:
|
322
293
|
| field | value |
|
323
294
|
| ether_type | 2054 |
|
324
295
|
| arp_target_protocol_address | 1.2.3.4 |
|
325
296
|
|
326
297
|
Scenario: new(eth_type: 2054, arp_target_protocol_address: '1.2.3.4', arp_target_protocol_address_mask: '255.255.0.0')
|
327
|
-
When I
|
298
|
+
When I create an OpenFlow message with:
|
328
299
|
"""
|
329
300
|
Pio::Match.new(ether_type: 2054, arp_target_protocol_address: '1.2.3.4', arp_target_protocol_address_mask: '255.255.0.0')
|
330
301
|
"""
|
331
|
-
Then
|
332
|
-
And the message has the following fields and values:
|
302
|
+
Then the message has the following fields and values:
|
333
303
|
| field | value |
|
334
304
|
| ether_type | 2054 |
|
335
305
|
| arp_target_protocol_address | 1.2.3.4 |
|
336
306
|
| arp_target_protocol_address_mask | 255.255.0.0 |
|
337
307
|
|
338
308
|
Scenario: new(eth_type: 2054, arp_sender_hardware_address: '11:22:33:44:55:66')
|
339
|
-
When I
|
309
|
+
When I create an OpenFlow message with:
|
340
310
|
"""
|
341
311
|
Pio::Match.new(ether_type: 2054, arp_sender_hardware_address: '11:22:33:44:55:66')
|
342
312
|
"""
|
343
|
-
Then
|
344
|
-
And the message has the following fields and values:
|
313
|
+
Then the message has the following fields and values:
|
345
314
|
| field | value |
|
346
315
|
| ether_type | 2054 |
|
347
316
|
| arp_sender_hardware_address | 11:22:33:44:55:66 |
|
348
317
|
|
349
318
|
Scenario: new(eth_type: 2054, arp_sender_hardware_address: '11:22:33:44:55:66', arp_sender_hardware_address_mask: 'ff:ff:ff:00:00:00')
|
350
|
-
When I
|
319
|
+
When I create an OpenFlow message with:
|
351
320
|
"""
|
352
321
|
Pio::Match.new(ether_type: 2054, arp_sender_hardware_address: '11:22:33:44:55:66', arp_sender_hardware_address_mask: 'ff:ff:ff:00:00:00')
|
353
322
|
"""
|
354
|
-
Then
|
355
|
-
And the message has the following fields and values:
|
323
|
+
Then the message has the following fields and values:
|
356
324
|
| field | value |
|
357
325
|
| ether_type | 2054 |
|
358
326
|
| arp_sender_hardware_address | 11:22:33:44:55:66 |
|
359
327
|
| arp_sender_hardware_address_mask | ff:ff:ff:00:00:00 |
|
360
328
|
|
361
329
|
Scenario: new(eth_type: 2054, arp_target_hardware_address: '11:22:33:44:55:66')
|
362
|
-
When I
|
330
|
+
When I create an OpenFlow message with:
|
363
331
|
"""
|
364
332
|
Pio::Match.new(ether_type: 2054, arp_target_hardware_address: '11:22:33:44:55:66')
|
365
333
|
"""
|
366
|
-
Then
|
367
|
-
And the message has the following fields and values:
|
334
|
+
Then the message has the following fields and values:
|
368
335
|
| field | value |
|
369
336
|
| ether_type | 2054 |
|
370
337
|
| arp_target_hardware_address | 11:22:33:44:55:66 |
|
371
338
|
|
372
339
|
Scenario: new(eth_type: 2054, arp_target_hardware_address: '11:22:33:44:55:66', arp_target_hardware_address_mask: 'ff:ff:ff:00:00:00')
|
373
|
-
When I
|
340
|
+
When I create an OpenFlow message with:
|
374
341
|
"""
|
375
342
|
Pio::Match.new(ether_type: 2054, arp_target_hardware_address: '11:22:33:44:55:66', arp_target_hardware_address_mask: 'ff:ff:ff:00:00:00')
|
376
343
|
"""
|
377
|
-
Then
|
378
|
-
And the message has the following fields and values:
|
344
|
+
Then the message has the following fields and values:
|
379
345
|
| field | value |
|
380
346
|
| ether_type | 2054 |
|
381
347
|
| arp_target_hardware_address | 11:22:33:44:55:66 |
|
382
348
|
| arp_target_hardware_address_mask | ff:ff:ff:00:00:00 |
|
383
349
|
|
384
350
|
Scenario: new(ether_type: 0x86dd, ipv6_source_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee')
|
385
|
-
When I
|
351
|
+
When I create an OpenFlow message with:
|
386
352
|
"""
|
387
353
|
Pio::Match.new(ether_type: 0x86dd, ipv6_source_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee')
|
388
354
|
"""
|
389
|
-
Then
|
390
|
-
And the message has the following fields and values:
|
355
|
+
Then the message has the following fields and values:
|
391
356
|
| field | value |
|
392
357
|
| ether_type | 34525 |
|
393
358
|
| ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
394
359
|
|
395
360
|
Scenario: new(ether_type: 0x86dd, ipv6_source_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee', ipv6_source_address_mask: 'ffff:ffff:ffff:ffff::')
|
396
|
-
When I
|
361
|
+
When I create an OpenFlow message with:
|
397
362
|
"""
|
398
363
|
Pio::Match.new(ether_type: 0x86dd, ipv6_source_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee', ipv6_source_address_mask: 'ffff:ffff:ffff:ffff::')
|
399
364
|
"""
|
400
|
-
Then
|
401
|
-
And the message has the following fields and values:
|
365
|
+
Then the message has the following fields and values:
|
402
366
|
| field | value |
|
403
367
|
| ether_type | 34525 |
|
404
368
|
| ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
405
369
|
| ipv6_source_address_mask | ffff:ffff:ffff:ffff:: |
|
406
370
|
|
407
371
|
Scenario: new(ether_type: 0x86dd, ipv6_destination_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee')
|
408
|
-
When I
|
372
|
+
When I create an OpenFlow message with:
|
409
373
|
"""
|
410
374
|
Pio::Match.new(ether_type: 0x86dd, ipv6_destination_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee')
|
411
375
|
"""
|
412
|
-
Then
|
413
|
-
And the message has the following fields and values:
|
376
|
+
Then the message has the following fields and values:
|
414
377
|
| field | value |
|
415
378
|
| ether_type | 34525 |
|
416
379
|
| ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
417
380
|
|
418
381
|
Scenario: new(ether_type: 0x86dd, ipv6_destination_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee', ipv6_destination_address_mask: 'ffff:ffff:ffff:ffff::')
|
419
|
-
When I
|
382
|
+
When I create an OpenFlow message with:
|
420
383
|
"""
|
421
384
|
Pio::Match.new(ether_type: 0x86dd, ipv6_destination_address: '2001:db8:bd05:1d2:288a:1fc0:1:10ee', ipv6_destination_address_mask: 'ffff:ffff:ffff:ffff::')
|
422
385
|
"""
|
423
|
-
Then
|
424
|
-
And the message has the following fields and values:
|
386
|
+
Then the message has the following fields and values:
|
425
387
|
| field | value |
|
426
388
|
| ether_type | 34525 |
|
427
389
|
| ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
428
390
|
| ipv6_destination_address_mask | ffff:ffff:ffff:ffff:: |
|
429
391
|
|
430
392
|
Scenario: new(tunnel_id: 1)
|
431
|
-
When I
|
393
|
+
When I create an OpenFlow message with:
|
432
394
|
"""
|
433
395
|
Pio::Match.new(tunnel_id: 1)
|
434
396
|
"""
|
435
|
-
Then
|
436
|
-
And the message has the following fields and values:
|
397
|
+
Then the message has the following fields and values:
|
437
398
|
| field | value |
|
438
399
|
| tunnel_id | 1 |
|
439
400
|
|
440
401
|
Scenario: new(tunnel_id: 1, tunnel_id_mask: 9223372036854775808)
|
441
|
-
When I
|
402
|
+
When I create an OpenFlow message with:
|
442
403
|
"""
|
443
404
|
Pio::Match.new(tunnel_id: 1, tunnel_id_mask: 9223372036854775808)
|
444
405
|
"""
|
445
|
-
Then
|
446
|
-
And the message has the following fields and values:
|
406
|
+
Then the message has the following fields and values:
|
447
407
|
| field | value |
|
448
408
|
| tunnel_id | 1 |
|
449
409
|
| tunnel_id_mask | 9223372036854775808 |
|
450
410
|
|
411
|
+
Scenario: new(packet_reg0: 1)
|
412
|
+
When I create an OpenFlow message with:
|
413
|
+
"""
|
414
|
+
Pio::Match.new(packet_reg0: 1)
|
415
|
+
"""
|
416
|
+
Then the message has the following fields and values:
|
417
|
+
| field | value |
|
418
|
+
| packet_reg0 | 1 |
|
419
|
+
|
420
|
+
Scenario: new(packet_reg0: 1, packet_reg0_mask: 1)
|
421
|
+
When I create an OpenFlow message with:
|
422
|
+
"""
|
423
|
+
Pio::Match.new(packet_reg0: 1, packet_reg0_mask: 1)
|
424
|
+
"""
|
425
|
+
Then the message has the following fields and values:
|
426
|
+
| field | value |
|
427
|
+
| packet_reg0 | 1 |
|
428
|
+
| packet_reg0_mask | 1 |
|
429
|
+
|
430
|
+
Scenario: new(packet_reg1: 1)
|
431
|
+
When I create an OpenFlow message with:
|
432
|
+
"""
|
433
|
+
Pio::Match.new(packet_reg1: 1)
|
434
|
+
"""
|
435
|
+
Then the message has the following fields and values:
|
436
|
+
| field | value |
|
437
|
+
| packet_reg1 | 1 |
|
438
|
+
|
439
|
+
Scenario: new(packet_reg1: 1, packet_reg1_mask: 1)
|
440
|
+
When I create an OpenFlow message with:
|
441
|
+
"""
|
442
|
+
Pio::Match.new(packet_reg1: 1, packet_reg1_mask: 1)
|
443
|
+
"""
|
444
|
+
Then the message has the following fields and values:
|
445
|
+
| field | value |
|
446
|
+
| packet_reg1 | 1 |
|
447
|
+
| packet_reg1_mask | 1 |
|
448
|
+
|
449
|
+
Scenario: new(packet_reg2: 1)
|
450
|
+
When I create an OpenFlow message with:
|
451
|
+
"""
|
452
|
+
Pio::Match.new(packet_reg2: 1)
|
453
|
+
"""
|
454
|
+
Then the message has the following fields and values:
|
455
|
+
| field | value |
|
456
|
+
| packet_reg2 | 1 |
|
457
|
+
|
458
|
+
Scenario: new(packet_reg2: 1, packet_reg2_mask: 1)
|
459
|
+
When I create an OpenFlow message with:
|
460
|
+
"""
|
461
|
+
Pio::Match.new(packet_reg2: 1, packet_reg2_mask: 1)
|
462
|
+
"""
|
463
|
+
Then the message has the following fields and values:
|
464
|
+
| field | value |
|
465
|
+
| packet_reg2 | 1 |
|
466
|
+
| packet_reg2_mask | 1 |
|
467
|
+
|
468
|
+
Scenario: new(packet_reg3: 1)
|
469
|
+
When I create an OpenFlow message with:
|
470
|
+
"""
|
471
|
+
Pio::Match.new(packet_reg3: 1)
|
472
|
+
"""
|
473
|
+
Then the message has the following fields and values:
|
474
|
+
| field | value |
|
475
|
+
| packet_reg3 | 1 |
|
476
|
+
|
477
|
+
Scenario: new(packet_reg3: 1, packet_reg3_mask: 1)
|
478
|
+
When I create an OpenFlow message with:
|
479
|
+
"""
|
480
|
+
Pio::Match.new(packet_reg3: 1, packet_reg3_mask: 1)
|
481
|
+
"""
|
482
|
+
Then the message has the following fields and values:
|
483
|
+
| field | value |
|
484
|
+
| packet_reg3 | 1 |
|
485
|
+
| packet_reg3_mask | 1 |
|
486
|
+
|
451
487
|
Scenario: read (file: open_flow13/oxm_no_fields.raw)
|
452
|
-
When I
|
453
|
-
Then
|
454
|
-
And the message has the following fields and values:
|
488
|
+
When I parse a file named "open_flow13/oxm_no_fields.raw" with "Pio::Match" class
|
489
|
+
Then the message has the following fields and values:
|
455
490
|
| field | value |
|
456
491
|
| match_fields | [] |
|
457
492
|
|
458
493
|
Scenario: read (file: open_flow13/oxm_in_port_field.raw)
|
459
|
-
When I
|
460
|
-
Then
|
461
|
-
And the message has the following fields and values:
|
494
|
+
When I parse a file named "open_flow13/oxm_in_port_field.raw" with "Pio::Match" class
|
495
|
+
Then the message has the following fields and values:
|
462
496
|
| field | value |
|
463
497
|
| in_port | 1 |
|
464
498
|
|
465
499
|
Scenario: read (file: open_flow13/oxm_metadata_field.raw)
|
466
|
-
When I
|
467
|
-
Then
|
468
|
-
And the message has the following fields and values:
|
500
|
+
When I parse a file named "open_flow13/oxm_metadata_field.raw" with "Pio::Match" class
|
501
|
+
Then the message has the following fields and values:
|
469
502
|
| field | value |
|
470
503
|
| metadata | 1 |
|
471
504
|
|
472
505
|
Scenario: read (file: open_flow13/oxm_metadata_masked_field.raw)
|
473
|
-
When I
|
474
|
-
Then
|
475
|
-
And the message has the following fields and values:
|
506
|
+
When I parse a file named "open_flow13/oxm_metadata_masked_field.raw" with "Pio::Match" class
|
507
|
+
Then the message has the following fields and values:
|
476
508
|
| field | value |
|
477
509
|
| metadata | 1 |
|
478
510
|
| metadata_mask | 18446744069414584320 |
|
479
511
|
|
480
512
|
Scenario: read (file: open_flow13/oxm_ether_destination_field.raw)
|
481
|
-
When I
|
482
|
-
Then
|
483
|
-
And the message has the following fields and values:
|
513
|
+
When I parse a file named "open_flow13/oxm_ether_destination_field.raw" with "Pio::Match" class
|
514
|
+
Then the message has the following fields and values:
|
484
515
|
| field | value |
|
485
516
|
| destination_mac_address | ff:ff:ff:ff:ff:ff |
|
486
517
|
|
487
518
|
Scenario: read (file: open_flow13/oxm_ether_source_field.raw)
|
488
|
-
When I
|
489
|
-
Then
|
490
|
-
And the message has the following fields and values:
|
519
|
+
When I parse a file named "open_flow13/oxm_ether_source_field.raw" with "Pio::Match" class
|
520
|
+
Then the message has the following fields and values:
|
491
521
|
| field | value |
|
492
522
|
| source_mac_address | 01:02:03:04:05:06 |
|
493
523
|
|
494
524
|
Scenario: read (file: open_flow13/oxm_masked_ether_destination_field.raw)
|
495
|
-
When I
|
496
|
-
Then
|
497
|
-
And the message has the following fields and values:
|
525
|
+
When I parse a file named "open_flow13/oxm_masked_ether_destination_field.raw" with "Pio::Match" class
|
526
|
+
Then the message has the following fields and values:
|
498
527
|
| field | value |
|
499
528
|
| destination_mac_address | ff:ff:ff:ff:ff:ff |
|
500
529
|
| destination_mac_address_mask | ff:ff:ff:00:00:00 |
|
501
530
|
|
502
531
|
Scenario: read (file: open_flow13/oxm_masked_ether_source_field.raw)
|
503
|
-
When I
|
504
|
-
Then
|
505
|
-
And the message has the following fields and values:
|
532
|
+
When I parse a file named "open_flow13/oxm_masked_ether_source_field.raw" with "Pio::Match" class
|
533
|
+
Then the message has the following fields and values:
|
506
534
|
| field | value |
|
507
535
|
| source_mac_address | 01:02:03:04:05:06 |
|
508
536
|
| source_mac_address_mask | ff:ff:ff:00:00:00 |
|
509
537
|
|
510
538
|
Scenario: read (file: open_flow13/oxm_ether_type_field.raw)
|
511
|
-
When I
|
512
|
-
Then
|
513
|
-
And the message has the following fields and values:
|
539
|
+
When I parse a file named "open_flow13/oxm_ether_type_field.raw" with "Pio::Match" class
|
540
|
+
Then the message has the following fields and values:
|
514
541
|
| field | value |
|
515
542
|
| ether_type | 0 |
|
516
543
|
|
517
544
|
Scenario: read (file: open_flow13/oxm_vlan_vid_field.raw)
|
518
|
-
When I
|
519
|
-
Then
|
520
|
-
And the message has the following fields and values:
|
545
|
+
When I parse a file named "open_flow13/oxm_vlan_vid_field.raw" with "Pio::Match" class
|
546
|
+
Then the message has the following fields and values:
|
521
547
|
| field | value |
|
522
548
|
| vlan_vid | 10 |
|
523
549
|
|
524
550
|
Scenario: read (file: open_flow13/oxm_vlan_pcp_field.raw)
|
525
|
-
When I
|
526
|
-
Then
|
527
|
-
And the message has the following fields and values:
|
551
|
+
When I parse a file named "open_flow13/oxm_vlan_pcp_field.raw" with "Pio::Match" class
|
552
|
+
Then the message has the following fields and values:
|
528
553
|
| field | value |
|
529
554
|
| vlan_vid | 10 |
|
530
555
|
| vlan_pcp | 5 |
|
531
556
|
|
532
557
|
Scenario: read (file: open_flow13/oxm_ip_dscp_field.raw)
|
533
|
-
When I
|
534
|
-
Then
|
535
|
-
And the message has the following fields and values:
|
558
|
+
When I parse a file named "open_flow13/oxm_ip_dscp_field.raw" with "Pio::Match" class
|
559
|
+
Then the message has the following fields and values:
|
536
560
|
| field | value |
|
537
561
|
| ether_type | 2048 |
|
538
562
|
| ip_dscp | 46 |
|
539
563
|
|
540
564
|
Scenario: read (file: open_flow13/oxm_ip_ecn_field.raw)
|
541
|
-
When I
|
542
|
-
Then
|
543
|
-
And the message has the following fields and values:
|
565
|
+
When I parse a file named "open_flow13/oxm_ip_ecn_field.raw" with "Pio::Match" class
|
566
|
+
Then the message has the following fields and values:
|
544
567
|
| field | value |
|
545
568
|
| ether_type | 2048 |
|
546
569
|
| ip_ecn | 3 |
|
547
570
|
|
548
571
|
Scenario: read (file: open_flow13/oxm_ipv4_source_field.raw)
|
549
|
-
When I
|
550
|
-
Then
|
551
|
-
And the message has the following fields and values:
|
572
|
+
When I parse a file named "open_flow13/oxm_ipv4_source_field.raw" with "Pio::Match" class
|
573
|
+
Then the message has the following fields and values:
|
552
574
|
| field | value |
|
553
575
|
| ether_type | 2048 |
|
554
576
|
| ipv4_source_address | 1.2.3.4 |
|
555
577
|
|
556
578
|
Scenario: read (file: open_flow13/oxm_ipv4_destination_field.raw)
|
557
|
-
When I
|
558
|
-
Then
|
559
|
-
And the message has the following fields and values:
|
579
|
+
When I parse a file named "open_flow13/oxm_ipv4_destination_field.raw" with "Pio::Match" class
|
580
|
+
Then the message has the following fields and values:
|
560
581
|
| field | value |
|
561
582
|
| ether_type | 2048 |
|
562
583
|
| ipv4_destination_address | 11.22.33.44 |
|
563
584
|
|
564
585
|
Scenario: read (file: open_flow13/oxm_masked_ipv4_source_field.raw)
|
565
|
-
When I
|
566
|
-
Then
|
567
|
-
And the message has the following fields and values:
|
586
|
+
When I parse a file named "open_flow13/oxm_masked_ipv4_source_field.raw" with "Pio::Match" class
|
587
|
+
Then the message has the following fields and values:
|
568
588
|
| field | value |
|
569
589
|
| ether_type | 2048 |
|
570
590
|
| ipv4_source_address | 1.2.3.4 |
|
571
591
|
| ipv4_source_address_mask | 255.255.0.0 |
|
572
592
|
|
573
593
|
Scenario: read (file: open_flow13/oxm_masked_ipv4_destination_field.raw)
|
574
|
-
When I
|
575
|
-
Then
|
576
|
-
And the message has the following fields and values:
|
594
|
+
When I parse a file named "open_flow13/oxm_masked_ipv4_destination_field.raw" with "Pio::Match" class
|
595
|
+
Then the message has the following fields and values:
|
577
596
|
| field | value |
|
578
597
|
| ether_type | 2048 |
|
579
598
|
| ipv4_destination_address | 11.22.33.44 |
|
580
599
|
| ipv4_destination_address_mask | 255.255.255.0 |
|
581
600
|
|
582
601
|
Scenario: read (file: open_flow13/oxm_tcp_source_field.raw)
|
583
|
-
When I
|
584
|
-
Then
|
585
|
-
And the message has the following fields and values:
|
602
|
+
When I parse a file named "open_flow13/oxm_tcp_source_field.raw" with "Pio::Match" class
|
603
|
+
Then the message has the following fields and values:
|
586
604
|
| field | value |
|
587
605
|
| ether_type | 2048 |
|
588
606
|
| ip_protocol | 6 |
|
589
607
|
| tcp_source_port | 1111 |
|
590
608
|
|
591
609
|
Scenario: read (file: open_flow13/oxm_tcp_destination_field.raw)
|
592
|
-
When I
|
593
|
-
Then
|
594
|
-
And the message has the following fields and values:
|
610
|
+
When I parse a file named "open_flow13/oxm_tcp_destination_field.raw" with "Pio::Match" class
|
611
|
+
Then the message has the following fields and values:
|
595
612
|
| field | value |
|
596
613
|
| ether_type | 2048 |
|
597
614
|
| ip_protocol | 6 |
|
598
615
|
| tcp_destination_port | 80 |
|
599
616
|
|
600
617
|
Scenario: read (file: open_flow13/oxm_udp_source_field.raw)
|
601
|
-
When I
|
602
|
-
Then
|
603
|
-
And the message has the following fields and values:
|
618
|
+
When I parse a file named "open_flow13/oxm_udp_source_field.raw" with "Pio::Match" class
|
619
|
+
Then the message has the following fields and values:
|
604
620
|
| field | value |
|
605
621
|
| ether_type | 2048 |
|
606
622
|
| ip_protocol | 17 |
|
607
623
|
| udp_source_port | 2222 |
|
608
624
|
|
609
625
|
Scenario: read (file: open_flow13/oxm_udp_destination_field.raw)
|
610
|
-
When I
|
611
|
-
Then
|
612
|
-
And the message has the following fields and values:
|
626
|
+
When I parse a file named "open_flow13/oxm_udp_destination_field.raw" with "Pio::Match" class
|
627
|
+
Then the message has the following fields and values:
|
613
628
|
| field | value |
|
614
629
|
| ether_type | 2048 |
|
615
630
|
| ip_protocol | 17 |
|
616
631
|
| udp_destination_port | 3333 |
|
617
632
|
|
618
633
|
Scenario: read (file: open_flow13/oxm_sctp_source_field.raw)
|
619
|
-
When I
|
620
|
-
Then
|
621
|
-
And the message has the following fields and values:
|
634
|
+
When I parse a file named "open_flow13/oxm_sctp_source_field.raw" with "Pio::Match" class
|
635
|
+
Then the message has the following fields and values:
|
622
636
|
| field | value |
|
623
637
|
| ether_type | 2048 |
|
624
638
|
| ip_protocol | 132 |
|
625
639
|
| sctp_source_port | 22 |
|
626
640
|
|
627
641
|
Scenario: read (file: open_flow13/oxm_sctp_destination_field.raw)
|
628
|
-
When I
|
629
|
-
Then
|
630
|
-
And the message has the following fields and values:
|
642
|
+
When I parse a file named "open_flow13/oxm_sctp_destination_field.raw" with "Pio::Match" class
|
643
|
+
Then the message has the following fields and values:
|
631
644
|
| field | value |
|
632
645
|
| ether_type | 2048 |
|
633
646
|
| ip_protocol | 132 |
|
634
647
|
| sctp_destination_port | 22 |
|
635
648
|
|
636
649
|
Scenario: read (file: open_flow13/oxm_icmpv4_type_field.raw)
|
637
|
-
When I
|
638
|
-
Then
|
639
|
-
And the message has the following fields and values:
|
650
|
+
When I parse a file named "open_flow13/oxm_icmpv4_type_field.raw" with "Pio::Match" class
|
651
|
+
Then the message has the following fields and values:
|
640
652
|
| field | value |
|
641
653
|
| ether_type | 2048 |
|
642
654
|
| ip_protocol | 1 |
|
643
655
|
| icmpv4_type | 8 |
|
644
656
|
|
645
657
|
Scenario: read (file: open_flow13/oxm_icmpv4_code_field.raw)
|
646
|
-
When I
|
647
|
-
Then
|
648
|
-
And the message has the following fields and values:
|
658
|
+
When I parse a file named "open_flow13/oxm_icmpv4_code_field.raw" with "Pio::Match" class
|
659
|
+
Then the message has the following fields and values:
|
649
660
|
| field | value |
|
650
661
|
| ether_type | 2048 |
|
651
662
|
| ip_protocol | 1 |
|
652
663
|
| icmpv4_code | 0 |
|
653
664
|
|
654
665
|
Scenario: read (file: open_flow13/oxm_arp_op_field.raw)
|
655
|
-
When I
|
656
|
-
Then
|
657
|
-
And the message has the following fields and values:
|
666
|
+
When I parse a file named "open_flow13/oxm_arp_op_field.raw" with "Pio::Match" class
|
667
|
+
Then the message has the following fields and values:
|
658
668
|
| field | value |
|
659
669
|
| ether_type | 2054 |
|
660
670
|
| arp_operation | 1 |
|
661
671
|
|
662
672
|
Scenario: read (file: open_flow13/oxm_arp_spa_field.raw)
|
663
|
-
When I
|
664
|
-
Then
|
665
|
-
And the message has the following fields and values:
|
673
|
+
When I parse a file named "open_flow13/oxm_arp_spa_field.raw" with "Pio::Match" class
|
674
|
+
Then the message has the following fields and values:
|
666
675
|
| field | value |
|
667
676
|
| ether_type | 2054 |
|
668
677
|
| arp_sender_protocol_address | 1.2.3.4 |
|
669
678
|
|
670
679
|
Scenario: read (file: open_flow13/oxm_masked_arp_spa_field.raw)
|
671
|
-
When I
|
672
|
-
Then
|
673
|
-
And the message has the following fields and values:
|
680
|
+
When I parse a file named "open_flow13/oxm_masked_arp_spa_field.raw" with "Pio::Match" class
|
681
|
+
Then the message has the following fields and values:
|
674
682
|
| field | value |
|
675
683
|
| ether_type | 2054 |
|
676
684
|
| arp_sender_protocol_address | 1.2.3.4 |
|
677
685
|
| arp_sender_protocol_address_mask | 255.255.0.0 |
|
678
686
|
|
679
687
|
Scenario: read (file: open_flow13/oxm_arp_tpa_field.raw)
|
680
|
-
When I
|
681
|
-
Then
|
682
|
-
And the message has the following fields and values:
|
688
|
+
When I parse a file named "open_flow13/oxm_arp_tpa_field.raw" with "Pio::Match" class
|
689
|
+
Then the message has the following fields and values:
|
683
690
|
| field | value |
|
684
691
|
| ether_type | 2054 |
|
685
692
|
| arp_target_protocol_address | 1.2.3.4 |
|
686
693
|
|
687
694
|
Scenario: read (file: open_flow13/oxm_masked_arp_tpa_field.raw)
|
688
|
-
When I
|
689
|
-
Then
|
690
|
-
And the message has the following fields and values:
|
695
|
+
When I parse a file named "open_flow13/oxm_masked_arp_tpa_field.raw" with "Pio::Match" class
|
696
|
+
Then the message has the following fields and values:
|
691
697
|
| field | value |
|
692
698
|
| ether_type | 2054 |
|
693
699
|
| arp_target_protocol_address | 1.2.3.4 |
|
694
700
|
| arp_target_protocol_address_mask | 255.255.0.0 |
|
695
701
|
|
696
702
|
Scenario: read (file: open_flow13/oxm_arp_sha_field.raw)
|
697
|
-
When I
|
698
|
-
Then
|
699
|
-
And the message has the following fields and values:
|
703
|
+
When I parse a file named "open_flow13/oxm_arp_sha_field.raw" with "Pio::Match" class
|
704
|
+
Then the message has the following fields and values:
|
700
705
|
| field | value |
|
701
706
|
| ether_type | 2054 |
|
702
707
|
| arp_sender_hardware_address | 11:22:33:44:55:66 |
|
703
708
|
|
704
709
|
Scenario: read (file: open_flow13/oxm_masked_arp_sha_field.raw)
|
705
|
-
When I
|
706
|
-
Then
|
707
|
-
And the message has the following fields and values:
|
710
|
+
When I parse a file named "open_flow13/oxm_masked_arp_sha_field.raw" with "Pio::Match" class
|
711
|
+
Then the message has the following fields and values:
|
708
712
|
| field | value |
|
709
713
|
| ether_type | 2054 |
|
710
714
|
| arp_sender_hardware_address | 11:22:33:44:55:66 |
|
711
715
|
| arp_sender_hardware_address_mask | ff:ff:ff:ff:ff:ff |
|
712
716
|
|
713
717
|
Scenario: read (file: open_flow13/oxm_arp_tha_field.raw)
|
714
|
-
When I
|
715
|
-
Then
|
716
|
-
And the message has the following fields and values:
|
718
|
+
When I parse a file named "open_flow13/oxm_arp_tha_field.raw" with "Pio::Match" class
|
719
|
+
Then the message has the following fields and values:
|
717
720
|
| field | value |
|
718
721
|
| ether_type | 2054 |
|
719
722
|
| arp_target_hardware_address | 11:22:33:44:55:66 |
|
720
723
|
|
721
724
|
Scenario: read (file: open_flow13/oxm_masked_arp_tha_field.raw)
|
722
|
-
When I
|
723
|
-
Then
|
724
|
-
And the message has the following fields and values:
|
725
|
+
When I parse a file named "open_flow13/oxm_masked_arp_tha_field.raw" with "Pio::Match" class
|
726
|
+
Then the message has the following fields and values:
|
725
727
|
| field | value |
|
726
728
|
| ether_type | 2054 |
|
727
729
|
| arp_target_hardware_address | 11:22:33:44:55:66 |
|
728
730
|
| arp_target_hardware_address_mask | ff:ff:ff:ff:ff:ff |
|
729
731
|
|
730
732
|
Scenario: read (file: open_flow13/oxm_ipv6_source_field.raw)
|
731
|
-
When I
|
732
|
-
Then
|
733
|
-
And the message has the following fields and values:
|
733
|
+
When I parse a file named "open_flow13/oxm_ipv6_source_field.raw" with "Pio::Match" class
|
734
|
+
Then the message has the following fields and values:
|
734
735
|
| field | value |
|
735
736
|
| ether_type | 34525 |
|
736
737
|
| ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
737
738
|
|
738
739
|
Scenario: read (file: open_flow13/oxm_masked_ipv6_source_field.raw)
|
739
|
-
When I
|
740
|
-
Then
|
741
|
-
And the message has the following fields and values:
|
740
|
+
When I parse a file named "open_flow13/oxm_masked_ipv6_source_field.raw" with "Pio::Match" class
|
741
|
+
Then the message has the following fields and values:
|
742
742
|
| field | value |
|
743
743
|
| ether_type | 34525 |
|
744
744
|
| ipv6_source_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
745
745
|
| ipv6_source_address_mask | ffff:ffff:ffff:ffff:: |
|
746
746
|
|
747
747
|
Scenario: read (file: open_flow13/oxm_ipv6_destination_field.raw)
|
748
|
-
When I
|
749
|
-
Then
|
750
|
-
And the message has the following fields and values:
|
748
|
+
When I parse a file named "open_flow13/oxm_ipv6_destination_field.raw" with "Pio::Match" class
|
749
|
+
Then the message has the following fields and values:
|
751
750
|
| field | value |
|
752
751
|
| ether_type | 34525 |
|
753
752
|
| ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
754
753
|
|
755
754
|
Scenario: read (file: open_flow13/oxm_masked_ipv6_destination_field.raw)
|
756
|
-
When I
|
757
|
-
Then
|
758
|
-
And the message has the following fields and values:
|
755
|
+
When I parse a file named "open_flow13/oxm_masked_ipv6_destination_field.raw" with "Pio::Match" class
|
756
|
+
Then the message has the following fields and values:
|
759
757
|
| field | value |
|
760
758
|
| ether_type | 34525 |
|
761
759
|
| ipv6_destination_address | 2001:db8:bd05:1d2:288a:1fc0:1:10ee |
|
762
760
|
| ipv6_destination_address_mask | ffff:ffff:ffff:ffff:: |
|
763
761
|
|
764
762
|
Scenario: read (file: open_flow13/oxm_tunnel_id_field.raw)
|
765
|
-
When I
|
766
|
-
Then
|
767
|
-
And the message has the following fields and values:
|
763
|
+
When I parse a file named "open_flow13/oxm_tunnel_id_field.raw" with "Pio::Match" class
|
764
|
+
Then the message has the following fields and values:
|
768
765
|
| field | value |
|
769
766
|
| tunnel_id | 1 |
|
770
767
|
|
771
768
|
Scenario: read (file: open_flow13/oxm_masked_tunnel_id_field.raw)
|
772
|
-
When I
|
773
|
-
Then
|
774
|
-
And the message has the following fields and values:
|
769
|
+
When I parse a file named "open_flow13/oxm_masked_tunnel_id_field.raw" with "Pio::Match" class
|
770
|
+
Then the message has the following fields and values:
|
775
771
|
| field | value |
|
776
772
|
| tunnel_id | 1 |
|
777
773
|
| tunnel_id_mask | 9223372036854775808 |
|
778
774
|
|
779
|
-
Scenario: read (file: open_flow13/oxm_invalid_field.raw)
|
780
|
-
When I try to parse a file named "open_flow13/oxm_invalid_field.raw" with "Pio::Match" class
|
781
|
-
Then it should fail with "RuntimeError", "Unknown OXM field value: 40"
|
782
|
-
|
783
775
|
Scenario: read (file: open_flow13/oxm_experimenter_stratos_basic_dot11.raw)
|
784
|
-
When I
|
785
|
-
Then
|
786
|
-
And the message has the following fields and values:
|
776
|
+
When I parse a file named "open_flow13/oxm_experimenter_stratos_basic_dot11.raw" with "Pio::Match" class
|
777
|
+
Then the message has the following fields and values:
|
787
778
|
| field | value |
|
788
779
|
| match_fields.at(0).oxm_field | 0 |
|
789
780
|
| match_fields.at(0).experimenter | 4278247501 |
|