summaryrefslogtreecommitdiffhomepage
path: root/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/__init__.py6
-rw-r--r--tests/unit/app/__init__.py0
-rw-r--r--tests/unit/app/ofctl_rest_json/of10.json101
-rw-r--r--tests/unit/app/ofctl_rest_json/of12.json150
-rw-r--r--tests/unit/app/ofctl_rest_json/of13.json191
-rw-r--r--tests/unit/app/ofctl_rest_json/of14.json195
-rw-r--r--tests/unit/app/ofctl_rest_json/of15.json203
-rw-r--r--tests/unit/app/test_ofctl_rest.py138
-rw-r--r--tests/unit/app/test_tester.py464
-rw-r--r--tests/unit/app/test_ws_topology.py54
-rw-r--r--tests/unit/app/test_wsgi.py104
-rw-r--r--tests/unit/cmd/__init__.py15
-rw-r--r--tests/unit/cmd/dummy_app.py21
-rw-r--r--tests/unit/cmd/dummy_openflow_app.py22
-rw-r--r--tests/unit/cmd/test_manager.py77
-rw-r--r--tests/unit/controller/__init__.py0
-rw-r--r--tests/unit/controller/test_controller.py145
-rw-r--r--tests/unit/lib/__init__.py0
-rw-r--r--tests/unit/lib/ofctl_json/of10/1-2-ofp_flow_mod.packet.json23
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-0-ofp_desc_stats_reply.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-11-ofp_flow_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-12-ofp_flow_stats_reply.packet.json75
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-16-ofp_experimenter.packet.json8
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-2-ofp_flow_mod.packet.json41
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-21-ofp_group_mod.packet.json22
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-22-ofp_port_mod.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-25-ofp_aggregate_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-26-ofp_aggregate_stats_reply.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-28-ofp_table_stats_reply.packet.json32134
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-30-ofp_port_stats_reply.packet.json34
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-32-ofp_group_features_stats_reply.packet.json104
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-34-ofp_group_desc_stats_reply.packet.json20
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-35-ofp_queue_get_config_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-36-ofp_queue_get_config_reply.packet.json43
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-38-ofp_queue_stats_reply.packet.json25
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-6-ofp_features_reply.packet.json30
-rw-r--r--tests/unit/lib/ofctl_json/of12/3-62-ofp_group_stats_reply.packet.json17
-rw-r--r--tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_group_stats_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_port_stats_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json3
-rw-r--r--tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json4
-rw-r--r--tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-0-ofp_desc_reply.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-11-ofp_flow_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json104
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-16-ofp_experimenter.packet.json8
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json97
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-21-ofp_group_mod.packet.json21
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-22-ofp_port_mod.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-25-ofp_aggregate_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-26-ofp_aggregate_stats_reply.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-28-ofp_table_stats_reply.packet.json16
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-30-ofp_port_stats_reply.packet.json38
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-32-ofp_group_features_reply.packet.json104
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-34-ofp_group_desc_reply.packet.json20
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-35-ofp_queue_get_config_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-36-ofp_queue_get_config_reply.packet.json83
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-38-ofp_queue_stats_reply.packet.json31
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-45-ofp_meter_mod.packet.json31
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-48-ofp_meter_config_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-50-ofp_meter_stats_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-52-ofp_meter_features_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-54-ofp_port_desc_reply.packet.json30
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-56-ofp_table_features_reply.packet.json11928
-rw-r--r--tests/unit/lib/ofctl_json/of13/4-58-ofp_group_stats_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_group_stats_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_config_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_stats_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_port_stats_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json3
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json4
-rw-r--r--tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json3
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-0-ofp_desc_reply.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-11-ofp_flow_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-12-ofp_flow_stats_reply.packet.json197
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-16-ofp_experimenter.packet.json8
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-2-ofp_flow_mod.packet.json103
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-21-ofp_group_mod.packet.json21
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-22-ofp_port_mod.packet.json50
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-25-ofp_aggregate_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-26-ofp_aggregate_stats_reply.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-28-ofp_table_stats_reply.packet.json16
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-30-ofp_port_stats_reply.packet.json85
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-32-ofp_group_features_reply.packet.json104
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-34-ofp_group_desc_reply.packet.json24
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-36-ofp_queue_stats_reply.packet.json64
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-43-ofp_meter_mod.packet.json31
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-46-ofp_meter_config_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-48-ofp_meter_stats_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-50-ofp_meter_features_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-52-ofp_port_desc_reply.packet.json83
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-54-ofp_table_features_reply.packet.json11928
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-56-ofp_group_stats_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-63-ofp_queue_desc_request.packet.json4
-rw-r--r--tests/unit/lib/ofctl_json/of14/5-64-ofp_queue_desc_reply.packet.json61
-rw-r--r--tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json48
-rw-r--r--tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json13
-rw-r--r--tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_mod.packet.json115
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json10
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-desc_reply.packet.json9
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-experimenter.packet.json8
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_reply.packet.json26
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_request.packet.json13
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json103
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_reply.packet.json16
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_request.packet.json11
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_reply.packet.json27
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_features_reply.packet.json104
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_mod.packet.json42
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_stats_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_desc_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_features_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_mod.packet.json24
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_stats_reply.packet.json19
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_reply.packet.json83
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_request.packet.json3
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_mod.packet.json50
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_stats_reply.packet.json93
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_reply.packet.json61
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_request.packet.json4
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_stats_reply.packet.json64
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_features_reply.packet.json25
-rw-r--r--tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_stats_reply.packet.json16
-rw-r--r--tests/unit/lib/ovs/__init__.py0
-rw-r--r--tests/unit/lib/ovs/test_vsctl.py789
-rw-r--r--tests/unit/lib/test_addrconv.py56
-rw-r--r--tests/unit/lib/test_hub.py239
-rw-r--r--tests/unit/lib/test_import_module.py66
-rw-r--r--tests/unit/lib/test_ip.py156
-rw-r--r--tests/unit/lib/test_mac.py95
-rw-r--r--tests/unit/lib/test_mod/__init__.py15
-rw-r--r--tests/unit/lib/test_mod/aaa/__init__.py15
-rw-r--r--tests/unit/lib/test_mod/aaa/mod.py17
-rw-r--r--tests/unit/lib/test_mod/bbb/__init__.py15
-rw-r--r--tests/unit/lib/test_mod/bbb/mod.py17
-rw-r--r--tests/unit/lib/test_mod/ccc/__init__.py14
-rw-r--r--tests/unit/lib/test_mod/ccc/mod.py16
-rw-r--r--tests/unit/lib/test_mod/ddd/__init__.py14
-rw-r--r--tests/unit/lib/test_mod/ddd/mod.py16
-rw-r--r--tests/unit/lib/test_mod/eee.py16
-rw-r--r--tests/unit/lib/test_mod/fff.py16
-rw-r--r--tests/unit/lib/test_mod/ggg.py16
-rw-r--r--tests/unit/lib/test_mrtlib.py765
-rw-r--r--tests/unit/lib/test_of_config_classes.py442
-rw-r--r--tests/unit/lib/test_ofctl.py643
-rw-r--r--tests/unit/lib/test_ofctl_action_match.py869
-rw-r--r--tests/unit/lib/test_ofctl_string.py151
-rw-r--r--tests/unit/lib/test_ofctl_utils.py142
-rw-r--r--tests/unit/lib/test_ofctl_v1_3.py54
-rw-r--r--tests/unit/lib/test_ofp_pktinfilter.py92
-rw-r--r--tests/unit/lib/test_pack_utils.py59
-rw-r--r--tests/unit/lib/test_pcaplib.py230
-rw-r--r--tests/unit/lib/test_rpc.py360
-rw-r--r--tests/unit/lib/test_stringify.py75
-rw-r--r--tests/unit/ofproto/__init__.py0
-rw-r--r--tests/unit/ofproto/json/of10/1-1-ofp_packet_out.packet.json15
-rw-r--r--tests/unit/ofproto/json/of10/1-2-ofp_flow_mod.packet.json37
-rw-r--r--tests/unit/ofproto/json/of10/1-4-ofp_packet_in.packet.json9
-rw-r--r--tests/unit/ofproto/json/of10/1-5-features_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of10/1-6-ofp_switch_features.packet.json37
-rw-r--r--tests/unit/ofproto/json/of10/libofproto-OFP10-ofp_packet_out_packet_library.packet.json58
-rw-r--r--tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_mpls_ttl.packet.json37
-rw-r--r--tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_nw_ttl.packet.json37
-rw-r--r--tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_pop_mpls.packet.json38
-rw-r--r--tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_push_mpls.packet.json38
-rw-r--r--tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_label.packet.json38
-rw-r--r--tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_tc.packet.json38
-rw-r--r--tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_ttl.packet.json38
-rw-r--r--tests/unit/ofproto/json/of12/3-0-ofp_desc_stats_reply.packet.json15
-rw-r--r--tests/unit/ofproto/json/of12/3-1-ofp_packet_out.packet.json18
-rw-r--r--tests/unit/ofproto/json/of12/3-10-ofp_hello.packet.json3
-rw-r--r--tests/unit/ofproto/json/of12/3-11-ofp_flow_stats_request.packet.json17
-rw-r--r--tests/unit/ofproto/json/of12/3-12-ofp_flow_stats_reply.packet.json161
-rw-r--r--tests/unit/ofproto/json/of12/3-13-ofp_echo_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/3-14-ofp_echo_reply.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/3-15-ofp_error_msg.packet.json7
-rw-r--r--tests/unit/ofproto/json/of12/3-16-ofp_experimenter.packet.json7
-rw-r--r--tests/unit/ofproto/json/of12/3-17-ofp_barrier_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of12/3-18-ofp_barrier_reply.packet.json3
-rw-r--r--tests/unit/ofproto/json/of12/3-19-ofp_role_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/3-2-ofp_flow_mod.packet.json82
-rw-r--r--tests/unit/ofproto/json/of12/3-20-ofp_role_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/3-21-ofp_group_mod.packet.json27
-rw-r--r--tests/unit/ofproto/json/of12/3-22-ofp_port_mod.packet.json9
-rw-r--r--tests/unit/ofproto/json/of12/3-23-ofp_table_mod.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/3-24-ofp_desc_stats_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/3-25-ofp_aggregate_stats_request.packet.json17
-rw-r--r--tests/unit/ofproto/json/of12/3-26-ofp_aggregate_stats_reply.packet.json13
-rw-r--r--tests/unit/ofproto/json/of12/3-27-ofp_table_stats_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/3-28-ofp_table_stats_reply.packet.json5108
-rw-r--r--tests/unit/ofproto/json/of12/3-29-ofp_port_stats_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/3-3-ofp_flow_mod.packet.json46
-rw-r--r--tests/unit/ofproto/json/of12/3-30-ofp_port_stats_reply.packet.json42
-rw-r--r--tests/unit/ofproto/json/of12/3-31-ofp_group_features_stats_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/3-32-ofp_group_features_stats_reply.packet.json25
-rw-r--r--tests/unit/ofproto/json/of12/3-33-ofp_group_desc_stats_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/3-34-ofp_group_desc_stats_reply.packet.json35
-rw-r--r--tests/unit/ofproto/json/of12/3-35-ofp_queue_get_config_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/3-36-ofp_queue_get_config_reply.packet.json53
-rw-r--r--tests/unit/ofproto/json/of12/3-37-ofp_queue_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of12/3-38-ofp_queue_stats_reply.packet.json35
-rw-r--r--tests/unit/ofproto/json/of12/3-39-ofp_port_status.packet.json20
-rw-r--r--tests/unit/ofproto/json/of12/3-4-ofp_packet_in.packet.json80
-rw-r--r--tests/unit/ofproto/json/of12/3-40-ofp_flow_removed.packet.json29
-rw-r--r--tests/unit/ofproto/json/of12/3-41-ofp_error_msg_experimenter.packet.json8
-rw-r--r--tests/unit/ofproto/json/of12/3-5-ofp_features_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of12/3-59-ofp_packet_in.packet.json262
-rw-r--r--tests/unit/ofproto/json/of12/3-6-ofp_features_reply.packet.json40
-rw-r--r--tests/unit/ofproto/json/of12/3-60-ofp_flow_mod.packet.json269
-rw-r--r--tests/unit/ofproto/json/of12/3-61-ofp_group_stats_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/3-62-ofp_group_stats_reply.packet.json25
-rw-r--r--tests/unit/ofproto/json/of12/3-7-ofp_set_config.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/3-8-ofp_get_config_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of12/3-9-ofp_get_config_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/lib-ofctl-ofp_group_stats_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/lib-ofctl-ofp_port_stats_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json7
-rw-r--r--tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json7
-rw-r--r--tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json7
-rw-r--r--tests/unit/ofproto/json/of12/libofproto-OFP12-ofp_packet_out_packet_library.packet.json61
-rw-r--r--tests/unit/ofproto/json/of13/4-0-ofp_desc_reply.packet.json15
-rw-r--r--tests/unit/ofproto/json/of13/4-1-ofp_packet_out.packet.json18
-rw-r--r--tests/unit/ofproto/json/of13/4-10-ofp_hello.packet.json20
-rw-r--r--tests/unit/ofproto/json/of13/4-11-ofp_flow_stats_request.packet.json18
-rw-r--r--tests/unit/ofproto/json/of13/4-12-ofp_flow_stats_reply.packet.json343
-rw-r--r--tests/unit/ofproto/json/of13/4-13-ofp_echo_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of13/4-14-ofp_echo_reply.packet.json5
-rw-r--r--tests/unit/ofproto/json/of13/4-15-ofp_error_msg.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/4-16-ofp_experimenter.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/4-17-ofp_barrier_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of13/4-18-ofp_barrier_reply.packet.json3
-rw-r--r--tests/unit/ofproto/json/of13/4-19-ofp_role_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-2-ofp_flow_mod.packet.json201
-rw-r--r--tests/unit/ofproto/json/of13/4-20-ofp_role_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-21-ofp_group_mod.packet.json27
-rw-r--r--tests/unit/ofproto/json/of13/4-22-ofp_port_mod.packet.json9
-rw-r--r--tests/unit/ofproto/json/of13/4-23-ofp_table_mod.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-24-ofp_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-25-ofp_aggregate_stats_request.packet.json18
-rw-r--r--tests/unit/ofproto/json/of13/4-26-ofp_aggregate_stats_reply.packet.json13
-rw-r--r--tests/unit/ofproto/json/of13/4-27-ofp_table_stats_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-28-ofp_table_stats_reply.packet.json24
-rw-r--r--tests/unit/ofproto/json/of13/4-29-ofp_port_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/4-3-ofp_flow_mod.packet.json46
-rw-r--r--tests/unit/ofproto/json/of13/4-30-ofp_port_stats_reply.packet.json46
-rw-r--r--tests/unit/ofproto/json/of13/4-31-ofp_group_features_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-32-ofp_group_features_reply.packet.json24
-rw-r--r--tests/unit/ofproto/json/of13/4-33-ofp_group_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-34-ofp_group_desc_reply.packet.json35
-rw-r--r--tests/unit/ofproto/json/of13/4-35-ofp_queue_get_config_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of13/4-36-ofp_queue_get_config_reply.packet.json105
-rw-r--r--tests/unit/ofproto/json/of13/4-37-ofp_queue_stats_request.packet.json8
-rw-r--r--tests/unit/ofproto/json/of13/4-38-ofp_queue_stats_reply.packet.json41
-rw-r--r--tests/unit/ofproto/json/of13/4-39-ofp_port_status.packet.json20
-rw-r--r--tests/unit/ofproto/json/of13/4-4-ofp_packet_in.packet.json81
-rw-r--r--tests/unit/ofproto/json/of13/4-40-ofp_flow_removed.packet.json29
-rw-r--r--tests/unit/ofproto/json/of13/4-41-ofp_error_msg_experimenter.packet.json8
-rw-r--r--tests/unit/ofproto/json/of13/4-42-ofp_get_async_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of13/4-43-ofp_get_async_reply.packet.json16
-rw-r--r--tests/unit/ofproto/json/of13/4-44-ofp_set_async.packet.json16
-rw-r--r--tests/unit/ofproto/json/of13/4-45-ofp_meter_mod.packet.json35
-rw-r--r--tests/unit/ofproto/json/of13/4-46-ofp_flow_mod.packet.json55
-rw-r--r--tests/unit/ofproto/json/of13/4-47-ofp_meter_config_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/4-48-ofp_meter_config_reply.packet.json25
-rw-r--r--tests/unit/ofproto/json/of13/4-49-ofp_meter_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/4-5-ofp_features_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of13/4-50-ofp_meter_stats_reply.packet.json27
-rw-r--r--tests/unit/ofproto/json/of13/4-51-ofp_meter_features_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-52-ofp_meter_features_reply.packet.json17
-rw-r--r--tests/unit/ofproto/json/of13/4-53-ofp_port_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-54-ofp_port_desc_reply.packet.json38
-rw-r--r--tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json15945
-rw-r--r--tests/unit/ofproto/json/of13/4-56-ofp_table_features_reply.packet.json15945
-rw-r--r--tests/unit/ofproto/json/of13/4-57-ofp_group_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/4-58-ofp_group_stats_reply.packet.json27
-rw-r--r--tests/unit/ofproto/json/of13/4-59-ofp_packet_in.packet.json312
-rw-r--r--tests/unit/ofproto/json/of13/4-6-ofp_features_reply.packet.json9
-rw-r--r--tests/unit/ofproto/json/of13/4-60-ofp_flow_mod.packet.json318
-rw-r--r--tests/unit/ofproto/json/of13/4-61-ofp_experimenter_request.packet.json9
-rw-r--r--tests/unit/ofproto/json/of13/4-62-ofp_experimenter_reply.packet.json13
-rw-r--r--tests/unit/ofproto/json/of13/4-63-onf_flow_monitor_request.packet.json337
-rw-r--r--tests/unit/ofproto/json/of13/4-7-ofp_set_config.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/4-8-ofp_get_config_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of13/4-9-ofp_get_config_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_group_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_config_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_port_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json8
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json8
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json8
-rw-r--r--tests/unit/ofproto/json/of13/lib-ofctl-ofp_table_features_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-echo_reply.packet.json5
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-echo_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-error_msg.packet.json7
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-features_reply.packet.json9
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.json192
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.truncated64.json33
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_conjunction.packet.json100
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_match_conj.packet.json66
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-flow_removed.packet.json78
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-get_config_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-hello.packet.json15
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-meter_mod.packet.json26
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-ofp_packet_out_packet_library.packet.json61
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-packet_in.packet.json46
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-port_mod.packet.json9
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-port_status.packet.json20
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-set_config.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/libofproto-OFP13-table_mod.packet.json6
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_conjunction.packet.json100
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller.packet.json43
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller2.packet.json51
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json61
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json75
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json70
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json70
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_dec_ttl_cnt_ids.packet.json62
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_fintimeout.packet.json57
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_learn.packet.json192
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_note.packet.json48
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_output_trunc.packet.json42
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_resubmit.packet.json99
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample.packet.json44
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample2.packet.json45
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_pop.packet.json43
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_push.packet.json43
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_conj.packet.json60
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json58
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_move_nx_register.packet.json60
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark.packet.json60
-rw-r--r--tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark_masked.packet.json60
-rw-r--r--tests/unit/ofproto/json/of14/5-0-ofp_desc_reply.packet.json15
-rw-r--r--tests/unit/ofproto/json/of14/5-1-ofp_packet_out.packet.json18
-rw-r--r--tests/unit/ofproto/json/of14/5-10-ofp_hello.packet.json20
-rw-r--r--tests/unit/ofproto/json/of14/5-11-ofp_flow_stats_request.packet.json18
-rw-r--r--tests/unit/ofproto/json/of14/5-12-ofp_flow_stats_reply.packet.json347
-rw-r--r--tests/unit/ofproto/json/of14/5-13-ofp_echo_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of14/5-14-ofp_echo_reply.packet.json5
-rw-r--r--tests/unit/ofproto/json/of14/5-15-ofp_error_msg.packet.json7
-rw-r--r--tests/unit/ofproto/json/of14/5-16-ofp_experimenter.packet.json7
-rw-r--r--tests/unit/ofproto/json/of14/5-17-ofp_barrier_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of14/5-18-ofp_barrier_reply.packet.json3
-rw-r--r--tests/unit/ofproto/json/of14/5-19-ofp_role_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-2-ofp_flow_mod.packet.json202
-rw-r--r--tests/unit/ofproto/json/of14/5-20-ofp_role_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-21-ofp_group_mod.packet.json27
-rw-r--r--tests/unit/ofproto/json/of14/5-22-ofp_port_mod.packet.json60
-rw-r--r--tests/unit/ofproto/json/of14/5-23-ofp_table_mod.packet.json56
-rw-r--r--tests/unit/ofproto/json/of14/5-24-ofp_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-25-ofp_aggregate_stats_request.packet.json18
-rw-r--r--tests/unit/ofproto/json/of14/5-26-ofp_aggregate_stats_reply.packet.json13
-rw-r--r--tests/unit/ofproto/json/of14/5-27-ofp_table_stats_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-28-ofp_table_stats_reply.packet.json24
-rw-r--r--tests/unit/ofproto/json/of14/5-29-ofp_port_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of14/5-3-ofp_flow_mod.packet.json47
-rw-r--r--tests/unit/ofproto/json/of14/5-30-ofp_port_stats_reply.packet.json113
-rw-r--r--tests/unit/ofproto/json/of14/5-31-ofp_group_features_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-32-ofp_group_features_reply.packet.json24
-rw-r--r--tests/unit/ofproto/json/of14/5-33-ofp_group_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-34-ofp_group_desc_reply.packet.json35
-rw-r--r--tests/unit/ofproto/json/of14/5-35-ofp_queue_stats_request.packet.json8
-rw-r--r--tests/unit/ofproto/json/of14/5-36-ofp_queue_stats_reply.packet.json80
-rw-r--r--tests/unit/ofproto/json/of14/5-37-ofp_port_status.packet.json76
-rw-r--r--tests/unit/ofproto/json/of14/5-38-ofp_flow_removed.packet.json29
-rw-r--r--tests/unit/ofproto/json/of14/5-39-ofp_error_msg_experimenter.packet.json8
-rw-r--r--tests/unit/ofproto/json/of14/5-4-ofp_packet_in.packet.json81
-rw-r--r--tests/unit/ofproto/json/of14/5-40-ofp_get_async_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of14/5-41-ofp_get_async_reply.packet.json122
-rw-r--r--tests/unit/ofproto/json/of14/5-42-ofp_set_async.packet.json122
-rw-r--r--tests/unit/ofproto/json/of14/5-43-ofp_meter_mod.packet.json35
-rw-r--r--tests/unit/ofproto/json/of14/5-44-ofp_flow_mod.packet.json56
-rw-r--r--tests/unit/ofproto/json/of14/5-45-ofp_meter_config_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of14/5-46-ofp_meter_config_reply.packet.json25
-rw-r--r--tests/unit/ofproto/json/of14/5-47-ofp_meter_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of14/5-48-ofp_meter_stats_reply.packet.json27
-rw-r--r--tests/unit/ofproto/json/of14/5-49-ofp_meter_features_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-5-ofp_features_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of14/5-50-ofp_meter_features_reply.packet.json17
-rw-r--r--tests/unit/ofproto/json/of14/5-51-ofp_port_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-52-ofp_port_desc_reply.packet.json103
-rw-r--r--tests/unit/ofproto/json/of14/5-53-ofp_table_features_request.packet.json15945
-rw-r--r--tests/unit/ofproto/json/of14/5-54-ofp_table_features_reply.packet.json15945
-rw-r--r--tests/unit/ofproto/json/of14/5-55-ofp_group_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of14/5-56-ofp_group_stats_reply.packet.json27
-rw-r--r--tests/unit/ofproto/json/of14/5-57-ofp_packet_in.packet.json298
-rw-r--r--tests/unit/ofproto/json/of14/5-58-ofp_flow_mod.packet.json305
-rw-r--r--tests/unit/ofproto/json/of14/5-59-ofp_experimenter_request.packet.json9
-rw-r--r--tests/unit/ofproto/json/of14/5-6-ofp_features_reply.packet.json9
-rw-r--r--tests/unit/ofproto/json/of14/5-60-ofp_experimenter_reply.packet.json13
-rw-r--r--tests/unit/ofproto/json/of14/5-61-ofp_table_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-62-ofp_table_desc_reply.packet.json83
-rw-r--r--tests/unit/ofproto/json/of14/5-63-ofp_queue_desc_request.packet.json8
-rw-r--r--tests/unit/ofproto/json/of14/5-64-ofp_queue_desc_reply.packet.json81
-rw-r--r--tests/unit/ofproto/json/of14/5-65-ofp_role_status.packet.json41
-rw-r--r--tests/unit/ofproto/json/of14/5-66-ofp_flow_monitor_request.packet.json27
-rw-r--r--tests/unit/ofproto/json/of14/5-67-ofp_flow_monitor_reply.packet.json66
-rw-r--r--tests/unit/ofproto/json/of14/5-68-ofp_table_status.packet.json62
-rw-r--r--tests/unit/ofproto/json/of14/5-69-ofp_bundle_ctrl_msg.packet.json41
-rw-r--r--tests/unit/ofproto/json/of14/5-7-ofp_set_config.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/5-70-ofp_bundle_add_msg.packet.json45
-rw-r--r--tests/unit/ofproto/json/of14/5-71-ofp_requestforward.packet.json31
-rw-r--r--tests/unit/ofproto/json/of14/5-8-ofp_get_config_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of14/5-9-ofp_get_config_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of14/lib-ofctl-ofp_table_features_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of14/libofproto-OFP14-ofp_packet_out_packet_library.packet.json61
-rw-r--r--tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json105
-rw-r--r--tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json26
-rw-r--r--tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_mod.packet.json234
-rw-r--r--tests/unit/ofproto/json/of15/lib-ofctl-ofp_queue_stats_request.packet.json8
-rw-r--r--tests/unit/ofproto/json/of15/lib-ofctl-ofp_table_features_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json24
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json18
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json3
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_add.packet.json200
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_ctrl.packet.json8
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_reply.packet.json43
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_request.packet.json39
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status.packet.json22
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_reply.packet.json26
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json15
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json5
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json5
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json8
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json13
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json9
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json9
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_reply.packet.json57
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_request.packet.json26
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod.packet.json193
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_conjunction.packet.json101
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_match_conj.packet.json67
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json202
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json66
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json27
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_removed.packet.json38
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_reply.packet.json44
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json18
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json122
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json3
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_reply.packet.json45
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json24
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-group_mod.packet.json63
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json27
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json15
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json25
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json18
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json26
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json27
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-packet_in.packet.json46
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-packet_out.packet.json32
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json103
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json60
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json113
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json76
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json81
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_request.packet.json8
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json80
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json8
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json67
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-role_reply.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-role_request.packet.json7
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json8
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json122
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json83
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_reply.packet.json38
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_request.packet.json38
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json15
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json24
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json6
-rw-r--r--tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json62
-rw-r--r--tests/unit/ofproto/test_ether.py37
-rw-r--r--tests/unit/ofproto/test_inet.py43
-rw-r--r--tests/unit/ofproto/test_nx_flow_spec.py95
-rw-r--r--tests/unit/ofproto/test_ofproto.py81
-rw-r--r--tests/unit/ofproto/test_ofproto_common.py37
-rw-r--r--tests/unit/ofproto/test_ofproto_parser.py244
-rw-r--r--tests/unit/ofproto/test_ofproto_v12.py717
-rw-r--r--tests/unit/ofproto/test_oxm.py188
-rw-r--r--tests/unit/ofproto/test_oxs.py116
-rw-r--r--tests/unit/ofproto/test_parser.py312
-rw-r--r--tests/unit/ofproto/test_parser_compat.py159
-rw-r--r--tests/unit/ofproto/test_parser_ofpmatch.py292
-rw-r--r--tests/unit/ofproto/test_parser_ofpstats.py208
-rw-r--r--tests/unit/ofproto/test_parser_v10.py5556
-rw-r--r--tests/unit/ofproto/test_parser_v12.py7560
-rw-r--r--tests/unit/ofproto/test_parser_v13.py164
-rw-r--r--tests/unit/packet/__init__.py0
-rw-r--r--tests/unit/packet/test_arp.py183
-rw-r--r--tests/unit/packet/test_bfd.py320
-rw-r--r--tests/unit/packet/test_bgp.py813
-rw-r--r--tests/unit/packet/test_bmp.py136
-rw-r--r--tests/unit/packet/test_bpdu.py469
-rw-r--r--tests/unit/packet/test_cfm.py1761
-rw-r--r--tests/unit/packet/test_dhcp.py218
-rw-r--r--tests/unit/packet/test_ethernet.py103
-rw-r--r--tests/unit/packet/test_geneve.py62
-rw-r--r--tests/unit/packet/test_gre.py115
-rw-r--r--tests/unit/packet/test_icmp.py380
-rw-r--r--tests/unit/packet/test_icmpv6.py2039
-rw-r--r--tests/unit/packet/test_igmp.py997
-rw-r--r--tests/unit/packet/test_ipv4.py137
-rw-r--r--tests/unit/packet/test_ipv6.py1128
-rw-r--r--tests/unit/packet/test_llc.py42
-rw-r--r--tests/unit/packet/test_lldp.py533
-rw-r--r--tests/unit/packet/test_mpls.py92
-rw-r--r--tests/unit/packet/test_openflow.py64
-rw-r--r--tests/unit/packet/test_ospf.py120
-rw-r--r--tests/unit/packet/test_packet.py1553
-rw-r--r--tests/unit/packet/test_pbb.py172
-rw-r--r--tests/unit/packet/test_sctp.py1454
-rw-r--r--tests/unit/packet/test_slow.py1104
-rw-r--r--tests/unit/packet/test_tcp.py267
-rw-r--r--tests/unit/packet/test_udp.py110
-rw-r--r--tests/unit/packet/test_vlan.py265
-rw-r--r--tests/unit/packet/test_vrrp.py496
-rw-r--r--tests/unit/packet/test_vxlan.py82
-rw-r--r--tests/unit/packet/test_zebra.py66
-rw-r--r--tests/unit/sample/__init__.py0
-rw-r--r--tests/unit/sample/test_sample1.py20
-rw-r--r--tests/unit/sample/test_sample2.py14
-rw-r--r--tests/unit/services/__init__.py0
-rw-r--r--tests/unit/services/protocols/__init__.py0
-rw-r--r--tests/unit/services/protocols/bgp/__init__.py0
-rw-r--r--tests/unit/services/protocols/bgp/core_managers/__init__.py0
-rw-r--r--tests/unit/services/protocols/bgp/core_managers/test_table_manager.py937
-rw-r--r--tests/unit/services/protocols/bgp/test_bgpspeaker.py1088
-rw-r--r--tests/unit/services/protocols/bgp/test_peer.py375
-rw-r--r--tests/unit/services/protocols/bgp/utils/__init__.py0
-rw-r--r--tests/unit/services/protocols/bgp/utils/test_bgp.py211
-rw-r--r--tests/unit/services/protocols/bgp/utils/test_validation.py215
-rw-r--r--tests/unit/test_requirements.py85
-rw-r--r--tests/unit/test_utils.py84
557 files changed, 0 insertions, 182753 deletions
diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py
deleted file mode 100644
index de6e5a33..00000000
--- a/tests/unit/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from __future__ import absolute_import
-
-# Note: The following import statement is defined in order to resolve
-# the conflict of the module names between 'ryu.lib.ovs' and 'ovs'.
-# The latter is the official Python package of Open vSwitch.
-import ovs
diff --git a/tests/unit/app/__init__.py b/tests/unit/app/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/app/__init__.py
+++ /dev/null
diff --git a/tests/unit/app/ofctl_rest_json/of10.json b/tests/unit/app/ofctl_rest_json/of10.json
deleted file mode 100644
index 266eb80c..00000000
--- a/tests/unit/app/ofctl_rest_json/of10.json
+++ /dev/null
@@ -1,101 +0,0 @@
-[
- {
- "method": "GET",
- "path": "/stats/switches"
- },
- {
- "method": "GET",
- "path": "/stats/desc/1"
- },
- {
- "method": "GET",
- "path": "/stats/flow/1"
- },
- {
- "method": "POST",
- "path": "/stats/flow/1"
- },
- {
- "method": "GET",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "POST",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/portdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/table/1"
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "DELETE",
- "path": "/stats/flowentry/clear/1"
- },
- {
- "method": "POST",
- "path": "/stats/portdesc/modify",
- "body": {
- "dpid": 1,
- "port_no": 1
- }
- }
-]
diff --git a/tests/unit/app/ofctl_rest_json/of12.json b/tests/unit/app/ofctl_rest_json/of12.json
deleted file mode 100644
index 89a81919..00000000
--- a/tests/unit/app/ofctl_rest_json/of12.json
+++ /dev/null
@@ -1,150 +0,0 @@
-[
- {
- "method": "GET",
- "path": "/stats/switches"
- },
- {
- "method": "GET",
- "path": "/stats/desc/1"
- },
- {
- "method": "GET",
- "path": "/stats/flow/1"
- },
- {
- "method": "POST",
- "path": "/stats/flow/1"
- },
- {
- "method": "GET",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "POST",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/portdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queueconfig/1"
- },
- {
- "method": "GET",
- "path": "/stats/queueconfig/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupfeatures/1"
- },
- {
- "method": "GET",
- "path": "/stats/table/1"
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "DELETE",
- "path": "/stats/flowentry/clear/1"
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/portdesc/modify",
- "body": {
- "dpid": 1,
- "port_no": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/experimenter/1"
- }
-]
diff --git a/tests/unit/app/ofctl_rest_json/of13.json b/tests/unit/app/ofctl_rest_json/of13.json
deleted file mode 100644
index d515f628..00000000
--- a/tests/unit/app/ofctl_rest_json/of13.json
+++ /dev/null
@@ -1,191 +0,0 @@
-[
- {
- "method": "GET",
- "path": "/stats/switches"
- },
- {
- "method": "GET",
- "path": "/stats/desc/1"
- },
- {
- "method": "GET",
- "path": "/stats/flow/1"
- },
- {
- "method": "POST",
- "path": "/stats/flow/1"
- },
- {
- "method": "GET",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "POST",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/portdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queueconfig/1"
- },
- {
- "method": "GET",
- "path": "/stats/queueconfig/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupfeatures/1"
- },
- {
- "method": "GET",
- "path": "/stats/meter/1"
- },
- {
- "method": "GET",
- "path": "/stats/meter/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterconfig/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterconfig/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterfeatures/1"
- },
- {
- "method": "GET",
- "path": "/stats/table/1"
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "DELETE",
- "path": "/stats/flowentry/clear/1"
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/portdesc/modify",
- "body": {
- "dpid": 1,
- "port_no": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/experimenter/1"
- }
-]
diff --git a/tests/unit/app/ofctl_rest_json/of14.json b/tests/unit/app/ofctl_rest_json/of14.json
deleted file mode 100644
index 0cc4eb6c..00000000
--- a/tests/unit/app/ofctl_rest_json/of14.json
+++ /dev/null
@@ -1,195 +0,0 @@
-[
- {
- "method": "GET",
- "path": "/stats/switches"
- },
- {
- "method": "GET",
- "path": "/stats/desc/1"
- },
- {
- "method": "GET",
- "path": "/stats/flow/1"
- },
- {
- "method": "POST",
- "path": "/stats/flow/1"
- },
- {
- "method": "GET",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "POST",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/portdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queuedesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/queuedesc/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queuedesc/1/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupfeatures/1"
- },
- {
- "method": "GET",
- "path": "/stats/meter/1"
- },
- {
- "method": "GET",
- "path": "/stats/meter/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterconfig/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterconfig/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterfeatures/1"
- },
- {
- "method": "GET",
- "path": "/stats/table/1"
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "DELETE",
- "path": "/stats/flowentry/clear/1"
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/portdesc/modify",
- "body": {
- "dpid": 1,
- "port_no": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/experimenter/1"
- }
-]
diff --git a/tests/unit/app/ofctl_rest_json/of15.json b/tests/unit/app/ofctl_rest_json/of15.json
deleted file mode 100644
index a7569223..00000000
--- a/tests/unit/app/ofctl_rest_json/of15.json
+++ /dev/null
@@ -1,203 +0,0 @@
-[
- {
- "method": "GET",
- "path": "/stats/switches"
- },
- {
- "method": "GET",
- "path": "/stats/desc/1"
- },
- {
- "method": "GET",
- "path": "/stats/flow/1"
- },
- {
- "method": "POST",
- "path": "/stats/flow/1"
- },
- {
- "method": "GET",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "POST",
- "path": "/stats/aggregateflow/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1"
- },
- {
- "method": "GET",
- "path": "/stats/port/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/portdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/portdesc/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queue/1/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queuedesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/queuedesc/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/queuedesc/1/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1"
- },
- {
- "method": "GET",
- "path": "/stats/group/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupdesc/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/groupfeatures/1"
- },
- {
- "method": "GET",
- "path": "/stats/meter/1"
- },
- {
- "method": "GET",
- "path": "/stats/meter/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterdesc/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterdesc/1/1"
- },
- {
- "method": "GET",
- "path": "/stats/meterfeatures/1"
- },
- {
- "method": "GET",
- "path": "/stats/table/1"
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/modify_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/flowentry/delete_strict",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "DELETE",
- "path": "/stats/flowentry/clear/1"
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/groupentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/portdesc/modify",
- "body": {
- "dpid": 1,
- "port_no": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/add",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/modify",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/meterentry/delete",
- "body": {
- "dpid": 1
- }
- },
- {
- "method": "POST",
- "path": "/stats/experimenter/1"
- }
-]
diff --git a/tests/unit/app/test_ofctl_rest.py b/tests/unit/app/test_ofctl_rest.py
deleted file mode 100644
index 5ed70ec4..00000000
--- a/tests/unit/app/test_ofctl_rest.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import functools
-import json
-import logging
-import os
-import sys
-import unittest
-try:
- import mock # Python 2
-except ImportError:
- from unittest import mock # Python 3
-from nose.tools import eq_
-
-from ryu.app import ofctl_rest
-from ryu.app.wsgi import Request
-from ryu.app.wsgi import WSGIApplication
-from ryu.controller.dpset import DPSet
-from ryu.ofproto import ofproto_protocol
-from ryu.ofproto import ofproto_v1_0
-from ryu.ofproto import ofproto_v1_2
-from ryu.ofproto import ofproto_v1_3
-from ryu.ofproto import ofproto_v1_4
-from ryu.ofproto import ofproto_v1_5
-
-from tests import test_lib
-
-
-LOG = logging.getLogger(__name__)
-
-
-class DummyDatapath(ofproto_protocol.ProtocolDesc):
-
- def __init__(self, version):
- super(DummyDatapath, self).__init__(version)
- self.id = 1
- _kw = {'port_no': 1, 'hw_addr': 'aa:bb:cc:dd:ee:ff',
- 'name': 's1-eth1', 'config': 1, 'state': 1}
- # for OpenFlow 1.0
- if version in [ofproto_v1_0.OFP_VERSION]:
- _kw.update(
- {'curr': 2112, 'advertised': 0, 'supported': 0, 'peer': 0})
- port_info = self.ofproto_parser.OFPPhyPort(**_kw)
- # for OpenFlow 1.2 or 1.3
- elif version in [ofproto_v1_2.OFP_VERSION, ofproto_v1_3.OFP_VERSION]:
- _kw.update(
- {'curr': 2112, 'advertised': 0, 'supported': 0, 'peer': 0,
- 'curr_speed': 10000000, 'max_speed': 0})
- port_info = self.ofproto_parser.OFPPort(**_kw)
- # for OpenFlow 1.4+
- else:
- _kw.update({'properties': []})
- port_info = self.ofproto_parser.OFPPort(**_kw)
- self.ports = {1: port_info}
-
-
-class Test_ofctl_rest(unittest.TestCase):
-
- def _test(self, name, dp, method, path, body):
- # print('processing %s ...' % name)
-
- dpset = DPSet()
- dpset._register(dp)
- wsgi = WSGIApplication()
- contexts = {
- 'dpset': dpset,
- 'wsgi': wsgi,
- }
- ofctl_rest.RestStatsApi(**contexts)
-
- req = Request.blank(path)
- req.body = json.dumps(body).encode('utf-8')
- req.method = method
-
- with mock.patch('ryu.lib.ofctl_utils.send_stats_request'),\
- mock.patch('ryu.lib.ofctl_utils.send_msg'):
- res = req.get_response(wsgi)
- eq_(res.status, '200 OK')
-
-
-def _add_tests():
- _ofp_vers = {
- 'of10': ofproto_v1_0.OFP_VERSION,
- 'of12': ofproto_v1_2.OFP_VERSION,
- 'of13': ofproto_v1_3.OFP_VERSION,
- 'of14': ofproto_v1_4.OFP_VERSION,
- 'of15': ofproto_v1_5.OFP_VERSION,
- }
-
- this_dir = os.path.dirname(sys.modules[__name__].__file__)
- ofctl_rest_json_dir = os.path.join(this_dir, 'ofctl_rest_json/')
-
- for ofp_ver in _ofp_vers:
- # read a json file
- json_path = os.path.join(ofctl_rest_json_dir, ofp_ver + '.json')
- if os.path.exists(json_path):
- _test_cases = json.load(open(json_path))
- else:
- # print("Skip to load test cases for %s" % ofp_ver)
- continue
-
- # add test
- for test in _test_cases:
- method = test['method']
- path = test['path']
- body = test.get('body', {})
-
- name = 'test_ofctl_rest_' + method + '_' + ofp_ver + '_' + path
- # print('adding %s ...' % name)
- f = functools.partial(
- Test_ofctl_rest._test,
- name=name,
- dp=DummyDatapath(_ofp_vers[ofp_ver]),
- method=test['method'],
- path=test['path'],
- body=body
- )
- test_lib.add_method(Test_ofctl_rest, name, f)
-
-_add_tests()
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/unit/app/test_tester.py b/tests/unit/app/test_tester.py
deleted file mode 100644
index 64657f9e..00000000
--- a/tests/unit/app/test_tester.py
+++ /dev/null
@@ -1,464 +0,0 @@
-# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-from nose.tools import *
-
-import binascii
-import inspect
-import json
-import logging
-import math
-import netaddr
-import os
-import signal
-import sys
-import time
-import traceback
-from random import randint
-
-from ryu import cfg
-
-# import all packet libraries.
-PKT_LIB_PATH = 'ryu.lib.packet'
-for modname, moddef in sys.modules.items():
- if not modname.startswith(PKT_LIB_PATH) or not moddef:
- continue
- for (clsname, clsdef, ) in inspect.getmembers(moddef):
- if not inspect.isclass(clsdef):
- continue
- exec('from %s import %s' % (modname, clsname))
-
-from ryu.base import app_manager
-from ryu.controller import handler
-from ryu.controller import ofp_event
-from ryu.controller.handler import set_ev_cls
-from ryu.exception import RyuException
-from ryu.lib import dpid as dpid_lib
-from ryu.lib import hub
-from ryu.lib import stringify
-from ryu.lib.packet import packet
-from ryu.ofproto import ofproto_protocol
-from ryu.ofproto import ofproto_v1_3
-from ryu.ofproto import ofproto_v1_3_parser
-from ryu.ofproto import ofproto_v1_4
-
-from ryu.tests.switch.tester import TestPatterns
-from ryu.tests.switch.tester import TestFile
-from ryu.tests.switch.tester import OfTester
-
-CONF = cfg.CONF
-
-LOG = logging.getLogger('test_tester')
-
-SAMPLE_DESC = "action: 00_OUTPUT"
-
-
-class Test_tester(unittest.TestCase):
-
- """ Test case for tester
- """
-
- # action/00_OUTPUT.json
-
- test_json_1 = {
- "description": "ethernet/ipv4/tcp-->'actions=output:2'",
- "prerequisite": [
- {
- "OFPFlowMod": {
- "table_id": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "port": "target_send_port_1"
- }
- }
- ],
- "type": 4
- }
- }
- ]
- }
- }
- ],
- "tests": [
- {
- "ingress": [
- "ethernet(dst='22:22:22:22:22:22', \
- src='12:11:11:11:11:11', ethertype=2048)",
- "ipv4(tos=32, proto=6, src='192.168.10.10', \
- dst='192.168.20.20', ttl=64)",
- "tcp(dst_port=2222, option=str('\\x00' * 4), \
- src_port=11111)",
- "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x0\
- 8\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x1\
- 2\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1\
- b\\x1c\\x1d\\x1e\\x1f'"
- ],
- "egress":[
- "ethernet(dst='22:22:22:22:22:22', \
- src='12:11:11:11:11:11', ethertype=2048)",
- "ipv4(tos=32, proto=6, src='192.168.10.10', \
- dst='192.168.20.20', ttl=64)",
- "tcp(dst_port=2222, option=str('\\x00' * 4), \
- src_port=11111)",
- "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x0\
- 8\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x1\
- 2\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1\
- b\\x1c\\x1d\\x1e\\x1f'"
- ]
-
- }
- ]
- }
-
- # group/00_ALL.json
-
- test_json_2 = {
- "description": "2Mbps(ethernet/ipv4/tcp)-->'in_port=1,\
- actions=group:all(actions=output:2/actions=output:3)'",
- "prerequisite": [
- {
- "OFPGroupMod": {
- "group_id": 0,
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "port": "target_send_port_1"
- }
- }
- ]
- }
- },
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "port": "target_send_port_2"
- }
- }
- ]
- }
- }
- ]
- }
- },
- {
- "OFPFlowMod": {
- "match": {
- "OFPMatch": {
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "value": "target_recv_port"
- }
- }
- ]
- }
- },
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionGroup": {
- "group_id": 0
- }
- }
- ],
- "type": 4
- }
- }
- ]
- }
- }
- ],
- "tests": [
- {
- "ingress": {
- "packets": {
- "data": [
- "ethernet(dst='22:22:22:22:22:22', \
- src='12:11:11:11:11:11', ethertype=2048)",
- "ipv4(proto=6)",
- "tcp()",
- "str('\\x11' * (1500 - 54))"
- ],
- "pktps":175,
- "duration_time":30
- }
- },
- "egress":{
- "throughput": [
- {
- "OFPMatch": {
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "value": "tester_recv_port_1"
- }
- }
- ]
- },
- "kbps": 2000
- },
- {
- "OFPMatch": {
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "value": "tester_recv_port_2"
- }
- }
- ]
- },
- "kbps": 2000
- }
- ]
- }
- }
- ]
- }
-
- # match/00_IN_PORT.json
-
- test_json_3 = {
- "description": "ethernet/ipv4/tcp-->'in_port=1,actions=output:2'",
- "prerequisite": [
- {
- "OFPFlowMod": {
- "table_id": 0,
- "match": {
- "OFPMatch": {
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "value": "target_recv_port"
- }
- }
- ]
- }
- },
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "port": "target_send_port_1"
- }
- }
- ],
- "type": 4
- }
- }
- ]
- }
- }
- ],
- "tests": [
- {
- "ingress": [
- "ethernet(dst='22:22:22:22:22:22', \
- src='12:11:11:11:11:11', ethertype=2048)",
- "ipv4(tos=32, proto=6, src='192.168.10.10', \
- dst='192.168.20.20', ttl=64)",
- "tcp(dst_port=2222, option=str('\\x00' * 4), \
- src_port=11111)",
- "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x0\
- 8\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x1\
- 2\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1\
- b\\x1c\\x1d\\x1e\\x1f'"
- ],
- "egress":[
- "ethernet(dst='22:22:22:22:22:22', \
- src='12:11:11:11:11:11', ethertype=2048)",
- "ipv4(tos=32, proto=6, src='192.168.10.10',\
- dst='192.168.20.20', ttl=64)",
- "tcp(dst_port=2222, option=str('\\x00' * 4), \
- src_port=11111)",
- "'\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x0\
- 8\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x1\
- 2\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1\
- b\\x1c\\x1d\\x1e\\x1f'"
- ]
- }
- ]
- }
-
- # meter/01_DROP_00_KBPS_00_1M.json
-
- test_json_4 = {
- "description": "2Mbps(ethernet/ipv4/tcp)-->'in_port=1,\
- actions=meter:1Mbps(drop),output:2'",
- "prerequisite": [
- {
- "OFPMeterMod": {
- "meter_id": 1,
- "bands": [
- {
- "OFPMeterBandDrop": {
- "rate": 1000
- }
- }
- ]
- }
- },
- {
- "OFPFlowMod": {
- "match": {
- "OFPMatch": {
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "value": "target_recv_port"
- }
- }
- ]
- }
- },
- "instructions": [
- {
- "OFPInstructionMeter": {
- "meter_id": 1
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "port": "target_send_port_1"
- }
- }
- ],
- "type": 4
- }
- }
- ]
- }
- }
- ],
- "tests": [
- {
- "ingress": {
- "packets": {
- "data": [
- "ethernet(dst='22:22:22:22:22:22', \
- src='12:11:11:11:11:11', ethertype=2048)",
- "ipv4(proto=6)",
- "tcp()",
- "str('\\x11' * (1500 - 54))"
- ],
- "pktps":175,
- "duration_time":30
- }
- },
- "egress":{
- "throughput": [
- {
- "OFPMatch": {
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "value": "tester_recv_port_1"
- }
-
- }
- ]
- },
- "kbps": 1000
- }
- ]
- }
- }
- ]
- }
-
- def setUp(self):
- OfTester.tester_ver = ofproto_v1_3.OFP_VERSION
- OfTester.target_ver = ofproto_v1_3.OFP_VERSION
-
- def tearDown(self):
- pass
-
- def test__normalize_test_json(self):
- self.tests = TestPatterns(
- "../../ryu/tests/switch/of13/action/00_OUTPUT.json",
- logging.getLogger("test_tester"))
-
- self.tests[SAMPLE_DESC]._normalize_test_json(Test_tester.test_json_1)
- self.tests[SAMPLE_DESC]._normalize_test_json(Test_tester.test_json_2)
- self.tests[SAMPLE_DESC]._normalize_test_json(Test_tester.test_json_3)
- self.tests[SAMPLE_DESC]._normalize_test_json(Test_tester.test_json_4)
-
- # action/00_OUTPUT.json
- eq_(Test_tester.test_json_1["prerequisite"][0]["OFPFlowMod"][
- "instructions"][0]["OFPInstructionActions"][
- "actions"][0]["OFPActionOutput"]["port"],
- CONF['test-switch']['target_send_port_1'])
-
- # group/00_ALL.json
- eq_(Test_tester.test_json_2["prerequisite"][1]["OFPFlowMod"][
- "match"]["OFPMatch"]["oxm_fields"][0]["OXMTlv"]["value"],
- CONF['test-switch']['target_recv_port'])
- eq_(Test_tester.test_json_2["prerequisite"][0]["OFPGroupMod"][
- "buckets"][0]["OFPBucket"]["actions"][0]["OFPActionOutput"][
- "port"], CONF['test-switch']['target_send_port_1'])
- eq_(Test_tester.test_json_2["prerequisite"][0]["OFPGroupMod"][
- "buckets"][1]["OFPBucket"]["actions"][0]["OFPActionOutput"][
- "port"], CONF['test-switch']['target_send_port_2'])
- eq_(Test_tester.test_json_2["tests"][0]["egress"]["throughput"][
- 0]["OFPMatch"]["oxm_fields"][0]["OXMTlv"]["value"],
- CONF['test-switch']['tester_recv_port_1'])
- eq_(Test_tester.test_json_2["tests"][0]["egress"]["throughput"][
- 1]["OFPMatch"]["oxm_fields"][0]["OXMTlv"]["value"],
- CONF['test-switch']['tester_recv_port_2'])
-
- # match/00_IN_PORT.json
- eq_(Test_tester.test_json_3["prerequisite"][0]["OFPFlowMod"][
- "match"]["OFPMatch"]["oxm_fields"][0]["OXMTlv"]["value"],
- CONF['test-switch']['target_recv_port'])
- eq_(Test_tester.test_json_3["prerequisite"][0]["OFPFlowMod"][
- "instructions"][0]["OFPInstructionActions"]["actions"][0][
- "OFPActionOutput"]["port"], CONF['test-switch'][
- 'target_send_port_1'])
-
- # meter/01_DROP_00_KBPS_00_1M.json
- eq_(Test_tester.test_json_4["prerequisite"][1]["OFPFlowMod"][
- "match"]["OFPMatch"]["oxm_fields"][0]["OXMTlv"]["value"],
- CONF['test-switch']['target_recv_port'])
- eq_(Test_tester.test_json_4["prerequisite"][1]["OFPFlowMod"][
- "instructions"][1]["OFPInstructionActions"]["actions"][0][
- "OFPActionOutput"]["port"],
- CONF['test-switch']['target_send_port_1'])
- eq_(Test_tester.test_json_4["tests"][0]["egress"]["throughput"][
- 0]["OFPMatch"]["oxm_fields"][0]["OXMTlv"]["value"],
- CONF['test-switch']['tester_recv_port_1'])
diff --git a/tests/unit/app/test_ws_topology.py b/tests/unit/app/test_ws_topology.py
deleted file mode 100644
index 6eaaa0e5..00000000
--- a/tests/unit/app/test_ws_topology.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2013 Stratosphere Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-from socket import error as SocketError
-
-import mock
-
-from ryu.app.ws_topology import WebSocketTopology
-
-
-class Test_ws_topology(unittest.TestCase):
-
- def test_when_sock_error(self):
- args = {
- 'wsgi': mock.Mock(),
- }
- app = WebSocketTopology(**args)
-
- rpc_client_mock1 = mock.Mock()
- config = {
- 'get_proxy.return_value.event_link_add.side_effect': SocketError,
- }
- rpc_client_mock1.configure_mock(**config)
-
- rpc_client_mock2 = mock.Mock()
-
- app.rpc_clients = [
- rpc_client_mock1,
- rpc_client_mock2,
- ]
-
- ev_mock = mock.Mock()
- app._event_link_add_handler(ev_mock)
-
- rpc_client_mock1.get_proxy.assert_called_once_with()
- rpc_client_mock2.get_proxy.assert_called_once_with()
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/unit/app/test_wsgi.py b/tests/unit/app/test_wsgi.py
deleted file mode 100644
index bec21ddc..00000000
--- a/tests/unit/app/test_wsgi.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright (C) 2013 Stratosphere Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-
-import nose
-from nose.tools import eq_
-
-from ryu.app.wsgi import ControllerBase
-from ryu.app.wsgi import WSGIApplication
-from ryu.app.wsgi import Response
-from ryu.app.wsgi import route
-from ryu.lib import dpid as dpidlib
-
-LOG = logging.getLogger('test_wsgi')
-
-
-class _TestController(ControllerBase):
-
- def __init__(self, req, link, data, **config):
- super(_TestController, self).__init__(req, link, data, **config)
- eq_(data['test_param'], 'foo')
-
- @route('test', '/test/{dpid}',
- methods=['GET'], requirements={'dpid': dpidlib.DPID_PATTERN})
- def test_get_dpid(self, req, dpid, **_kwargs):
- return Response(status=200, body=dpid)
-
- @route('test', '/test')
- def test_root(self, req, **_kwargs):
- return Response(status=200, body='root')
-
-
-class Test_wsgi(unittest.TestCase):
-
- """ Test case for wsgi
- """
-
- def setUp(self):
- controller_data = {
- 'test_param': 'foo'
- }
- self.wsgi_app = WSGIApplication()
- self.wsgi_app.register(_TestController, controller_data)
-
- def tearDown(self):
- pass
-
- def test_wsgi_decorator_ok(self):
- r = self.wsgi_app({'REQUEST_METHOD': 'GET',
- 'PATH_INFO': '/test/0123456789abcdef'},
- lambda s, _: eq_(s, '200 OK'))
- eq_(r[0], (b'0123456789abcdef'))
-
- def test_wsgi_decorator_ng_path(self):
- self.wsgi_app({'REQUEST_METHOD': 'GET',
- 'PATH_INFO': '/'},
- lambda s, _: eq_(s, '404 Not Found'))
-
- def test_wsgi_decorator_ng_method(self):
- # XXX: If response code is "405 Method Not Allowed", it is better.
- self.wsgi_app({'REQUEST_METHOD': 'PUT',
- 'PATH_INFO': '/test/0123456789abcdef'},
- lambda s, _: eq_(s, '404 Not Found'))
-
- def test_wsgi_decorator_ng_requirements(self):
- # XXX: If response code is "400 Bad Request", it is better.
- self.wsgi_app({'REQUEST_METHOD': 'GET',
- 'PATH_INFO': '/test/hogehoge'},
- lambda s, _: eq_(s, '404 Not Found'))
-
- def test_wsgi_decorator_ok_any_method(self):
- self.wsgi_app({'REQUEST_METHOD': 'GET',
- 'PATH_INFO': '/test'},
- lambda s, _: eq_(s, '200 OK'))
- self.wsgi_app({'REQUEST_METHOD': 'POST',
- 'PATH_INFO': '/test'},
- lambda s, _: eq_(s, '200 OK'))
- self.wsgi_app({'REQUEST_METHOD': 'PUT',
- 'PATH_INFO': '/test'},
- lambda s, _: eq_(s, '200 OK'))
- r = self.wsgi_app({'REQUEST_METHOD': 'DELETE',
- 'PATH_INFO': '/test'},
- lambda s, _: eq_(s, '200 OK'))
- eq_(r[0], b'root')
-
-
-if __name__ == '__main__':
- nose.main(argv=['nosetests', '-s', '-v'], defaultTest=__file__)
diff --git a/tests/unit/cmd/__init__.py b/tests/unit/cmd/__init__.py
deleted file mode 100644
index ca8ef539..00000000
--- a/tests/unit/cmd/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/tests/unit/cmd/dummy_app.py b/tests/unit/cmd/dummy_app.py
deleted file mode 100644
index 6c594298..00000000
--- a/tests/unit/cmd/dummy_app.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from ryu.base import app_manager
-
-
-class DummyApp(app_manager.RyuApp):
- pass
diff --git a/tests/unit/cmd/dummy_openflow_app.py b/tests/unit/cmd/dummy_openflow_app.py
deleted file mode 100644
index 614febcd..00000000
--- a/tests/unit/cmd/dummy_openflow_app.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2013,2014 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013,2014 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from ryu.base import app_manager
-from ryu.ofproto import ofproto_v1_3
-
-
-class DummyOpenFlowApp(app_manager.RyuApp):
- OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
diff --git a/tests/unit/cmd/test_manager.py b/tests/unit/cmd/test_manager.py
deleted file mode 100644
index 5127fa52..00000000
--- a/tests/unit/cmd/test_manager.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2013,2014 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013,2014 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import sys
-import unittest
-import mock
-from nose.tools import eq_, raises
-
-try:
- # Python 3
- from imp import reload
-except ImportError:
- # Python 2
- pass
-
-from ryu.cmd.manager import main
-
-
-class Test_Manager(unittest.TestCase):
- """Test ryu-manager command
- """
-
- def __init__(self, methodName):
- super(Test_Manager, self).__init__(methodName)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- @raises(SystemExit)
- @mock.patch('sys.argv', new=['ryu-manager', '--version'])
- def test_version(self):
- main()
-
- @raises(SystemExit)
- @mock.patch('sys.argv', new=['ryu-manager', '--help'])
- def test_help(self):
- main()
-
- @staticmethod
- def _reset_globals():
- # hack to reset globals like SERVICE_BRICKS.
- # assumption: this is the only test which actually starts RyuApp.
- import ryu.base.app_manager
- import ryu.ofproto.ofproto_protocol
-
- reload(ryu.base.app_manager)
- reload(ryu.ofproto.ofproto_protocol)
-
- @mock.patch('sys.argv', new=['ryu-manager', '--verbose',
- 'tests.unit.cmd.dummy_app'])
- def test_no_services(self):
- self._reset_globals()
- main()
- self._reset_globals()
-
- @mock.patch('sys.argv', new=['ryu-manager', '--verbose',
- 'tests.unit.cmd.dummy_openflow_app'])
- def test_openflow_app(self):
- self._reset_globals()
- main()
- self._reset_globals()
diff --git a/tests/unit/controller/__init__.py b/tests/unit/controller/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/controller/__init__.py
+++ /dev/null
diff --git a/tests/unit/controller/test_controller.py b/tests/unit/controller/test_controller.py
deleted file mode 100644
index 27a2bce6..00000000
--- a/tests/unit/controller/test_controller.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2015 Stratosphere Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-try:
- import mock # Python 2
-except ImportError:
- from unittest import mock # Python 3
-
-import json
-import os
-import sys
-import warnings
-import unittest
-import logging
-import random
-
-from ryu.base import app_manager # To suppress cyclic import
-from ryu.controller import controller
-from ryu.controller import handler
-from ryu.ofproto import ofproto_v1_3_parser
-from ryu.ofproto import ofproto_v1_2_parser
-from ryu.ofproto import ofproto_v1_0_parser
-
-
-LOG = logging.getLogger('test_controller')
-
-
-class Test_Datapath(unittest.TestCase):
- """
- Test cases for controller.Datapath
- """
-
- def _test_ports_accessibility(self, ofproto_parser, msgs_len):
- with mock.patch('ryu.controller.controller.Datapath.set_state'):
-
- # Ignore warnings
- with warnings.catch_warnings(record=True) as msgs:
- warnings.simplefilter('always')
-
- # Test target
- sock_mock = mock.Mock()
- addr_mock = mock.Mock()
- dp = controller.Datapath(sock_mock, addr_mock)
- dp.ofproto_parser = ofproto_parser
-
- # Create
- dp.ports = {}
-
- # Update
- port_mock = mock.Mock()
- dp.ports[0] = port_mock
-
- # Read & Delete
- del dp.ports[0]
-
- self.assertEqual(len(msgs), msgs_len)
- for msg in msgs:
- self.assertTrue(issubclass(msg.category, UserWarning))
-
- def test_ports_accessibility_v13(self):
- self._test_ports_accessibility(ofproto_v1_3_parser, 0)
-
- def test_ports_accessibility_v12(self):
- self._test_ports_accessibility(ofproto_v1_2_parser, 0)
-
- def test_ports_accessibility_v10(self):
- self._test_ports_accessibility(ofproto_v1_0_parser, 0)
-
- @mock.patch("ryu.base.app_manager", spec=app_manager)
- def test_recv_loop(self, app_manager_mock):
- # Prepare test data
- test_messages = [
- "4-6-ofp_features_reply.packet",
- "4-14-ofp_echo_reply.packet",
- "4-14-ofp_echo_reply.packet",
- "4-4-ofp_packet_in.packet",
- "4-14-ofp_echo_reply.packet",
- "4-14-ofp_echo_reply.packet",
- ]
- this_dir = os.path.dirname(sys.modules[__name__].__file__)
- packet_data_dir = os.path.join(this_dir, '../../packet_data/of13')
- json_dir = os.path.join(this_dir, '../ofproto/json/of13')
-
- packet_buf = bytearray()
- expected_json = list()
- for msg in test_messages:
- # Construct the received packet buffer as one packet data in order
- # to test the case of the OpenFlow messages composed in one packet.
- packet_data_file = os.path.join(packet_data_dir, msg)
- packet_buf += open(packet_data_file, 'rb').read()
- json_data_file = os.path.join(json_dir, msg + '.json')
- expected_json.append(json.load(open(json_data_file)))
-
- # Prepare mock for socket
- class SocketMock(mock.MagicMock):
- buf = bytearray()
- random = None
-
- def recv(self, bufsize):
- size = self.random.randint(1, bufsize)
- out = self.buf[:size]
- self.buf = self.buf[size:]
- return out
-
- # Prepare mock
- ofp_brick_mock = mock.MagicMock(spec=app_manager.RyuApp)
- app_manager_mock.lookup_service_brick.return_value = ofp_brick_mock
- sock_mock = SocketMock()
- sock_mock.buf = packet_buf
- sock_mock.random = random.Random('Ryu SDN Framework')
- addr_mock = mock.MagicMock()
-
- # Prepare test target
- dp = controller.Datapath(sock_mock, addr_mock)
- dp.set_state(handler.MAIN_DISPATCHER)
- ofp_brick_mock.reset_mock()
-
- # Test
- dp._recv_loop()
-
- # Assert calls
- output_json = list()
- for call in ofp_brick_mock.send_event_to_observers.call_args_list:
- args, kwargs = call
- ev, state = args
- if not hasattr(ev, 'msg'):
- continue
- output_json.append(ev.msg.to_jsondict())
- self.assertEqual(state, handler.MAIN_DISPATCHER)
- self.assertEqual(kwargs, {})
- self.assertEqual(expected_json, output_json)
diff --git a/tests/unit/lib/__init__.py b/tests/unit/lib/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/lib/__init__.py
+++ /dev/null
diff --git a/tests/unit/lib/ofctl_json/of10/1-2-ofp_flow_mod.packet.json b/tests/unit/lib/ofctl_json/of10/1-2-ofp_flow_mod.packet.json
deleted file mode 100644
index cc0b13d9..00000000
--- a/tests/unit/lib/ofctl_json/of10/1-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "cmd": 0,
- "flow": {
- "actions": [
- {
- "type": "OUTPUT",
- "max_len": 65535,
- "port": 6
- }
- ],
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "dl_dst": "f2:0b:a4:7d:f8:ea"
- },
- "out_port": 65532,
- "priority": 123
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-0-ofp_desc_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-0-ofp_desc_stats_reply.packet.json
deleted file mode 100644
index 8fc54b74..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-0-ofp_desc_stats_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "1": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-11-ofp_flow_stats_request.packet.json b/tests/unit/lib/ofctl_json/of12/3-11-ofp_flow_stats_request.packet.json
deleted file mode 100644
index a42dfef0..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-11-ofp_flow_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-12-ofp_flow_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-12-ofp_flow_stats_reply.packet.json
deleted file mode 100644
index 4d73e0b5..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-12-ofp_flow_stats_reply.packet.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "1": [
- {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115277000,
- "duration_sec": 358,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "actions": [],
- "length": 56,
- "match": {},
- "packet_count": 0,
- "priority": 65535,
- "table_id": 0
- },
- {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115055000,
- "duration_sec": 358,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "actions": [
- "OUTPUT:NORMAL"
- ],
- "length": 88,
- "match": {
- "dl_type": 2054
- },
- "packet_count": 0,
- "priority": 65534,
- "table_id": 0
- },
- {
- "byte_count": 238,
- "cookie": 0,
- "duration_nsec": 511582000,
- "duration_sec": 316220,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "actions": [
- "GOTO_TABLE:1"
- ],
- "length": 80,
- "match": {
- "in_port": 6,
- "dl_src": "f2:0b:a4:7d:f8:ea"
- },
- "packet_count": 3,
- "priority": 123,
- "table_id": 0
- },
- {
- "byte_count": 98,
- "cookie": 0,
- "duration_nsec": 980901000,
- "duration_sec": 313499,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "actions": [
- {
- "WRITE_ACTIONS": [
- "OUTPUT:CONTROLLER"
- ]
- }
- ],
- "length": 80,
- "match": {},
- "packet_count": 1,
- "priority": 0,
- "table_id": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-16-ofp_experimenter.packet.json b/tests/unit/lib/ofctl_json/of12/3-16-ofp_experimenter.packet.json
deleted file mode 100644
index c655f8f0..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-16-ofp_experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "exp": {
- "data": "bmF6bw==",
- "data_type": "base64",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-2-ofp_flow_mod.packet.json b/tests/unit/lib/ofctl_json/of12/3-2-ofp_flow_mod.packet.json
deleted file mode 100644
index f6a0f26a..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "cmd": 0,
- "flow": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "actions": [
- {
- "type": "WRITE_ACTIONS",
- "actions": [
- {
- "type": "SET_FIELD",
- "field": "vlan_vid",
- "value": 258
- },
- {
- "type": "OUTPUT",
- "port": 6,
- "max_len": 65535
- }
- ]
- },
- {
- "type": "SET_FIELD",
- "field": "eth_src",
- "value": "01:02:03:04:05:06"
- }
- ],
- "match": {
- "eth_dst": "f2:0b:a4:7d:f8:ea"
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-21-ofp_group_mod.packet.json b/tests/unit/lib/ofctl_json/of12/3-21-ofp_group_mod.packet.json
deleted file mode 100644
index 9509e191..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-21-ofp_group_mod.packet.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "cmd": 0,
- "group": {
- "buckets": [
- {
- "actions": [
- {
- "max_len": 65535,
- "port": 2,
- "type": "OUTPUT"
- }
- ],
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- ],
- "command": 0,
- "group_id": 1,
- "type": "ALL"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-22-ofp_port_mod.packet.json b/tests/unit/lib/ofctl_json/of12/3-22-ofp_port_mod.packet.json
deleted file mode 100644
index 3c3ccf89..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-22-ofp_port_mod.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "port_config": {
- "advertise": 4096,
- "config": 0,
- "hw_addr": "00-11-00-00-11-11",
- "mask": 0,
- "port_no": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-25-ofp_aggregate_stats_request.packet.json b/tests/unit/lib/ofctl_json/of12/3-25-ofp_aggregate_stats_request.packet.json
deleted file mode 100644
index 845af65b..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-25-ofp_aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-26-ofp_aggregate_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-26-ofp_aggregate_stats_reply.packet.json
deleted file mode 100644
index a4b23d12..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-26-ofp_aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "1": [
- {
- "byte_count": 574,
- "flow_count": 6,
- "packet_count": 7
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-28-ofp_table_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-28-ofp_table_stats_reply.packet.json
deleted file mode 100644
index 7444a29a..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-28-ofp_table_stats_reply.packet.json
+++ /dev/null
@@ -1,32134 +0,0 @@
-{
- "1": [
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "\u79c1\u306e\u30c6\u30fc\u30d6\u30eb",
- "matched_count": 4,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 4,
- "max_entries": 16777216,
- "lookup_count": 4,
- "metadata_match": 18446744073709551615,
- "table_id": 0,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x01",
- "matched_count": 3,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 2,
- "max_entries": 16777216,
- "lookup_count": 3,
- "metadata_match": 18446744073709551615,
- "table_id": 1,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x02",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 2,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x03",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 3,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x04",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 4,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x05",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 5,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x06",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 6,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x07",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 7,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x08",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 8,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x09",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 9,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x0a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 10,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x0b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 11,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x0c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 12,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x0d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 13,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x0e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 14,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x0f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 15,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x10",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 16,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x11",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 17,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x12",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 18,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x13",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 19,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x14",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 20,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x15",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 21,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x16",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 22,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x17",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 23,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x18",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 24,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x19",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 25,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x1a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 26,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x1b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 27,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x1c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 28,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x1d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 29,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x1e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 30,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x1f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 31,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x20",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 32,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x21",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 33,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x22",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 34,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x23",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 35,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x24",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 36,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x25",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 37,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x26",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 38,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x27",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 39,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x28",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 40,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x29",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 41,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x2a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 42,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x2b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 43,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x2c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 44,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x2d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 45,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x2e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 46,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x2f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 47,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x30",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 48,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x31",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 49,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x32",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 50,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x33",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 51,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x34",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 52,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x35",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 53,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x36",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 54,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x37",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 55,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x38",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 56,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x39",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 57,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x3a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 58,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x3b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 59,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x3c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 60,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x3d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 61,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x3e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 62,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x3f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 63,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x40",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 64,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x41",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 65,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x42",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 66,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x43",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 67,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x44",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 68,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x45",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 69,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x46",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 70,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x47",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 71,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x48",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 72,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x49",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 73,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x4a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 74,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x4b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 75,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x4c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 76,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x4d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 77,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x4e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 78,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x4f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 79,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x50",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 80,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x51",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 81,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x52",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 82,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x53",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 83,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x54",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 84,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x55",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 85,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x56",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 86,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x57",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 87,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x58",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 88,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x59",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 89,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x5a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 90,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x5b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 91,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x5c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 92,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x5d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 93,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x5e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 94,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x5f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 95,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x60",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 96,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x61",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 97,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x62",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 98,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x63",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 99,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x64",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 100,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x65",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 101,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x66",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 102,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x67",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 103,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x68",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 104,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x69",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 105,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x6a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 106,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x6b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 107,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x6c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 108,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x6d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 109,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x6e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 110,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x6f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 111,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x70",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 112,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x71",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 113,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x72",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 114,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x73",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 115,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x74",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 116,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x75",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 117,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x76",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 118,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x77",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 119,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x78",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 120,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x79",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 121,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x7a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 122,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x7b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 123,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x7c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 124,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x7d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 125,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x7e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 126,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x7f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 127,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x80",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 128,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x81",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 129,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x82",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 130,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x83",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 131,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x84",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 132,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x85",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 133,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x86",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 134,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x87",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 135,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x88",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 136,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x89",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 137,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x8a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 138,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x8b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 139,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x8c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 140,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x8d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 141,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x8e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 142,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x8f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 143,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x90",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 144,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x91",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 145,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x92",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 146,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x93",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 147,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x94",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 148,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x95",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 149,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x96",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 150,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x97",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 151,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x98",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 152,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x99",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 153,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x9a",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 154,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x9b",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 155,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x9c",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 156,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x9d",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 157,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x9e",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 158,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0x9f",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 159,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa0",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 160,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa1",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 161,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa2",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 162,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa3",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 163,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa4",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 164,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa5",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 165,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa6",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 166,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa7",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 167,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa8",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 168,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xa9",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 169,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xaa",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 170,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xab",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 171,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xac",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 172,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xad",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 173,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xae",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 174,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xaf",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 175,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb0",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 176,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb1",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 177,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb2",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 178,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb3",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 179,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb4",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 180,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb5",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 181,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb6",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 182,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb7",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 183,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb8",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 184,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xb9",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 185,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xba",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 186,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xbb",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 187,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xbc",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 188,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xbd",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 189,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xbe",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 190,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xbf",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 191,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc0",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 192,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc1",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 193,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc2",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 194,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc3",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 195,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc4",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 196,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc5",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 197,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc6",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 198,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc7",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 199,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc8",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 200,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xc9",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 201,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xca",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 202,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xcb",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 203,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xcc",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 204,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xcd",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 205,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xce",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 206,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xcf",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 207,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd0",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 208,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd1",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 209,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd2",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 210,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd3",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 211,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd4",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 212,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd5",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 213,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd6",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 214,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd7",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 215,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd8",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 216,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xd9",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 217,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xda",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 218,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xdb",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 219,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xdc",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 220,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xdd",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 221,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xde",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 222,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xdf",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 223,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe0",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 224,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe1",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 225,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe2",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 226,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe3",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 227,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe4",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 228,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe5",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 229,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe6",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 230,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe7",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 231,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe8",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 232,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xe9",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 233,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xea",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 234,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xeb",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 235,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xec",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 236,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xed",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 237,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xee",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 238,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xef",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 239,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf0",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 240,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf1",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 241,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf2",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 242,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf3",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 243,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf4",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 244,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf5",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 245,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf6",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 246,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf7",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 247,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf8",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 248,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xf9",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 249,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xfa",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 250,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xfb",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 251,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xfc",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 252,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xfd",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": 253,
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- },
- {
- "wildcards": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "write_setfields": [],
- "write_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "name": "Flow Table 0xfe",
- "matched_count": 0,
- "apply_actions": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ],
- "active_count": 0,
- "max_entries": 16777216,
- "lookup_count": 0,
- "metadata_match": 18446744073709551615,
- "table_id": "MAX",
- "instructions": [
- "GOTO_TABLE",
- "WRITE_METADATA",
- "WRITE_ACTIONS",
- "APPLY_ACTIONS",
- "CLEAR_ACTIONS"
- ],
- "config": [],
- "metadata_write": 18446744073709551615,
- "match": [
- "IN_PORT",
- "METADATA",
- "ETH_DST",
- "ETH_SRC",
- "ETH_TYPE",
- "VLAN_VID",
- "VLAN_PCP",
- "IP_DSCP",
- "IP_ECN",
- "IP_PROTO",
- "IPV4_SRC",
- "IPV4_DST",
- "TCP_SRC",
- "TCP_DST",
- "UDP_SRC",
- "UDP_DST",
- "SCTP_SRC",
- "SCTP_DST",
- "ICMPV4_TYPE",
- "ICMPV4_CODE",
- "ARP_OP",
- "ARP_SPA",
- "ARP_TPA",
- "ARP_SHA",
- "ARP_THA",
- "IPV6_SRC",
- "IPV6_DST",
- "IPV6_FLABEL",
- "ICMPV6_TYPE",
- "ICMPV6_CODE",
- "IPV6_ND_TARGET",
- "IPV6_ND_SLL",
- "IPV6_ND_TLL",
- "MPLS_LABEL",
- "MPLS_TC"
- ],
- "apply_setfields": []
- }
- ]
-} \ No newline at end of file
diff --git a/tests/unit/lib/ofctl_json/of12/3-30-ofp_port_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-30-ofp_port_stats_reply.packet.json
deleted file mode 100644
index 43414b65..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-30-ofp_port_stats_reply.packet.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "1": [
- {
- "collisions": 0,
- "port_no": 7,
- "rx_bytes": 0,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- },
- {
- "collisions": 0,
- "port_no": 6,
- "rx_bytes": 336,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-32-ofp_group_features_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-32-ofp_group_features_stats_reply.packet.json
deleted file mode 100644
index b277969e..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-32-ofp_group_features_stats_reply.packet.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "1": [
- {
- "actions": [
- {
- "ALL": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "SELECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "INDIRECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "FF": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- }
- ],
- "max_groups": [
- {
- "ALL": 16777216
- },
- {
- "SELECT": 16777216
- },
- {
- "INDIRECT": 16777216
- },
- {
- "FF": 16777216
- }
- ],
- "capabilities": [
- "SELECT_WEIGHT",
- "CHAINING"
- ],
- "types": [
- "ALL",
- "SELECT",
- "INDIRECT",
- "FF"
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/tests/unit/lib/ofctl_json/of12/3-34-ofp_group_desc_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-34-ofp_group_desc_stats_reply.packet.json
deleted file mode 100644
index c23a9bbe..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-34-ofp_group_desc_stats_reply.packet.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "1": [
- {
- "buckets": [
- {
- "actions": [
- "OUTPUT:2"
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- ],
- "group_id": 1,
- "length": 40,
- "type": "ALL"
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-35-ofp_queue_get_config_request.packet.json b/tests/unit/lib/ofctl_json/of12/3-35-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index fc49ec2c..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-35-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": 4294967295
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-36-ofp_queue_get_config_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-36-ofp_queue_get_config_reply.packet.json
deleted file mode 100644
index 8e922a9a..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-36-ofp_queue_get_config_reply.packet.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "1": [
- {
- "port": "ANY",
- "queues": [
- {
- "len": 48,
- "port": 77,
- "properties": [
- {
- "len": 16,
- "property": "MIN_RATE",
- "rate": 10
- },
- {
- "len": 16,
- "property": "MAX_RATE",
- "rate": 900
- }
- ],
- "queue_id": 99
- },
- {
- "len": 48,
- "port": 77,
- "properties": [
- {
- "len": 16,
- "property": "MIN_RATE",
- "rate": 100
- },
- {
- "len": 16,
- "property": "MAX_RATE",
- "rate": 200
- }
- ],
- "queue_id": 88
- }
- ]
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-38-ofp_queue_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-38-ofp_queue_stats_reply.packet.json
deleted file mode 100644
index db50c1e5..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-38-ofp_queue_stats_reply.packet.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "1": [
- {
- "port_no": 7,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "port_no": 6,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "port_no": 7,
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-6-ofp_features_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-6-ofp_features_reply.packet.json
deleted file mode 100644
index be040f79..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-6-ofp_features_reply.packet.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "1": [
- {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "max_speed": 5000,
- "name": "Port6",
- "peer": 10248,
- "port_no": 6,
- "state": 4,
- "supported": 10248
- },
- {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "max_speed": 5000,
- "name": "Port7",
- "peer": 10248,
- "port_no": 7,
- "state": 4,
- "supported": 10248
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/3-62-ofp_group_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of12/3-62-ofp_group_stats_reply.packet.json
deleted file mode 100644
index f2f1a6ce..00000000
--- a/tests/unit/lib/ofctl_json/of12/3-62-ofp_group_stats_reply.packet.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "1": [
- {
- "bucket_stats": [
- {
- "byte_count": 2345,
- "packet_count": 234
- }
- ],
- "byte_count": 12345,
- "group_id": 1,
- "length": 48,
- "packet_count": 123,
- "ref_count": 2
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_group_stats_request.packet.json b/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_group_stats_request.packet.json
deleted file mode 100644
index 7646a77a..00000000
--- a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_group_stats_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "group_id": 1
-}
diff --git a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_port_stats_request.packet.json b/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_port_stats_request.packet.json
deleted file mode 100644
index 7d56f29d..00000000
--- a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_port_stats_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": 7
-}
diff --git a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json b/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index e116fdc1..00000000
--- a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": null
-}
diff --git a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json b/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json
deleted file mode 100644
index 7d56f29d..00000000
--- a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": 7
-}
diff --git a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json b/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json
deleted file mode 100644
index 78077510..00000000
--- a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "port": 7,
- "queue_id":1
-}
diff --git a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json b/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json
deleted file mode 100644
index ee465693..00000000
--- a/tests/unit/lib/ofctl_json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "queue_id":1
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-0-ofp_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-0-ofp_desc_reply.packet.json
deleted file mode 100644
index 8fc54b74..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-0-ofp_desc_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "1": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-11-ofp_flow_stats_request.packet.json b/tests/unit/lib/ofctl_json/of13/4-11-ofp_flow_stats_request.packet.json
deleted file mode 100644
index a42dfef0..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-11-ofp_flow_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json
deleted file mode 100644
index f9b8e68f..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-12-ofp_flow_stats_reply.packet.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "1": [
- {
- "actions": [],
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115277000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "length": 0,
- "match": {},
- "packet_count": 0,
- "priority": 65535,
- "table_id": 0
- },
- {
- "actions": [
- "OUTPUT:NORMAL"
- ],
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115055000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "length": 0,
- "match": {
- "dl_type": 2054
- },
- "packet_count": 0,
- "priority": 65534,
- "table_id": 0
- },
- {
- "actions": [
- "GOTO_TABLE:1"
- ],
- "byte_count": 238,
- "cookie": 0,
- "duration_nsec": 511582000,
- "duration_sec": 316220,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "length": 0,
- "match": {
- "dl_src": "f2:0b:a4:7d:f8:ea",
- "in_port": 6
- },
- "packet_count": 3,
- "priority": 123,
- "table_id": 0
- },
- {
- "actions": [
- {
- "WRITE_ACTIONS": [
- "SET_FIELD: {vlan_vid:258}",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "COPY_TTL_IN",
- "POP_PBB",
- "PUSH_PBB:4660",
- "POP_MPLS:39030",
- "PUSH_MPLS:34887",
- "POP_VLAN",
- "PUSH_VLAN:33024",
- "DEC_MPLS_TTL",
- "SET_MPLS_TTL:10",
- "DEC_NW_TTL",
- "SET_NW_TTL:10",
- "SET_QUEUE:3",
- "GROUP:99",
- "OUTPUT:6",
- "EXPERIMENTER: {experimenter:98765432, data:ZXhwX2RhdGE=}",
- "NX_UNKNOWN: {subtype: 25976, data: cF9kYXRh}"
- ]
- },
- "SET_FIELD: {eth_src:01:02:03:04:05:06}",
- "SET_FIELD: {pbb_uca:1}",
- {
- "WRITE_ACTIONS": [
- "OUTPUT:CONTROLLER"
- ]
- }
- ],
- "byte_count": 98,
- "cookie": 0,
- "duration_nsec": 980901000,
- "duration_sec": 313499,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "length": 0,
- "match": {},
- "packet_count": 1,
- "priority": 0,
- "table_id": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-16-ofp_experimenter.packet.json b/tests/unit/lib/ofctl_json/of13/4-16-ofp_experimenter.packet.json
deleted file mode 100644
index c655f8f0..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-16-ofp_experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "exp": {
- "data": "bmF6bw==",
- "data_type": "base64",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json b/tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json
deleted file mode 100644
index fbd5c214..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "cmd": 0,
- "flow": {
- "buffer_id": 65535,
- "table_id": 1,
- "priority": 123,
- "match": {
- "eth_dst": "f2:0b:a4:7d:f8:ea"
- },
- "actions": [
- {
- "type": "WRITE_ACTIONS",
- "actions": [
- {
- "type": "SET_FIELD",
- "field": "vlan_vid",
- "value": 258
- },
- {
- "type": "COPY_TTL_OUT"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "POP_PBB"
- },
- {
- "type": "PUSH_PBB",
- "ethertype": 4660
- },
- {
- "type": "POP_MPLS",
- "ethertype": 39030
- },
- {
- "type": "PUSH_MPLS",
- "ethertype": 34887
- },
- {
- "type": "POP_VLAN"
- },
- {
- "type": "PUSH_VLAN",
- "ethertype": 33024
- },
- {
- "type": "DEC_MPLS_TTL"
- },
- {
- "type": "SET_MPLS_TTL",
- "mpls_ttl": 10
- },
- {
- "type": "DEC_NW_TTL"
- },
- {
- "type": "SET_NW_TTL",
- "nw_ttl": 10
- },
- {
- "type": "EXPERIMENTER",
- "experimenter": 101,
- "data": "AAECAwQFBgc=",
- "data_type": "base64"
- },
- {
- "type": "SET_QUEUE",
- "queue_id": 3
- },
- {
- "type": "GROUP",
- "group_id": 99
- },
- {
- "type": "OUTPUT",
- "max_len": 65535,
- "port": 6
- }
- ]
- },
- {
- "type": "SET_FIELD",
- "field": "eth_src",
- "value": "01:02:03:04:05:06"
- },
- {
- "type": "SET_FIELD",
- "field": "pbb_uca",
- "value": 1
- }
- ]
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-21-ofp_group_mod.packet.json b/tests/unit/lib/ofctl_json/of13/4-21-ofp_group_mod.packet.json
deleted file mode 100644
index fa48425a..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-21-ofp_group_mod.packet.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "cmd": 0,
- "group": {
- "buckets": [
- {
- "actions": [
- {
- "max_len": 65535,
- "port": 2,
- "type": "OUTPUT"
- }
- ],
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- ],
- "group_id": 1,
- "type": "ALL"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-22-ofp_port_mod.packet.json b/tests/unit/lib/ofctl_json/of13/4-22-ofp_port_mod.packet.json
deleted file mode 100644
index 73339730..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-22-ofp_port_mod.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "port_config": {
- "advertise": 4096,
- "config": 0,
- "hw_addr": "00:11:00:00:11:11",
- "mask": 0,
- "port_no": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-25-ofp_aggregate_stats_request.packet.json b/tests/unit/lib/ofctl_json/of13/4-25-ofp_aggregate_stats_request.packet.json
deleted file mode 100644
index 845af65b..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-25-ofp_aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-26-ofp_aggregate_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-26-ofp_aggregate_stats_reply.packet.json
deleted file mode 100644
index a4b23d12..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-26-ofp_aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "1": [
- {
- "byte_count": 574,
- "flow_count": 6,
- "packet_count": 7
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-28-ofp_table_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-28-ofp_table_stats_reply.packet.json
deleted file mode 100644
index 95b2c495..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-28-ofp_table_stats_reply.packet.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "1": [
- {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 0
- },
- {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-30-ofp_port_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-30-ofp_port_stats_reply.packet.json
deleted file mode 100644
index a81e6825..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-30-ofp_port_stats_reply.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "1": [
- {
- "collisions": 0,
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 7,
- "rx_bytes": 0,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- },
- {
- "collisions": 0,
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 6,
- "rx_bytes": 336,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-32-ofp_group_features_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-32-ofp_group_features_reply.packet.json
deleted file mode 100644
index 2a29ac2d..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-32-ofp_group_features_reply.packet.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "1": [
- {
- "actions": [
- {
- "ALL": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "SELECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "INDIRECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "FF": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- }
- ],
- "capabilities": [
- "SELECT_WEIGHT",
- "CHAINING"
- ],
- "max_groups": [
- {
- "ALL": 16777216
- },
- {
- "SELECT": 16777216
- },
- {
- "INDIRECT": 16777216
- },
- {
- "FF": 16777216
- }
- ],
- "types": [
- "ALL",
- "SELECT",
- "INDIRECT",
- "FF"
- ]
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-34-ofp_group_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-34-ofp_group_desc_reply.packet.json
deleted file mode 100644
index c23a9bbe..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-34-ofp_group_desc_reply.packet.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "1": [
- {
- "buckets": [
- {
- "actions": [
- "OUTPUT:2"
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- ],
- "group_id": 1,
- "length": 40,
- "type": "ALL"
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-35-ofp_queue_get_config_request.packet.json b/tests/unit/lib/ofctl_json/of13/4-35-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index fc49ec2c..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-35-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": 4294967295
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-36-ofp_queue_get_config_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-36-ofp_queue_get_config_reply.packet.json
deleted file mode 100644
index 9d529400..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-36-ofp_queue_get_config_reply.packet.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "1": [
- {
- "port": "ANY",
- "queues": [
- {
- "len": 64,
- "port": 77,
- "properties": [
- {
- "len": 16,
- "property": "MIN_RATE",
- "rate": 10
- },
- {
- "len": 16,
- "property": "MAX_RATE",
- "rate": 900
- },
- {
- "data": [],
- "experimenter": 999,
- "len": 16,
- "property": "EXPERIMENTER"
- }
- ],
- "queue_id": 99
- },
- {
- "len": 65,
- "port": 77,
- "properties": [
- {
- "len": 16,
- "property": "MIN_RATE",
- "rate": 100
- },
- {
- "len": 16,
- "property": "MAX_RATE",
- "rate": 200
- },
- {
- "experimenter": 999,
- "data": [
- 1
- ],
- "len": 17,
- "property": "EXPERIMENTER"
- }
- ],
- "queue_id": 88
- },
- {
- "len": 66,
- "port": 77,
- "properties": [
- {
- "len": 16,
- "property": "MIN_RATE",
- "rate": 200
- },
- {
- "len": 16,
- "property": "MAX_RATE",
- "rate": 400
- },
- {
- "experimenter": 999,
- "data": [
- 1,
- 2
- ],
- "len": 18,
- "property": "EXPERIMENTER"
- }
- ],
- "queue_id": 77
- }
- ]
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-38-ofp_queue_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-38-ofp_queue_stats_reply.packet.json
deleted file mode 100644
index b19fe300..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-38-ofp_queue_stats_reply.packet.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "1": [
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 7,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 6,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 7,
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-45-ofp_meter_mod.packet.json b/tests/unit/lib/ofctl_json/of13/4-45-ofp_meter_mod.packet.json
deleted file mode 100644
index b78ea6be..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-45-ofp_meter_mod.packet.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "cmd": 0,
- "meter": {
- "flags": [
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "meter_id": 100,
- "bands": [
- {
- "burst_size": 10,
- "rate": 1000,
- "type": "DROP"
- },
- {
- "burst_size": 10,
- "prec_level": 1,
- "rate": 1000,
- "type": "DSCP_REMARK"
- },
- {
- "burst_size": 10,
- "experimenter": 999,
- "len": 16,
- "rate": 1000,
- "type": "EXPERIMENTER"
- }
- ]
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-48-ofp_meter_config_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-48-ofp_meter_config_reply.packet.json
deleted file mode 100644
index d5efcd97..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-48-ofp_meter_config_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "bands": [
- {
- "burst_size": 10,
- "rate": 1000,
- "type": "DROP"
- }
- ],
- "flags": [
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "meter_id": 100
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-50-ofp_meter_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-50-ofp_meter_stats_reply.packet.json
deleted file mode 100644
index f21ec519..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-50-ofp_meter_stats_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "band_stats": [
- {
- "byte_band_count": 0,
- "packet_band_count": 0
- }
- ],
- "byte_in_count": 0,
- "duration_nsec": 480000,
- "duration_sec": 0,
- "flow_count": 0,
- "len": 56,
- "meter_id": 100,
- "packet_in_count": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-52-ofp_meter_features_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-52-ofp_meter_features_reply.packet.json
deleted file mode 100644
index 24dac7d4..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-52-ofp_meter_features_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "band_types": [
- "DROP",
- "DSCP_REMARK"
- ],
- "capabilities": [
- "KBPS",
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "max_bands": 255,
- "max_color": 0,
- "max_meter": 16777216
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-54-ofp_port_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-54-ofp_port_desc_reply.packet.json
deleted file mode 100644
index 72ff2ec3..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-54-ofp_port_desc_reply.packet.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "1": [
- {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "max_speed": 5000,
- "name": "Port7",
- "peer": 10248,
- "port_no": 7,
- "state": 4,
- "supported": 10248
- },
- {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "max_speed": 5000,
- "name": "Port6",
- "peer": 10248,
- "port_no": 6,
- "state": 4,
- "supported": 10248
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-56-ofp_table_features_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-56-ofp_table_features_reply.packet.json
deleted file mode 100644
index ded5a996..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-56-ofp_table_features_reply.packet.json
+++ /dev/null
@@ -1,11928 +0,0 @@
-{
- "1": [
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "\u79c1\u306e\u30c6\u30fc\u30d6\u30eb",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- },
- {
- "type": "EXPERIMENTER"
- },
- {
- "type": "EXPERIMENTER"
- },
- {
- "type": "EXPERIMENTER"
- }
- ],
- "table_id": 0
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x01",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 1
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x02",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 2
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x03",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 3
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x04",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 4
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x05",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 5
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x06",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 6
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x07",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 7
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x08",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 8
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x09",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 9
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/4-58-ofp_group_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of13/4-58-ofp_group_stats_reply.packet.json
deleted file mode 100644
index 1c6f9039..00000000
--- a/tests/unit/lib/ofctl_json/of13/4-58-ofp_group_stats_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "bucket_stats": [
- {
- "byte_count": 2345,
- "packet_count": 234
- }
- ],
- "byte_count": 12345,
- "duration_nsec": 609036000,
- "duration_sec": 9,
- "group_id": 1,
- "length": 56,
- "packet_count": 123,
- "ref_count": 2
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_group_stats_request.packet.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_group_stats_request.packet.json
deleted file mode 100644
index 7646a77a..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_group_stats_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "group_id": 1
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_config_request.packet.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_config_request.packet.json
deleted file mode 100644
index 3ad622e0..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "meter_id": 1
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_stats_request.packet.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_stats_request.packet.json
deleted file mode 100644
index 3ad622e0..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_meter_stats_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "meter_id": 1
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_port_stats_request.packet.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_port_stats_request.packet.json
deleted file mode 100644
index 7d56f29d..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_port_stats_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": 7
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index e116fdc1..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": null
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json
deleted file mode 100644
index 7d56f29d..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port": 7
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json
deleted file mode 100644
index 78077510..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "port": 7,
- "queue_id":1
-}
diff --git a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json b/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json
deleted file mode 100644
index ee465693..00000000
--- a/tests/unit/lib/ofctl_json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "queue_id":1
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-0-ofp_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-0-ofp_desc_reply.packet.json
deleted file mode 100644
index 8fc54b74..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-0-ofp_desc_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "1": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-11-ofp_flow_stats_request.packet.json b/tests/unit/lib/ofctl_json/of14/5-11-ofp_flow_stats_request.packet.json
deleted file mode 100644
index a42dfef0..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-11-ofp_flow_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-12-ofp_flow_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-12-ofp_flow_stats_reply.packet.json
deleted file mode 100644
index 134c3f12..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-12-ofp_flow_stats_reply.packet.json
+++ /dev/null
@@ -1,197 +0,0 @@
-{
- "1": [
- {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115277000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [],
- "length": 0,
- "match": {},
- "packet_count": 0,
- "priority": 65535,
- "table_id": 0
- },
- {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115055000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "actions": [
- {
- "max_len": 0,
- "port": 4294967290,
- "type": "OUTPUT"
- }
- ],
- "type": "APPLY_ACTIONS"
- }
- ],
- "length": 0,
- "match": {
- "eth_type": 2054
- },
- "packet_count": 0,
- "priority": 65534,
- "table_id": 0
- },
- {
- "byte_count": 238,
- "cookie": 0,
- "duration_nsec": 511582000,
- "duration_sec": 316220,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "table_id": 1,
- "type": "GOTO_TABLE"
- }
- ],
- "length": 0,
- "match": {
- "eth_src": "f2:0b:a4:7d:f8:ea",
- "in_port": 6
- },
- "packet_count": 3,
- "priority": 123,
- "table_id": 0
- },
- {
- "byte_count": 98,
- "cookie": 0,
- "duration_nsec": 980901000,
- "duration_sec": 313499,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "actions": [
- {
- "field": "vlan_vid",
- "mask": null,
- "type": "SET_FIELD",
- "value": 258
- },
- {
- "type": "COPY_TTL_OUT"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "POP_PBB"
- },
- {
- "ethertype": 4660,
- "type": "PUSH_PBB"
- },
- {
- "ethertype": 39030,
- "type": "POP_MPLS"
- },
- {
- "ethertype": 34887,
- "type": "PUSH_MPLS"
- },
- {
- "type": "POP_VLAN"
- },
- {
- "ethertype": 33024,
- "type": "PUSH_VLAN"
- },
- {
- "type": "DEC_MPLS_TTL"
- },
- {
- "mpls_ttl": 10,
- "type": "SET_MPLS_TTL"
- },
- {
- "type": "DEC_NW_TTL"
- },
- {
- "nw_ttl": 10,
- "type": "SET_NW_TTL"
- },
- {
- "queue_id": 3,
- "type": "SET_QUEUE"
- },
- {
- "group_id": 99,
- "type": "GROUP"
- },
- {
- "max_len": 65535,
- "port": 6,
- "type": "OUTPUT"
- },
- {
- "data": "ZXhwX2RhdGE=",
- "experimenter": 98765432,
- "type": "EXPERIMENTER"
- },
- {
- "data": "cF9kYXRh",
- "experimenter": 8992,
- "subtype": 25976,
- "type": "EXPERIMENTER"
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "actions": [
- {
- "field": "eth_src",
- "mask": null,
- "type": "SET_FIELD",
- "value": "01:02:03:04:05:06"
- },
- {
- "field": "pbb_uca",
- "mask": null,
- "type": "SET_FIELD",
- "value": 1
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "actions": [
- {
- "max_len": 65535,
- "port": 4294967293,
- "type": "OUTPUT"
- }
- ],
- "type": "WRITE_ACTIONS"
- }
- ],
- "length": 0,
- "match": {},
- "packet_count": 1,
- "priority": 0,
- "table_id": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-16-ofp_experimenter.packet.json b/tests/unit/lib/ofctl_json/of14/5-16-ofp_experimenter.packet.json
deleted file mode 100644
index c655f8f0..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-16-ofp_experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "exp": {
- "data": "bmF6bw==",
- "data_type": "base64",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-2-ofp_flow_mod.packet.json b/tests/unit/lib/ofctl_json/of14/5-2-ofp_flow_mod.packet.json
deleted file mode 100644
index 72054e33..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "cmd": 0,
- "flow": {
- "instructions": [
- {
- "actions": [
- {
- "field": "vlan_vid",
- "type": "SET_FIELD",
- "value": 258
- },
- {
- "type": "COPY_TTL_OUT"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "POP_PBB"
- },
- {
- "ethertype": 4660,
- "type": "PUSH_PBB"
- },
- {
- "ethertype": 39030,
- "type": "POP_MPLS"
- },
- {
- "ethertype": 34887,
- "type": "PUSH_MPLS"
- },
- {
- "type": "POP_VLAN"
- },
- {
- "ethertype": 33024,
- "type": "PUSH_VLAN"
- },
- {
- "type": "DEC_MPLS_TTL"
- },
- {
- "mpls_ttl": 10,
- "type": "SET_MPLS_TTL"
- },
- {
- "type": "DEC_NW_TTL"
- },
- {
- "nw_ttl": 10,
- "type": "SET_NW_TTL"
- },
- {
- "data": "AAECAwQFBgc=",
- "data_type": "base64",
- "experimenter": 101,
- "type": "EXPERIMENTER"
- },
- {
- "queue_id": 3,
- "type": "SET_QUEUE"
- },
- {
- "group_id": 99,
- "type": "GROUP"
- },
- {
- "max_len": 65535,
- "port": 6,
- "type": "OUTPUT"
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "actions": [
- {
- "field": "eth_src",
- "type": "SET_FIELD",
- "value": "01:02:03:04:05:06"
- },
- {
- "field": "pbb_uca",
- "type": "SET_FIELD",
- "value": 1
- }
- ],
- "type": "APPLY_ACTIONS"
- }
- ],
- "buffer_id": 65535,
- "importance": 0,
- "match": {
- "eth_dst": "f2:0b:a4:7d:f8:ea"
- },
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-21-ofp_group_mod.packet.json b/tests/unit/lib/ofctl_json/of14/5-21-ofp_group_mod.packet.json
deleted file mode 100644
index fa48425a..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-21-ofp_group_mod.packet.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "cmd": 0,
- "group": {
- "buckets": [
- {
- "actions": [
- {
- "max_len": 65535,
- "port": 2,
- "type": "OUTPUT"
- }
- ],
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- ],
- "group_id": 1,
- "type": "ALL"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-22-ofp_port_mod.packet.json b/tests/unit/lib/ofctl_json/of14/5-22-ofp_port_mod.packet.json
deleted file mode 100644
index 980456eb..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-22-ofp_port_mod.packet.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "port_config": {
- "config": 0,
- "hw_addr": "00:11:00:00:11:11",
- "mask": 0,
- "port_no": 1,
- "properties": [
- {
- "advertise": 4096,
- "length": 8,
- "type": 0
- },
- {
- "configure": 3,
- "fl_offset": 2000,
- "freq_lmda": 1500,
- "grid_span": 3000,
- "length": 24,
- "tx_pwr": 300,
- "type": 1
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- ]
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-25-ofp_aggregate_stats_request.packet.json b/tests/unit/lib/ofctl_json/of14/5-25-ofp_aggregate_stats_request.packet.json
deleted file mode 100644
index 845af65b..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-25-ofp_aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-26-ofp_aggregate_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-26-ofp_aggregate_stats_reply.packet.json
deleted file mode 100644
index a4b23d12..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-26-ofp_aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "1": [
- {
- "byte_count": 574,
- "flow_count": 6,
- "packet_count": 7
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-28-ofp_table_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-28-ofp_table_stats_reply.packet.json
deleted file mode 100644
index 95b2c495..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-28-ofp_table_stats_reply.packet.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "1": [
- {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 0
- },
- {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-30-ofp_port_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-30-ofp_port_stats_reply.packet.json
deleted file mode 100644
index f9f1d86f..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-30-ofp_port_stats_reply.packet.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "1": [
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 7,
- "properties": [
- {
- "collisions": 0,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": "ETHERNET"
- },
- {
- "bias_current": 300,
- "flags": 3,
- "rx_freq_lmda": 1500,
- "rx_grid_span": 500,
- "rx_offset": 700,
- "rx_pwr": 2000,
- "temperature": 273,
- "tx_freq_lmda": 1500,
- "tx_grid_span": 500,
- "tx_offset": 700,
- "tx_pwr": 2000,
- "type": "OPTICAL"
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "type": "EXPERIMENTER"
- }
- ],
- "rx_bytes": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 6,
- "properties": [
- {
- "collisions": 0,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": "ETHERNET"
- }
- ],
- "rx_bytes": 336,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-32-ofp_group_features_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-32-ofp_group_features_reply.packet.json
deleted file mode 100644
index 2a29ac2d..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-32-ofp_group_features_reply.packet.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "1": [
- {
- "actions": [
- {
- "ALL": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "SELECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "INDIRECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "FF": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- }
- ],
- "capabilities": [
- "SELECT_WEIGHT",
- "CHAINING"
- ],
- "max_groups": [
- {
- "ALL": 16777216
- },
- {
- "SELECT": 16777216
- },
- {
- "INDIRECT": 16777216
- },
- {
- "FF": 16777216
- }
- ],
- "types": [
- "ALL",
- "SELECT",
- "INDIRECT",
- "FF"
- ]
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-34-ofp_group_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-34-ofp_group_desc_reply.packet.json
deleted file mode 100644
index df0ef359..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-34-ofp_group_desc_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "1": [
- {
- "buckets": [
- {
- "actions": [
- {
- "max_len": 65535,
- "port": 2,
- "type": "OUTPUT"
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- ],
- "group_id": 1,
- "length": 40,
- "type": "ALL"
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-36-ofp_queue_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-36-ofp_queue_stats_reply.packet.json
deleted file mode 100644
index a6d246d0..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-36-ofp_queue_stats_reply.packet.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "1": [
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 104,
- "port_no": 7,
- "properties": [
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 6,
- "properties": [],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 7,
- "properties": [],
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-43-ofp_meter_mod.packet.json b/tests/unit/lib/ofctl_json/of14/5-43-ofp_meter_mod.packet.json
deleted file mode 100644
index b78ea6be..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-43-ofp_meter_mod.packet.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "cmd": 0,
- "meter": {
- "flags": [
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "meter_id": 100,
- "bands": [
- {
- "burst_size": 10,
- "rate": 1000,
- "type": "DROP"
- },
- {
- "burst_size": 10,
- "prec_level": 1,
- "rate": 1000,
- "type": "DSCP_REMARK"
- },
- {
- "burst_size": 10,
- "experimenter": 999,
- "len": 16,
- "rate": 1000,
- "type": "EXPERIMENTER"
- }
- ]
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-46-ofp_meter_config_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-46-ofp_meter_config_reply.packet.json
deleted file mode 100644
index d5efcd97..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-46-ofp_meter_config_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "bands": [
- {
- "burst_size": 10,
- "rate": 1000,
- "type": "DROP"
- }
- ],
- "flags": [
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "meter_id": 100
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-48-ofp_meter_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-48-ofp_meter_stats_reply.packet.json
deleted file mode 100644
index f21ec519..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-48-ofp_meter_stats_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "band_stats": [
- {
- "byte_band_count": 0,
- "packet_band_count": 0
- }
- ],
- "byte_in_count": 0,
- "duration_nsec": 480000,
- "duration_sec": 0,
- "flow_count": 0,
- "len": 56,
- "meter_id": 100,
- "packet_in_count": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-50-ofp_meter_features_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-50-ofp_meter_features_reply.packet.json
deleted file mode 100644
index 24dac7d4..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-50-ofp_meter_features_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "band_types": [
- "DROP",
- "DSCP_REMARK"
- ],
- "capabilities": [
- "KBPS",
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "max_bands": 255,
- "max_color": 0,
- "max_meter": 16777216
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-52-ofp_port_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-52-ofp_port_desc_reply.packet.json
deleted file mode 100644
index c2f748a8..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-52-ofp_port_desc_reply.packet.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "1": [
- {
- "config": 0,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "length": 168,
- "name": "Port7",
- "port_no": 7,
- "properties": [
- {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": "ETHERNET"
- },
- {
- "length": 40,
- "rx_grid_freq_lmda": 1500,
- "rx_max_freq_lmda": 2000,
- "rx_min_freq_lmda": 1000,
- "supported": 1,
- "tx_grid_freq_lmda": 1500,
- "tx_max_freq_lmda": 2000,
- "tx_min_freq_lmda": 1000,
- "tx_pwr_max": 2000,
- "tx_pwr_min": 1000,
- "type": "OPTICAL"
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ],
- "state": 4
- },
- {
- "config": 0,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "length": 72,
- "name": "Port6",
- "port_no": 6,
- "properties": [
- {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": "ETHERNET"
- }
- ],
- "state": 4
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-54-ofp_table_features_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-54-ofp_table_features_reply.packet.json
deleted file mode 100644
index ded5a996..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-54-ofp_table_features_reply.packet.json
+++ /dev/null
@@ -1,11928 +0,0 @@
-{
- "1": [
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "\u79c1\u306e\u30c6\u30fc\u30d6\u30eb",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- },
- {
- "type": "EXPERIMENTER"
- },
- {
- "type": "EXPERIMENTER"
- },
- {
- "type": "EXPERIMENTER"
- }
- ],
- "table_id": 0
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x01",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 1
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x02",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 2
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x03",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 3
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x04",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 4
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x05",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 5
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x06",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 6
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x07",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 7
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x08",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 8
- },
- {
- "config": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x09",
- "properties": [
- {
- "instruction_ids": [
- {
- "len": 4,
- "type": 1
- },
- {
- "len": 4,
- "type": 2
- },
- {
- "len": 4,
- "type": 3
- },
- {
- "len": 4,
- "type": 4
- },
- {
- "len": 4,
- "type": 5
- },
- {
- "len": 4,
- "type": 6
- }
- ],
- "type": "INSTRUCTIONS"
- },
- {
- "table_ids": [
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": "NEXT_TABLES"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "action_ids": [
- {
- "len": 4,
- "type": 0
- },
- {
- "len": 4,
- "type": 22
- },
- {
- "len": 4,
- "type": 21
- },
- {
- "len": 4,
- "type": 15
- },
- {
- "len": 4,
- "type": 16
- },
- {
- "len": 4,
- "type": 23
- },
- {
- "len": 4,
- "type": 24
- },
- {
- "len": 4,
- "type": 11
- },
- {
- "len": 4,
- "type": 12
- },
- {
- "len": 4,
- "type": 17
- },
- {
- "len": 4,
- "type": 18
- },
- {
- "len": 4,
- "type": 19
- },
- {
- "len": 4,
- "type": 20
- },
- {
- "len": 4,
- "type": 26
- },
- {
- "len": 4,
- "type": 27
- },
- {
- "len": 4,
- "type": 25
- }
- ],
- "type": "APPLY_ACTIONS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "MATCH"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WILDCARDS"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "WRITE_SETFIELD"
- },
- {
- "oxm_ids": [
- {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- },
- {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- ],
- "type": "APPLY_SETFIELD"
- }
- ],
- "table_id": 9
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-56-ofp_group_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-56-ofp_group_stats_reply.packet.json
deleted file mode 100644
index 1c6f9039..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-56-ofp_group_stats_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "bucket_stats": [
- {
- "byte_count": 2345,
- "packet_count": 234
- }
- ],
- "byte_count": 12345,
- "duration_nsec": 609036000,
- "duration_sec": 9,
- "group_id": 1,
- "length": 56,
- "packet_count": 123,
- "ref_count": 2
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-63-ofp_queue_desc_request.packet.json b/tests/unit/lib/ofctl_json/of14/5-63-ofp_queue_desc_request.packet.json
deleted file mode 100644
index fc863813..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-63-ofp_queue_desc_request.packet.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "port_no": 7,
- "queue_id": 4294967295
-}
diff --git a/tests/unit/lib/ofctl_json/of14/5-64-ofp_queue_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of14/5-64-ofp_queue_desc_reply.packet.json
deleted file mode 100644
index ca6e87f2..00000000
--- a/tests/unit/lib/ofctl_json/of14/5-64-ofp_queue_desc_reply.packet.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "1": [
- {
- "len": 32,
- "port_no": 7,
- "properties": [
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- }
- ],
- "queue_id": 0
- },
- {
- "len": 88,
- "port_no": 8,
- "properties": [
- {
- "length": 8,
- "rate": 300,
- "type": "MIN_RATE"
- },
- {
- "length": 8,
- "rate": 900,
- "type": "MAX_RATE"
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ],
- "queue_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json
deleted file mode 100644
index 0b5e04be..00000000
--- a/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "1": [
- {
- "cookie": 1234605616436508552,
- "flags": 1,
- "hard_timeout": 255,
- "idle_timeout": 255,
- "importance": 43690,
- "instructions": [
- {
- "table_id": 2,
- "type": "GOTO_TABLE"
- },
- {
- "actions": [
- {
- "meter_id": 2,
- "type": "METER"
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "actions": [
- {
- "type": "COPY_FIELD",
- "n_bits": 32,
- "src_offset": 1,
- "dst_offset": 2,
- "src_oxm_id": "eth_src",
- "dst_oxm_id": "eth_dst"
- }
- ],
- "type": "APPLY_ACTIONS"
- }
- ],
- "length": 64,
- "match": {
- "in_port": 1
- },
- "priority": 5,
- "stats": {
- "flow_count": 1
- },
- "table_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json b/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json
deleted file mode 100644
index f59aa0b2..00000000
--- a/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "flow": {
- "cookie": 1234605616436508552,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "match": {
- "in_port": 1
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_mod.packet.json b/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_mod.packet.json
deleted file mode 100644
index cc3ba488..00000000
--- a/tests/unit/lib/ofctl_json/of15/lib-ofctl-OFP15-flow_mod.packet.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
- "cmd": 0,
- "flow": {
- "instructions": [
- {
- "actions": [
- {
- "field": "vlan_vid",
- "type": "SET_FIELD",
- "value": 258
- },
- {
- "type": "COPY_TTL_OUT"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "POP_PBB"
- },
- {
- "ethertype": 4660,
- "type": "PUSH_PBB"
- },
- {
- "ethertype": 39030,
- "type": "POP_MPLS"
- },
- {
- "ethertype": 34887,
- "type": "PUSH_MPLS"
- },
- {
- "type": "POP_VLAN"
- },
- {
- "ethertype": 33024,
- "type": "PUSH_VLAN"
- },
- {
- "type": "DEC_MPLS_TTL"
- },
- {
- "mpls_ttl": 10,
- "type": "SET_MPLS_TTL"
- },
- {
- "type": "DEC_NW_TTL"
- },
- {
- "nw_ttl": 10,
- "type": "SET_NW_TTL"
- },
- {
- "data": "AAECAwQFBgc=",
- "data_type": "base64",
- "experimenter": 101,
- "type": "EXPERIMENTER"
- },
- {
- "queue_id": 3,
- "type": "SET_QUEUE"
- },
- {
- "meter_id": 2,
- "type": "METER"
- },
- {
- "group_id": 99,
- "type": "GROUP"
- },
- {
- "max_len": 65535,
- "port": 6,
- "type": "OUTPUT"
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "actions": [
- {
- "field": "eth_src",
- "type": "SET_FIELD",
- "value": "01:02:03:04:05:06"
- },
- {
- "field": "pbb_uca",
- "type": "SET_FIELD",
- "value": 1
- },
- {
- "type": "COPY_FIELD",
- "n_bits": 32,
- "src_offset": 1,
- "dst_offset": 2,
- "src_oxm_id": "eth_src",
- "dst_oxm_id": "eth_dst"
- }
- ],
- "type": "APPLY_ACTIONS"
- }
- ],
- "buffer_id": 65535,
- "importance": 0,
- "match": {
- "eth_dst": "f2:0b:a4:7d:f8:ea"
- },
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json
deleted file mode 100644
index ac4f93c4..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "1": [
- {
- "length": 16,
- "stats": {
- "flow_count": 1
- }
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_request.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
deleted file mode 100644
index 845af65b..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-desc_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-desc_reply.packet.json
deleted file mode 100644
index 8fc54b74..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-desc_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "1": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-experimenter.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-experimenter.packet.json
deleted file mode 100644
index c655f8f0..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "exp": {
- "data": "bmF6bw==",
- "data_type": "base64",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_reply.packet.json
deleted file mode 100644
index 4e12f857..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_reply.packet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "1": [
- {
- "cookie": 1234605616436508552,
- "flags": 1,
- "hard_timeout": 255,
- "idle_timeout": 255,
- "importance": 43690,
- "instructions": [
- {
- "table_id": 2,
- "type": "GOTO_TABLE"
- }
- ],
- "length": 64,
- "match": {
- "in_port": 1
- },
- "priority": 5,
- "stats": {
- "flow_count": 1
- },
- "table_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_request.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_request.packet.json
deleted file mode 100644
index f59aa0b2..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_desc_request.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "flow": {
- "cookie": 1234605616436508552,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "match": {
- "in_port": 1
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json
deleted file mode 100644
index 72054e33..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "cmd": 0,
- "flow": {
- "instructions": [
- {
- "actions": [
- {
- "field": "vlan_vid",
- "type": "SET_FIELD",
- "value": 258
- },
- {
- "type": "COPY_TTL_OUT"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "COPY_TTL_IN"
- },
- {
- "type": "POP_PBB"
- },
- {
- "ethertype": 4660,
- "type": "PUSH_PBB"
- },
- {
- "ethertype": 39030,
- "type": "POP_MPLS"
- },
- {
- "ethertype": 34887,
- "type": "PUSH_MPLS"
- },
- {
- "type": "POP_VLAN"
- },
- {
- "ethertype": 33024,
- "type": "PUSH_VLAN"
- },
- {
- "type": "DEC_MPLS_TTL"
- },
- {
- "mpls_ttl": 10,
- "type": "SET_MPLS_TTL"
- },
- {
- "type": "DEC_NW_TTL"
- },
- {
- "nw_ttl": 10,
- "type": "SET_NW_TTL"
- },
- {
- "data": "AAECAwQFBgc=",
- "data_type": "base64",
- "experimenter": 101,
- "type": "EXPERIMENTER"
- },
- {
- "queue_id": 3,
- "type": "SET_QUEUE"
- },
- {
- "group_id": 99,
- "type": "GROUP"
- },
- {
- "max_len": 65535,
- "port": 6,
- "type": "OUTPUT"
- }
- ],
- "type": "WRITE_ACTIONS"
- },
- {
- "actions": [
- {
- "field": "eth_src",
- "type": "SET_FIELD",
- "value": "01:02:03:04:05:06"
- },
- {
- "field": "pbb_uca",
- "type": "SET_FIELD",
- "value": 1
- }
- ],
- "type": "APPLY_ACTIONS"
- }
- ],
- "buffer_id": 65535,
- "importance": 0,
- "match": {
- "eth_dst": "f2:0b:a4:7d:f8:ea"
- },
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_reply.packet.json
deleted file mode 100644
index 385f256b..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_reply.packet.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "1": [
- {
- "length": 40,
- "match": {
- "in_port": 1
- },
- "priority": 1,
- "reason": 0,
- "stats": {
- "flow_count": 1
- },
- "table_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_request.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_request.packet.json
deleted file mode 100644
index a42dfef0..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-flow_stats_request.packet.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "flow": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {},
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_reply.packet.json
deleted file mode 100644
index b6b75020..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_reply.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "1": [
- {
- "buckets": [
- {
- "actions": [
- {
- "max_len": 65509,
- "port": 1,
- "type": "OUTPUT"
- }
- ],
- "bucket_id": 65535,
- "properties": [
- {
- "type": "WEIGHT",
- "weight": 65535
- }
- ]
- }
- ],
- "group_id": 1,
- "properties": [],
- "type": "SELECT"
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_request.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_request.packet.json
deleted file mode 100644
index f25aaff4..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_desc_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "group_id": 52651
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_features_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_features_reply.packet.json
deleted file mode 100644
index 2a29ac2d..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_features_reply.packet.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "1": [
- {
- "actions": [
- {
- "ALL": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "SELECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "INDIRECT": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- },
- {
- "FF": [
- "OUTPUT",
- "COPY_TTL_OUT",
- "COPY_TTL_IN",
- "SET_MPLS_TTL",
- "DEC_MPLS_TTL",
- "PUSH_VLAN",
- "POP_VLAN",
- "PUSH_MPLS",
- "POP_MPLS",
- "SET_QUEUE",
- "GROUP",
- "SET_NW_TTL",
- "DEC_NW_TTL",
- "SET_FIELD"
- ]
- }
- ],
- "capabilities": [
- "SELECT_WEIGHT",
- "CHAINING"
- ],
- "max_groups": [
- {
- "ALL": 16777216
- },
- {
- "SELECT": 16777216
- },
- {
- "INDIRECT": 16777216
- },
- {
- "FF": 16777216
- }
- ],
- "types": [
- "ALL",
- "SELECT",
- "INDIRECT",
- "FF"
- ]
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_mod.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_mod.packet.json
deleted file mode 100644
index eca861ea..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_mod.packet.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "cmd": 3,
- "group": {
- "buckets": [
- {
- "actions": [
- {
- "len": 8,
- "type": "POP_VLAN"
- },
- {
- "field": "ipv4_dst",
- "type": "SET_FIELD",
- "value": "192.168.2.9"
- }
- ],
- "bucket_id": 305419896,
- "properties": [
- {
- "length": 8,
- "type": "WEIGHT",
- "weight": 52428
- },
- {
- "length": 8,
- "type": "WATCH_PORT",
- "watch": 56797
- },
- {
- "length": 8,
- "type": "WATCH_GROUP",
- "watch": 4008636142
- }
- ]
- }
- ],
- "command_bucket_id": 3149642683,
- "group_id": 2863311530,
- "properties": [],
- "type": "SELECT"
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_stats_reply.packet.json
deleted file mode 100644
index 1c6f9039..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-group_stats_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "bucket_stats": [
- {
- "byte_count": 2345,
- "packet_count": 234
- }
- ],
- "byte_count": 12345,
- "duration_nsec": 609036000,
- "duration_sec": 9,
- "group_id": 1,
- "length": 56,
- "packet_count": 123,
- "ref_count": 2
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_desc_reply.packet.json
deleted file mode 100644
index d5efcd97..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_desc_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "bands": [
- {
- "burst_size": 10,
- "rate": 1000,
- "type": "DROP"
- }
- ],
- "flags": [
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "meter_id": 100
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_features_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_features_reply.packet.json
deleted file mode 100644
index 24dac7d4..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_features_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "band_types": [
- "DROP",
- "DSCP_REMARK"
- ],
- "capabilities": [
- "KBPS",
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "max_bands": 255,
- "max_color": 0,
- "max_meter": 16777216
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_mod.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_mod.packet.json
deleted file mode 100644
index 1d881209..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_mod.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "cmd": 0,
- "meter": {
- "bands": [
- {
- "burst_size": 10,
- "rate": 1000,
- "type": "DROP"
- },
- {
- "burst_size": 10,
- "prec_level": 1,
- "rate": 1000,
- "type": "DSCP_REMARK"
- }
- ],
- "flags": [
- "PKTPS",
- "BURST",
- "STATS"
- ],
- "meter_id": 100
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_stats_reply.packet.json
deleted file mode 100644
index e7f9722b..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-meter_stats_reply.packet.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "1": [
- {
- "band_stats": [
- {
- "byte_band_count": 0,
- "packet_band_count": 0
- }
- ],
- "byte_in_count": 0,
- "duration_nsec": 480000,
- "duration_sec": 0,
- "len": 56,
- "meter_id": 100,
- "packet_in_count": 0,
- "ref_count": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_reply.packet.json
deleted file mode 100644
index c2f748a8..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_reply.packet.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "1": [
- {
- "config": 0,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "length": 168,
- "name": "Port7",
- "port_no": 7,
- "properties": [
- {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": "ETHERNET"
- },
- {
- "length": 40,
- "rx_grid_freq_lmda": 1500,
- "rx_max_freq_lmda": 2000,
- "rx_min_freq_lmda": 1000,
- "supported": 1,
- "tx_grid_freq_lmda": 1500,
- "tx_max_freq_lmda": 2000,
- "tx_min_freq_lmda": 1000,
- "tx_pwr_max": 2000,
- "tx_pwr_min": 1000,
- "type": "OPTICAL"
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ],
- "state": 4
- },
- {
- "config": 0,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "length": 72,
- "name": "Port6",
- "port_no": 6,
- "properties": [
- {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": "ETHERNET"
- }
- ],
- "state": 4
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_request.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_request.packet.json
deleted file mode 100644
index d0519e83..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_desc_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "port_no": 48346
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_mod.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_mod.packet.json
deleted file mode 100644
index be9de69d..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_mod.packet.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "port_config": {
- "config": 0,
- "hw_addr": "00:11:00:00:11:11",
- "mask": 0,
- "port_no": 1,
- "properties": [
- {
- "advertise": 4096,
- "length": 8,
- "type": "ETHERNET"
- },
- {
- "configure": 3,
- "fl_offset": 2000,
- "freq_lmda": 1500,
- "grid_span": 3000,
- "length": 24,
- "tx_pwr": 300,
- "type": "OPTICAL"
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ]
- }
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_stats_reply.packet.json
deleted file mode 100644
index 821c9b72..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-port_stats_reply.packet.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "1": [
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 224,
- "port_no": 7,
- "properties": [
- {
- "collisions": 0,
- "length": 40,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": "ETHERNET"
- },
- {
- "bias_current": 300,
- "flags": 3,
- "length": 44,
- "rx_freq_lmda": 1500,
- "rx_grid_span": 500,
- "rx_offset": 700,
- "rx_pwr": 2000,
- "temperature": 273,
- "tx_freq_lmda": 1500,
- "tx_grid_span": 500,
- "tx_offset": 700,
- "tx_pwr": 2000,
- "type": "OPTICAL"
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ],
- "rx_bytes": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 120,
- "port_no": 6,
- "properties": [
- {
- "collisions": 0,
- "length": 40,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": "ETHERNET"
- }
- ],
- "rx_bytes": 336,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_reply.packet.json
deleted file mode 100644
index 71ca0b71..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_reply.packet.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "1": [
- {
- "len": 32,
- "port_no": 7,
- "properties": [
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- }
- ],
- "queue_id": 0
- },
- {
- "len": 88,
- "port_no": 8,
- "properties": [
- {
- "length": 8,
- "rate": 300,
- "type": "MIN_RATE"
- },
- {
- "length": 8,
- "rate": 900,
- "type": "MAX_RATE"
- },
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ],
- "queue_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_request.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_request.packet.json
deleted file mode 100644
index 9765cf31..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_desc_request.packet.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "port_no": 52651,
- "queue_id": 57020
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_stats_reply.packet.json
deleted file mode 100644
index a6d246d0..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-queue_stats_reply.packet.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "1": [
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 104,
- "port_no": 7,
- "properties": [
- {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": "EXPERIMENTER"
- },
- {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": "EXPERIMENTER"
- }
- ],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 6,
- "properties": [],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- },
- {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 7,
- "properties": [],
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_features_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_features_reply.packet.json
deleted file mode 100644
index e16efb76..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_features_reply.packet.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "1": [
- {
- "capabilities": 4,
- "command": 1,
- "features": 1,
- "length": 80,
- "max_entries": 255,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "table1",
- "properties": [
- {
- "oxm_values": [
- {
- "eth_src": "aa:bb:cc:dd:ee:ff"
- }
- ],
- "type": "PACKET_TYPES"
- }
- ],
- "table_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_stats_reply.packet.json b/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_stats_reply.packet.json
deleted file mode 100644
index 95b2c495..00000000
--- a/tests/unit/lib/ofctl_json/of15/libofproto-OFP15-table_stats_reply.packet.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "1": [
- {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 0
- },
- {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 1
- }
- ]
-}
diff --git a/tests/unit/lib/ovs/__init__.py b/tests/unit/lib/ovs/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/lib/ovs/__init__.py
+++ /dev/null
diff --git a/tests/unit/lib/ovs/test_vsctl.py b/tests/unit/lib/ovs/test_vsctl.py
deleted file mode 100644
index 28edf6e9..00000000
--- a/tests/unit/lib/ovs/test_vsctl.py
+++ /dev/null
@@ -1,789 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from distutils.spawn import find_executable
-import logging
-import subprocess
-import unittest
-
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.lib.hub import sleep
-from ryu.lib.ovs import vsctl
-
-
-LOG = logging.getLogger(__name__)
-
-DOCKER_IMAGE_MININET = 'osrg/ryu-book'
-
-OVSDB_MANAGER_ADDR = 'ptcp:6640'
-OVSDB_SWITCH_ADDR = 'tcp:%s:6640'
-
-
-def setUpModule():
- if not find_executable('docker'):
- raise unittest.SkipTest(
- 'Docker is not available. Test in %s will be skipped.' % __name__)
-
-
-def _run(command):
- popen = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
- popen.wait()
- result = popen.stdout.read().decode('utf-8')
-
- if result:
- return [str(r.strip('\r')) for r in result.split('\n')]
- else:
- return []
-
-
-class TestVSCtl(unittest.TestCase):
- """
- Test cases for ryu.lib.ovs.vsctl.VSCtl
- """
- container_mn = None # Container ID of Mininet
- container_mn_ip = None # IP of Mininet container
-
- vsctl = None # instance of vsctl.VSCtl
-
- @classmethod
- def _docker_exec(cls, container, command):
- return _run('docker exec -t %s %s' % (container, command))
-
- @classmethod
- def _docker_exec_mn(cls, command):
- return cls._docker_exec(cls.container_mn, command)
-
- @classmethod
- def _docker_run(cls, image):
- return _run('docker run --privileged -t -d %s' % image)[0]
-
- @classmethod
- def _docker_stop(cls, container):
- return _run('docker stop %s' % container)[0]
-
- @classmethod
- def _docker_rm(cls, container):
- return _run('docker rm %s' % container)[0]
-
- @classmethod
- def _docker_inspect_ip_addr(cls, container):
- return _run(
- 'docker inspect --format="{{.NetworkSettings.IPAddress}}" %s' %
- container)[0].strip('"')
-
- @classmethod
- def _set_up_mn_container(cls):
- cls.container_mn = cls._docker_run(DOCKER_IMAGE_MININET)
- cls.container_mn_ip = cls._docker_inspect_ip_addr(cls.container_mn)
-
- # Note: Wait for loading the OVS kernel module.
- # If the OVS kernel module is loaded at first time, it might take
- # a few seconds.
- sleep(5)
-
- cls._docker_exec_mn(
- 'ovs-vsctl set-manager %s' % OVSDB_MANAGER_ADDR)
-
- @classmethod
- def _set_up_vsctl(cls):
- cls.vsctl = vsctl.VSCtl(OVSDB_SWITCH_ADDR % cls.container_mn_ip)
-
- @classmethod
- def setUpClass(cls):
- cls._set_up_mn_container()
- cls._set_up_vsctl()
-
- @classmethod
- def _tear_down_mn_container(cls):
- cls._docker_exec_mn('mn --clean')
- cls._docker_stop(cls.container_mn)
- cls._docker_rm(cls.container_mn)
-
- @classmethod
- def tearDownClass(cls):
- cls._tear_down_mn_container()
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _run_commands(self, commands):
- self.vsctl.run_command(commands, timeout_sec=1)
-
- # 00: Open vSwitch commands
-
- def test_00_01_init(self):
- command = vsctl.VSCtlCommand('init')
- self._run_commands([command])
-
- ok_(command.result is None)
-
- def test_00_02_show(self):
- command = vsctl.VSCtlCommand('show')
- self._run_commands([command])
-
- ok_(command.result is not None)
-
- # 01: Bridge commands
-
- def test_01_01_add_br_bridge(self):
- bridge = 's1'
- command = vsctl.VSCtlCommand('add-br', (bridge,))
- self._run_commands([command])
-
- result = self._docker_exec_mn('ovs-vsctl list-br')
- ok_(bridge in result)
-
- def test_01_02_add_br_parent_vlan(self):
- bridge = 'sub-s1-100'
- parent = 's1'
- vlan = '100'
- command = vsctl.VSCtlCommand('add-br', (bridge, parent, vlan))
- self._run_commands([command])
-
- result = self._docker_exec_mn('ovs-vsctl list-br')
- ok_(bridge in result)
- result = self._docker_exec_mn(
- 'ovs-vsctl br-to-parent %s' % bridge)
- eq_(parent, result[0])
- result = self._docker_exec_mn(
- 'ovs-vsctl br-to-vlan %s' % bridge)
- eq_(vlan, result[0])
-
- def test_01_03_del_br(self):
- bridge = 's1'
- child = 'sub-s1-100'
-
- command = vsctl.VSCtlCommand('del-br', (bridge,))
- self._run_commands([command])
-
- result = self._docker_exec_mn('ovs-vsctl list-br')
- ok_(bridge not in result)
- ok_(child not in result)
-
- def test_01_04_list_br(self):
- bridge = 's1'
- child = 'sub-s1-100'
- vlan = '100'
- self._docker_exec_mn('ovs-vsctl add-br %s' % bridge)
- self._docker_exec_mn(
- 'ovs-vsctl add-br %s %s %s' % (child, bridge, vlan))
-
- command = vsctl.VSCtlCommand('list-br')
- self._run_commands([command])
-
- ok_(bridge in command.result)
- ok_(child in command.result)
-
- def test_01_05_br_exists(self):
- bridge = 's1'
-
- command = vsctl.VSCtlCommand('br-exists', (bridge, ))
- self._run_commands([command])
-
- eq_(True, command.result)
-
- def test_01_06_br_to_vlan(self):
- bridge = 's1'
-
- command = vsctl.VSCtlCommand('br-to-vlan', (bridge, ))
- self._run_commands([command])
-
- eq_(0, command.result)
-
- def test_01_06_br_to_vlan_fake_bridge(self):
- bridge = 'sub-s1-100'
-
- command = vsctl.VSCtlCommand('br-to-vlan', (bridge, ))
- self._run_commands([command])
-
- eq_(100, command.result)
-
- def test_01_07_br_to_parent(self):
- bridge = 's1'
- parent = bridge
-
- command = vsctl.VSCtlCommand('br-to-parent', (bridge, ))
- self._run_commands([command])
-
- # result = <ryu.lib.ovs.vsctl.VSCtlBridge object>
- eq_(parent, command.result.name)
-
- def test_01_07_br_to_parent_fake_bridge(self):
- bridge = 'sub-s1-100'
- parent = 's1'
-
- command = vsctl.VSCtlCommand('br-to-parent', (bridge, ))
- self._run_commands([command])
-
- # result = <ryu.lib.ovs.vsctl.VSCtlBridge object>
- eq_(parent, command.result.name)
-
- def test_01_08_br_set_external_id_add(self):
- bridge = 's1'
- key = 'ext_id_key'
- value = 'ext_id_value'
-
- command = vsctl.VSCtlCommand(
- 'br-set-external-id', (bridge, key, value))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl br-get-external-id %s %s' % (bridge, key))
- eq_(value, result[0])
-
- def test_01_09_br_get_external_id_value(self):
- bridge = 's1'
- key = 'ext_id_key'
- value = 'ext_id_value'
-
- command = vsctl.VSCtlCommand(
- 'br-get-external-id', (bridge, key))
- self._run_commands([command])
-
- eq_(value, command.result)
-
- def test_01_10_br_get_external_id_dict(self):
- bridge = 's1'
- key = 'ext_id_key'
- value = 'ext_id_value'
-
- command = vsctl.VSCtlCommand(
- 'br-get-external-id', (bridge,))
- self._run_commands([command])
-
- eq_({key: value}, command.result)
-
- def test_01_11_br_set_external_id_clear(self):
- bridge = 's1'
- key = 'ext_id_key'
-
- command = vsctl.VSCtlCommand(
- 'br-set-external-id', (bridge, key))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl br-get-external-id %s %s' % (bridge, key))
- eq_([], result)
-
- # Clean up
- self._docker_exec_mn('mn --clean')
-
- # 02: Port commands
-
- def test_02_01_list_ports(self):
- bridge = 's1'
- interface_1 = 's1-eth1'
- interface_2 = 's1-eth2'
-
- self._docker_exec_mn(
- 'ip link add %s type dummy' % interface_1)
- self._docker_exec_mn(
- 'ip link add %s type dummy' % interface_2)
- self._docker_exec_mn(
- 'ovs-vsctl add-br %(bridge)s'
- ' -- add-port %(bridge)s %(interface_1)s'
- ' -- add-port %(bridge)s %(interface_2)s' % locals())
-
- command = vsctl.VSCtlCommand('list-ports', (bridge,))
- self._run_commands([command])
-
- ok_(interface_1 in command.result)
- ok_(interface_2 in command.result)
-
- def test_02_02_add_port(self):
- bridge = 's1'
- interface_1 = 's1-eth1'
- self._docker_exec_mn(
- 'ovs-vsctl del-port %s %s' % (bridge, interface_1))
-
- command = vsctl.VSCtlCommand('add-port', (bridge, interface_1))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl port-to-br %s' % interface_1)
- eq_(bridge, result[0])
-
- def test_02_03_add_bond(self):
- bridge = 's1'
- interface_1 = 's1-eth1'
- interface_2 = 's1-eth2'
- port = 's1-bond1'
- interface_list = [interface_1, interface_2]
- self._docker_exec_mn('ovs-vsctl del-br %s' % bridge)
- self._docker_exec_mn('ovs-vsctl add-br %s' % bridge)
-
- command = vsctl.VSCtlCommand(
- 'add-bond', (bridge, port, interface_list))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl port-to-br %s' % port)
- eq_(bridge, result[0])
-
- def test_02_04_del_port(self):
- bridge = 's1'
- port = 's1-bond1'
-
- command = vsctl.VSCtlCommand('del-port', (bridge, port))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl list-ports %s' % bridge)
- eq_([], result)
-
- def test_02_05_port_to_br(self):
- bridge = 's1'
- port_1 = 's1-eth1'
- port_2 = 's1-eth2'
- self._docker_exec_mn('ovs-vsctl del-br %s' % bridge)
- self._docker_exec_mn(
- 'ovs-vsctl add-br %(bridge)s'
- ' -- add-port %(bridge)s %(port_1)s'
- ' -- add-port %(bridge)s %(port_2)s' % locals())
-
- command = vsctl.VSCtlCommand('port-to-br', (port_1,))
- self._run_commands([command])
-
- eq_(bridge, command.result)
-
- # Clean up
- self._docker_exec_mn('mn --clean')
-
- # 03: Interface commands
-
- def test_03_01_list_ifaces(self):
- bridge = 's1'
- interface_1 = 's1-eth1'
- interface_2 = 's1-eth2'
-
- self._docker_exec_mn(
- 'ip link add %s type dummy' % interface_1)
- self._docker_exec_mn(
- 'ip link add %s type dummy' % interface_2)
- self._docker_exec_mn(
- 'ovs-vsctl add-br %(bridge)s'
- ' -- add-port %(bridge)s %(interface_1)s'
- ' -- add-port %(bridge)s %(interface_2)s' % locals())
-
- command = vsctl.VSCtlCommand('list-ifaces', (bridge,))
- self._run_commands([command])
-
- ok_(interface_1 in command.result)
- ok_(interface_2 in command.result)
-
- def test_03_02_ifaces_to_br(self):
- bridge = 's1'
- interface_1 = 's1-eth1'
-
- command = vsctl.VSCtlCommand('iface-to-br', (interface_1,))
- self._run_commands([command])
-
- eq_(bridge, command.result)
-
- # Clean up
- self._docker_exec_mn('mn --clean')
-
- # 04: Controller commands
-
- def test_04_01_get_controller(self):
- bridge = 's1'
- controller = 'tcp:127.0.0.1:6653'
- self._docker_exec_mn(
- 'ovs-vsctl add-br %(bridge)s'
- ' -- set-controller %(bridge)s %(controller)s' % locals())
-
- command = vsctl.VSCtlCommand('get-controller', (bridge,))
- self._run_commands([command])
-
- eq_(1, len(command.result))
- eq_(controller, command.result[0])
-
- def test_04_02_del_controller(self):
- bridge = 's1'
-
- command = vsctl.VSCtlCommand('del-controller', (bridge,))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get-controller %s' % bridge)
- eq_([], result)
-
- def test_04_03_set_controller(self):
- bridge = 's1'
- controller = 'tcp:127.0.0.1:6653'
-
- command = vsctl.VSCtlCommand('set-controller', (bridge, controller))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get-controller %s' % bridge)
- eq_(controller, result[0])
-
- def test_04_04_get_fail_mode(self):
- bridge = 's1'
- fai_mode = 'secure'
- self._docker_exec_mn(
- 'ovs-vsctl set-fail-mode %s %s' % (bridge, fai_mode))
-
- command = vsctl.VSCtlCommand('get-fail-mode', (bridge,))
- self._run_commands([command])
-
- eq_(fai_mode, command.result)
-
- def test_04_05_del_fail_mode(self):
- bridge = 's1'
-
- command = vsctl.VSCtlCommand('del-fail-mode', (bridge,))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get-fail-mode %s' % bridge)
- eq_([], result)
-
- def test_04_06_set_fail_mode(self):
- bridge = 's1'
- fail_mode = 'secure'
-
- command = vsctl.VSCtlCommand('set-fail-mode', (bridge, fail_mode))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get-fail-mode %s' % bridge)
- eq_(fail_mode, result[0])
-
- # Clean up
- self._docker_exec_mn('mn --clean')
-
- # 05: Manager commands (not implemented yet)
- # 06: SSL commands (not implemented yet)
- # 07: Switch commands (not implemented yet)
-
- # 08: Database commands
-
- def test_08_01_list(self):
- table = 'Bridge'
- bridge = 's1'
- interface_1 = 's1-eth1'
- interface_2 = 's1-eth2'
- fail_mode = 'secure'
- protocols = 'OpenFlow10,OpenFlow13'
- datapath_id = '1111111111111111'
-
- self._docker_exec_mn(
- 'ip link add %s type dummy' % interface_1)
- self._docker_exec_mn(
- 'ip link add %s type dummy' % interface_2)
- self._docker_exec_mn(
- 'ovs-vsctl add-br %(bridge)s'
- ' -- add-port %(bridge)s %(interface_1)s'
- ' -- add-port %(bridge)s %(interface_2)s' % locals())
- self._docker_exec_mn(
- 'ovs-vsctl set %(table)s %(bridge)s '
- 'fail_mode=%(fail_mode)s '
- 'protocols=%(protocols)s '
- 'other_config:datapath-id=%(datapath_id)s' % locals())
-
- command = vsctl.VSCtlCommand('list', (table,))
- self._run_commands([command])
-
- eq_(1, len(command.result))
- # command.result[0] = <ryu.lib.ovs.vsctl.VSCtlBridge object>
- eq_(bridge, command.result[0].name)
-
- def test_08_02_find(self):
- table = 'Bridge'
- bridge = 's1'
-
- command = vsctl.VSCtlCommand('find', (table, 'name=%s' % bridge))
- self._run_commands([command])
-
- eq_(1, len(command.result))
- # command.result[0] = <ovs.db.idl.Row object object> for Bridge
- eq_(bridge, command.result[0].name)
-
- def test_08_02_find_complex(self):
- table = 'Bridge'
- bridge = 's1'
- fail_mode = 'secure'
- protocols = 'OpenFlow10,OpenFlow13'
- datapath_id = '1111111111111111'
-
- command = vsctl.VSCtlCommand(
- 'find', (table, 'fail_mode=%s' % fail_mode,
- 'protocols=%s' % protocols,
- 'other_config:datapath-id=%s' % datapath_id))
- self._run_commands([command])
-
- eq_(1, len(command.result))
- # command.result[0] = <ovs.db.idl.Row object object> for Bridge
- eq_(bridge, command.result[0].name)
-
- def test_08_03_get_01_value(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'fail_mode'
- value = 'secure'
-
- command = vsctl.VSCtlCommand('get', (table, bridge, column))
- self._run_commands([command])
-
- # command.result[0] is a list of return values
- eq_(value, command.result[0][0])
-
- def test_08_03_get_02_set(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'protocols'
- value = 'OpenFlow10,OpenFlow13'.split(',')
-
- command = vsctl.VSCtlCommand('get', (table, bridge, column))
- self._run_commands([command])
-
- # command.result[0] is a list
- eq_(value, command.result[0])
-
- def test_08_03_get_03_map(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'other_config'
- key = 'datapath-id'
- datapath_id = '1111111111111111'
- value = {key: datapath_id}
-
- command = vsctl.VSCtlCommand('get', (table, bridge, column))
- self._run_commands([command])
-
- # command.result[0] is a dict
- eq_(value, command.result[0])
-
- def test_08_03_get_04_map_value(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'other_config'
- key = 'datapath-id'
- datapath_id = '1111111111111111'
- value = datapath_id
-
- command = vsctl.VSCtlCommand(
- 'get', (table, bridge, '%s:%s' % (column, key)))
- self._run_commands([command])
-
- # command.result[0] is a dict
- eq_(value, command.result[0])
-
- def test_08_04_set_01_value(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'fail_mode'
- value = 'standalone'
-
- command = vsctl.VSCtlCommand(
- 'set', (table, bridge, '%s=%s' % (column, value)))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- eq_(value, result[0])
-
- def test_08_04_set_02_set(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'protocols'
- value = 'OpenFlow10,OpenFlow12,OpenFlow13'
-
- command = vsctl.VSCtlCommand(
- 'set', (table, bridge, '%s=%s' % (column, value)))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '["OpenFlow10", "OpenFlow12", "OpenFlow13"]'
- eq_(expected_value, result[0])
-
- def test_08_04_set_03_map(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'other_config'
- key = 'datapath-id'
- value = '0000000000000001'
-
- command = vsctl.VSCtlCommand(
- 'set', (table, bridge, '%s:%s=%s' % (column, key, value)))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s:%s' % (table, bridge, column, key))
- expected_value = '"0000000000000001"'
- eq_(expected_value, result[0])
-
- def test_08_05_add_01_value(self):
- table = 'Port'
- bridge = 's1'
- column = 'tag'
- value = '100'
-
- command = vsctl.VSCtlCommand(
- 'add', (table, bridge, column, value))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- eq_(value, result[0])
-
- def test_08_05_add_02_set(self):
- table = 'Port'
- bridge = 's1'
- column = 'trunks'
- value = '100,200'
-
- command = vsctl.VSCtlCommand(
- 'add', (table, bridge, column, value))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '[100, 200]'
- eq_(expected_value, result[0])
-
- def test_08_05_add_03_map(self):
- table = 'Bridge'
- bridge = 's1'
- column = 'other_config'
- key = 'datapath-id'
- value = '0000000000000011'
-
- command = vsctl.VSCtlCommand(
- 'add', (table, bridge, column, '%s=%s' % (key, value)))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s:%s' % (table, bridge, column, key))
- expected_value = '"0000000000000011"'
- eq_(expected_value, result[0])
-
- def test_08_06_remove_01_value(self):
- table = 'Port'
- bridge = 's1'
- column = 'tag'
- value = '100'
- self._docker_exec_mn(
- 'ovs-vsctl set %s %s %s=%s' % (table, bridge, column, value))
-
- command = vsctl.VSCtlCommand(
- 'remove', (table, bridge, column, value))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '[]'
- eq_(expected_value, result[0])
-
- def test_08_06_remove_02_set(self):
- table = 'Port'
- bridge = 's1'
- column = 'trunks'
- init_value = '100,200,300'
- value = '100,200'
- self._docker_exec_mn(
- 'ovs-vsctl set %s %s %s=%s' % (table, bridge, column, init_value))
-
- command = vsctl.VSCtlCommand(
- 'remove', (table, bridge, column, value))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '[300]'
- eq_(expected_value, result[0])
-
- def test_08_06_remove_03_map(self):
- table = 'Port'
- bridge = 's1'
- column = 'other_config'
- key = 'priority-tag'
- value = 'true'
- self._docker_exec_mn(
- 'ovs-vsctl set %s %s %s:%s=%s' %
- (table, bridge, column, key, value))
-
- command = vsctl.VSCtlCommand(
- 'remove', (table, bridge, column, '%s=%s' % (key, value)))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '{}'
- eq_(expected_value, result[0])
-
- def test_08_07_clear_01_value(self):
- table = 'Port'
- bridge = 's1'
- column = 'tag'
- value = '100'
- self._docker_exec_mn(
- 'ovs-vsctl set %s %s %s=%s' % (table, bridge, column, value))
-
- command = vsctl.VSCtlCommand(
- 'clear', (table, bridge, column))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '[]'
- eq_(expected_value, result[0])
-
- def test_08_07_clear_02_set(self):
- table = 'Port'
- bridge = 's1'
- column = 'trunks'
- value = '100,200'
- self._docker_exec_mn(
- 'ovs-vsctl set %s %s %s=%s' % (table, bridge, column, value))
-
- command = vsctl.VSCtlCommand(
- 'clear', (table, bridge, column))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '[]'
- eq_(expected_value, result[0])
-
- def test_08_07_clear_03_map(self):
- table = 'Port'
- bridge = 's1'
- column = 'other_config'
- key = 'priority-tag'
- value = 'true'
- self._docker_exec_mn(
- 'ovs-vsctl set %s %s %s:%s=%s' %
- (table, bridge, column, key, value))
-
- command = vsctl.VSCtlCommand(
- 'clear', (table, bridge, column, '%s=%s' % (key, value)))
- self._run_commands([command])
-
- result = self._docker_exec_mn(
- 'ovs-vsctl get %s %s %s' % (table, bridge, column))
- expected_value = '{}'
- eq_(expected_value, result[0])
-
- # Clean up
- self._docker_exec_mn('mn --clean')
diff --git a/tests/unit/lib/test_addrconv.py b/tests/unit/lib/test_addrconv.py
deleted file mode 100644
index 77877038..00000000
--- a/tests/unit/lib/test_addrconv.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-from nose.tools import eq_
-
-from ryu.lib import addrconv
-
-
-class Test_addrconv(unittest.TestCase):
- """ Test case for ryu.lib.addrconv
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- @staticmethod
- def _test_conv(conv, text_value, bin_value):
- eq_(conv.text_to_bin(text_value), bin_value)
- eq_(conv.bin_to_text(bin_value), text_value)
-
- def test_ipv4(self):
- self._test_conv(addrconv.ipv4, '0.0.0.0', b'\x00\x00\x00\x00')
- self._test_conv(addrconv.ipv4, '127.0.0.1', b'\x7f\x00\x00\x01')
- self._test_conv(addrconv.ipv4, '255.255.0.0', b'\xff\xff\x00\x00')
-
- def test_ipv6(self):
- self._test_conv(addrconv.ipv6, 'ff02::1',
- (b'\xff\x02\x00\x00\x00\x00\x00\x00'
- b'\x00\x00\x00\x00\x00\x00\x00\x01'))
- self._test_conv(addrconv.ipv6, 'fe80::f00b:a4ff:fe7d:f8ea',
- (b'\xfe\x80\x00\x00\x00\x00\x00\x00'
- b'\xf0\x0b\xa4\xff\xfe\x7d\xf8\xea'))
- self._test_conv(addrconv.ipv6, '::',
- (b'\x00\x00\x00\x00\x00\x00\x00\x00'
- b'\x00\x00\x00\x00\x00\x00\x00\x00'))
-
- def test_mac(self):
- self._test_conv(addrconv.mac, 'f2:0b:a4:01:0a:23',
- b'\xf2\x0b\xa4\x01\x0a\x23')
diff --git a/tests/unit/lib/test_hub.py b/tests/unit/lib/test_hub.py
deleted file mode 100644
index d8b75996..00000000
--- a/tests/unit/lib/test_hub.py
+++ /dev/null
@@ -1,239 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import time
-import unittest
-from nose.tools import raises
-
-from ryu.lib import hub
-hub.patch()
-
-
-class MyException(BaseException):
- pass
-
-
-class Test_hub(unittest.TestCase):
- """ Test case for ryu.lib.hub
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- # we want to test timeout first because the rest of tests rely on it.
- # thus test_0_ prefix.
-
- @raises(hub.Timeout)
- def test_0_timeout1(self):
- with hub.Timeout(0.1):
- hub.sleep(1)
-
- @raises(MyException)
- def test_0_timeout2(self):
- with hub.Timeout(0.1, MyException):
- hub.sleep(1)
-
- def test_0_timeout3(self):
- with hub.Timeout(1):
- hub.sleep(0.1)
- # sleep some more to ensure timer cancelation
- hub.sleep(2)
-
- def test_spawn_event1(self):
- def _child(ev, result):
- hub.sleep(1)
- result.append(1)
- ev.set()
-
- ev = hub.Event()
- result = []
- with hub.Timeout(2):
- hub.spawn(_child, ev, result)
- ev.wait()
- assert len(result) == 1
-
- def test_spawn_event2(self):
- def _child(ev, result):
- hub.sleep(1)
- result.append(1)
- ev.set()
-
- ev = hub.Event()
- result = []
- with hub.Timeout(2):
- t = hub.spawn(_child, ev, result)
- ev.wait(timeout=0.5)
- assert len(result) == 0
- ev.wait()
- assert len(result) == 1
-
- def test_spawn_event3(self):
- def _child(ev, ev2, result):
- ev2.wait()
- hub.sleep(0.5)
- result.append(1)
- ev.set()
-
- ev = hub.Event()
- ev2 = hub.Event()
- result = []
- with hub.Timeout(2):
- hub.spawn(_child, ev, ev2, result)
- hub.spawn(_child, ev, ev2, result)
- hub.sleep(0.5)
- ev2.set() # this should wake up the above created two threads
- ev.wait(timeout=1)
- assert len(result) == 2
-
- def test_spawn_select1(self):
- import select
- import socket
-
- def _child(s1):
- hub.sleep(0.5)
- s1.send(b"hoge")
-
- s1, s2 = socket.socketpair()
- with hub.Timeout(1):
- hub.spawn(_child, s1)
- select.select([s2.fileno()], [], [])
- select.select([s2.fileno()], [], []) # return immediately
-
- @raises(MyException)
- def test_select1(self):
- import select
- import socket
-
- s1, s2 = socket.socketpair()
- with hub.Timeout(1, MyException):
- select.select([s2.fileno()], [], [])
-
- def test_select2(self):
- import select
-
- with hub.Timeout(1, MyException):
- select.select([], [], [], 0) # timeout immediately
-
- def test_select3(self):
- import select
- import socket
-
- s1, s2 = socket.socketpair()
- with hub.Timeout(1, MyException):
- list = [s1.fileno(), s2.fileno()]
- rlist, wlist, xlist = select.select(list, list, list)
- assert not s1.fileno() in rlist
- assert not s2.fileno() in rlist
- # the following two assertions are commented out because one of
- # them fails with eventlet-patched select.
- # assert s1.fileno() in wlist
- # assert s2.fileno() in wlist
- # note: eventlet-patched select returns at most one file.
- assert (s1.fileno() in wlist) or (s2.fileno() in wlist)
- assert not s1.fileno() in xlist
- assert not s2.fileno() in xlist
-
- def test_spawn_joinall(self):
- def _child(ev2, result):
- ev2.wait()
- hub.sleep(0.5)
- result.append(1)
- raise BaseException("this exception should not be propagated")
-
- ev2 = hub.Event()
- threads = []
- result = []
- with hub.Timeout(2):
- threads.append(hub.spawn(_child, ev2, result))
- threads.append(hub.spawn(_child, ev2, result))
- hub.sleep(0.5)
- ev2.set() # this should wake up the above created two threads
- hub.joinall(threads)
- assert len(result) == 2
-
- def test_spawn_kill_joinall(self):
- def _child(ev2, result):
- ev2.wait()
- result.append(1)
-
- ev2 = hub.Event()
- threads = []
- result = []
- with hub.Timeout(2):
- threads.append(hub.spawn(_child, ev2, result))
- threads.append(hub.spawn(_child, ev2, result))
- hub.sleep(0.5)
- for t in threads:
- hub.kill(t)
- hub.joinall(threads)
- assert len(result) == 0
-
- def test_spawn_kill_nowait_joinall(self):
- # XXX this test relies on the scheduling behaviour.
- # the intention here is, killing threads before they get active.
-
- def _child(result):
- result.append(1)
-
- threads = []
- result = []
- with hub.Timeout(2):
- threads.append(hub.spawn(_child, result))
- for t in threads:
- hub.kill(t)
- hub.joinall(threads)
- assert len(result) == 0
-
- def test_spawn_kill_die_joinall(self):
- def _child(result):
- result.append(1)
-
- threads = []
- result = []
- with hub.Timeout(2):
- threads.append(hub.spawn(_child, result))
- threads.append(hub.spawn(_child, result))
- hub.sleep(0.5)
- for t in threads:
- hub.kill(t)
- hub.joinall(threads)
- assert len(result) == 2
-
- def test_spawn_exception_joinall(self):
- def _child():
- raise Exception("hoge")
-
- threads = []
- with hub.Timeout(2):
- threads.append(hub.spawn(_child))
- threads.append(hub.spawn(_child))
- hub.sleep(0.5)
- hub.joinall(threads)
-
- def test_event1(self):
- ev = hub.Event()
- ev.set()
- with hub.Timeout(1):
- ev.wait() # should return immediately
-
- def test_event2(self):
- ev = hub.Event()
- # allow multiple sets unlike eventlet Event
- ev.set()
- ev.set()
diff --git a/tests/unit/lib/test_import_module.py b/tests/unit/lib/test_import_module.py
deleted file mode 100644
index 852ee21b..00000000
--- a/tests/unit/lib/test_import_module.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-from nose.tools import eq_
-
-from ryu.utils import import_module
-
-
-class Test_import_module(unittest.TestCase):
- """
- Test case for ryu.utils.import_module
- """
-
- @staticmethod
- def _my_import(name):
- mod = __import__(name)
- components = name.split('.')
- for c in components[1:]:
- mod = getattr(mod, c)
- return mod
-
- def test_import_module_with_same_basename(self):
- aaa = import_module('tests.unit.lib.test_mod.aaa.mod')
- eq_("this is aaa", aaa.name)
- bbb = import_module('tests.unit.lib.test_mod.bbb.mod')
- eq_("this is bbb", bbb.name)
-
- def test_import_module_by_filename(self):
- ccc = import_module('./lib/test_mod/ccc/mod.py')
- eq_("this is ccc", ccc.name)
- ddd = import_module('./lib/test_mod/ddd/mod.py')
- # Note: When importing a module by filename, if module file name
- # is duplicated, import_module reload (override) a module instance.
- eq_("this is ddd", ddd.name)
-
- def test_import_same_module1(self):
- from tests.unit.lib.test_mod import eee as eee1
- eq_("this is eee", eee1.name)
- eee2 = import_module('./lib/test_mod/eee.py')
- eq_("this is eee", eee2.name)
-
- def test_import_same_module2(self):
- fff1 = import_module('./lib/test_mod/fff.py')
- eq_("this is fff", fff1.name)
- fff2 = import_module('tests.unit.lib.test_mod.fff')
- eq_("this is fff", fff2.name)
-
- def test_import_same_module3(self):
- ggg1 = import_module('./lib/test_mod/ggg.py')
- eq_("this is ggg", ggg1.name)
- ggg2 = self._my_import('tests.unit.lib.test_mod.ggg')
- eq_("this is ggg", ggg2.name)
diff --git a/tests/unit/lib/test_ip.py b/tests/unit/lib/test_ip.py
deleted file mode 100644
index 66d8f0c2..00000000
--- a/tests/unit/lib/test_ip.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import logging
-import struct
-import unittest
-
-from nose.tools import eq_
-from nose.tools import raises
-
-from ryu.lib import ip
-
-LOG = logging.getLogger('test_ip')
-
-
-class Test_ip(unittest.TestCase):
- """
- test case for ip address module
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_ipv4_to_bin(self):
- ipv4_str = '10.28.197.1'
- val = 0x0a1cc501
-
- (res,) = struct.unpack('!I', ip.ipv4_to_bin(ipv4_str))
- eq_(val, res)
-
- def test_ipv4_to_int(self):
- ipv4_str = '10.28.197.1'
- val = 169657601
-
- res = ip.ipv4_to_int(ipv4_str)
- eq_(val, res)
-
- def test_ipv4_to_str_from_bin(self):
- ipv4_bin = struct.pack('!I', 0x0a1cc501)
- val = '10.28.197.1'
-
- res = ip.ipv4_to_str(ipv4_bin)
- eq_(val, res)
-
- def test_ipv4_to_str_from_int(self):
- ipv4_int = 169657601
- val = '10.28.197.1'
-
- res = ip.ipv4_to_str(ipv4_int)
- eq_(val, res)
-
- def test_ipv6_to_bin(self):
- ipv6_str = '2013:da8:215:8f2:aa20:66ff:fe4c:9c3c'
- val = struct.pack('!8H', 0x2013, 0xda8, 0x215, 0x8f2, 0xaa20, 0x66ff,
- 0xfe4c, 0x9c3c)
- res = ip.ipv6_to_bin(ipv6_str)
- eq_(val, res)
-
- def test_ipv6_to_bin_with_shortcut(self):
- ipv6_str = '3f:10::1:2'
- val = struct.pack('!8H', 0x3f, 0x10, 0, 0, 0, 0, 0x1, 0x2)
-
- res = ip.ipv6_to_bin(ipv6_str)
- eq_(val, res)
-
- def test_ipv6_to_int(self):
- ipv6_str = '2013:da8:215:8f2:aa20:66ff:fe4c:9c3c'
- val = 0x20130da8021508f2aa2066fffe4c9c3c
-
- res = ip.ipv6_to_int(ipv6_str)
- eq_(val, res)
-
- def test_ipv6_to_int_with_shortcut(self):
- ipv6_str = '3f:10::1:2'
- val = 0x003f0010000000000000000000010002
-
- res = ip.ipv6_to_int(ipv6_str)
- eq_(val, res)
-
- def test_ipv6_to_str_from_bin(self):
- ipv6_bin = struct.pack('!8H', 0x2013, 0xda8, 0x215, 0x8f2, 0xaa20,
- 0x66ff, 0xfe4c, 0x9c3c)
- val = '2013:da8:215:8f2:aa20:66ff:fe4c:9c3c'
-
- res = ip.ipv6_to_str(ipv6_bin)
- eq_(val, res)
-
- def test_ipv6_to_str_from_int(self):
- ipv6_int = 0x20130da8021508f2aa2066fffe4c9c3c
- val = '2013:da8:215:8f2:aa20:66ff:fe4c:9c3c'
-
- res = ip.ipv6_to_str(ipv6_int)
- eq_(val, res)
-
- def test_text_to_bin_from_ipv4_text(self):
- ipv4_str = '10.28.197.1'
- val = struct.pack('!4B', 10, 28, 197, 1)
- res = ip.text_to_bin(ipv4_str)
- eq_(val, res)
-
- def test_text_to_bin_from_ipv6_text(self):
- ipv6_str = '2013:da8:215:8f2:aa20:66ff:fe4c:9c3c'
- val = struct.pack('!8H', 0x2013, 0xda8, 0x215, 0x8f2, 0xaa20,
- 0x66ff, 0xfe4c, 0x9c3c)
- res = ip.text_to_bin(ipv6_str)
- eq_(val, res)
-
- def test_text_to_int_from_ipv4_text(self):
- ipv4_str = '10.28.197.1' # 0a.1c.c5.01
- val = 0x0a1cc501
-
- res = ip.text_to_int(ipv4_str)
- eq_(val, res)
-
- def test_text_to_int_from_ipv6_text(self):
- ipv6_str = '2013:da8:215:8f2:aa20:66ff:fe4c:9c3c'
- val = 0x20130da8021508f2aa2066fffe4c9c3c
-
- res = ip.text_to_int(ipv6_str)
- eq_(val, res)
-
- def test_bin_to_text_from_ipv4_bin(self):
- ipv4_bin = struct.pack('!4B', 10, 28, 197, 1)
- val = '10.28.197.1'
- res = ip.bin_to_text(ipv4_bin)
- eq_(val, res)
-
- def test_bin_to_text_from_ipv6_bin(self):
- ipv6_bin = struct.pack('!8H', 0x2013, 0xda8, 0x215, 0x8f2, 0xaa20,
- 0x66ff, 0xfe4c, 0x9c3c)
- val = '2013:da8:215:8f2:aa20:66ff:fe4c:9c3c'
- res = ip.bin_to_text(ipv6_bin)
- eq_(val, res)
-
- @raises(struct.error)
- def test_bin_to_text_with_invalid_bin(self):
- invalid_bin = b'invalid'
-
- ip.bin_to_text(invalid_bin)
diff --git a/tests/unit/lib/test_mac.py b/tests/unit/lib/test_mac.py
deleted file mode 100644
index 91839ead..00000000
--- a/tests/unit/lib/test_mac.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import struct
-import netaddr
-from struct import *
-from nose.tools import *
-
-from ryu.lib import mac
-
-LOG = logging.getLogger('test_mac')
-
-
-class Test_mac(unittest.TestCase):
- """ Test case for mac
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_mac_is_multicast(self):
- addr = b'\x01\x23\x45\x67\x89\x0a'
- val = True
-
- res = mac.is_multicast(addr)
-
- eq_(val, res)
-
- def test_mac_haddr_to_str(self):
- addr = 'aa:aa:aa:aa:aa:aa'
- val = b'\xaa\xaa\xaa\xaa\xaa\xaa'
-
- res = mac.haddr_to_str(val)
-
- eq_(addr, res)
-
- def test_mac_haddr_to_str_none(self):
- """ addr is None
- """
- addr = None
- val = 'None'
- res = mac.haddr_to_str(addr)
-
- eq_(val, res)
-
- @raises(AssertionError)
- def test_mac_haddr_to_str_assert(self):
- val = b'\xaa\xaa\xaa\xaa\xaa'
-
- res = mac.haddr_to_str(val)
-
- def test_mac_haddr_to_bin_false(self):
- """ len(hexes) = 6 (False)
- """
- addr = 'aa:aa:aa:aa:aa:aa'
- val = b'\xaa\xaa\xaa\xaa\xaa\xaa'
-
- res = mac.haddr_to_bin(addr)
-
- eq_(val, res)
-
- @raises(ValueError)
- def test_mac_haddr_to_bin_true(self):
- """ len(hexes) != 6 (True)
- """
- addr = 'aa:aa:aa:aa:aa'
- res = mac.haddr_to_bin(addr)
-
- def test_mac_haddr_bitand(self):
- addr = b'\xaa\xaa\xaa\xaa\xaa\xaa'
- mask = b'\xff\xff\xff\x00\x00\x00'
- val = b'\xaa\xaa\xaa\x00\x00\x00'
-
- res = mac.haddr_bitand(addr, mask)
-
- eq_(val, res)
diff --git a/tests/unit/lib/test_mod/__init__.py b/tests/unit/lib/test_mod/__init__.py
deleted file mode 100644
index ca8ef539..00000000
--- a/tests/unit/lib/test_mod/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/tests/unit/lib/test_mod/aaa/__init__.py b/tests/unit/lib/test_mod/aaa/__init__.py
deleted file mode 100644
index ca8ef539..00000000
--- a/tests/unit/lib/test_mod/aaa/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/tests/unit/lib/test_mod/aaa/mod.py b/tests/unit/lib/test_mod/aaa/mod.py
deleted file mode 100644
index a5eff136..00000000
--- a/tests/unit/lib/test_mod/aaa/mod.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name = "this is aaa"
diff --git a/tests/unit/lib/test_mod/bbb/__init__.py b/tests/unit/lib/test_mod/bbb/__init__.py
deleted file mode 100644
index ca8ef539..00000000
--- a/tests/unit/lib/test_mod/bbb/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/tests/unit/lib/test_mod/bbb/mod.py b/tests/unit/lib/test_mod/bbb/mod.py
deleted file mode 100644
index 397c8554..00000000
--- a/tests/unit/lib/test_mod/bbb/mod.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name = "this is bbb"
diff --git a/tests/unit/lib/test_mod/ccc/__init__.py b/tests/unit/lib/test_mod/ccc/__init__.py
deleted file mode 100644
index ce07156d..00000000
--- a/tests/unit/lib/test_mod/ccc/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/tests/unit/lib/test_mod/ccc/mod.py b/tests/unit/lib/test_mod/ccc/mod.py
deleted file mode 100644
index 5be826cf..00000000
--- a/tests/unit/lib/test_mod/ccc/mod.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name = "this is ccc"
diff --git a/tests/unit/lib/test_mod/ddd/__init__.py b/tests/unit/lib/test_mod/ddd/__init__.py
deleted file mode 100644
index ce07156d..00000000
--- a/tests/unit/lib/test_mod/ddd/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/tests/unit/lib/test_mod/ddd/mod.py b/tests/unit/lib/test_mod/ddd/mod.py
deleted file mode 100644
index 31d31d53..00000000
--- a/tests/unit/lib/test_mod/ddd/mod.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name = "this is ddd"
diff --git a/tests/unit/lib/test_mod/eee.py b/tests/unit/lib/test_mod/eee.py
deleted file mode 100644
index ed21a8aa..00000000
--- a/tests/unit/lib/test_mod/eee.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name = "this is eee"
diff --git a/tests/unit/lib/test_mod/fff.py b/tests/unit/lib/test_mod/fff.py
deleted file mode 100644
index 5a565e38..00000000
--- a/tests/unit/lib/test_mod/fff.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name = "this is fff"
diff --git a/tests/unit/lib/test_mod/ggg.py b/tests/unit/lib/test_mod/ggg.py
deleted file mode 100644
index 29555e56..00000000
--- a/tests/unit/lib/test_mod/ggg.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name = "this is ggg"
diff --git a/tests/unit/lib/test_mrtlib.py b/tests/unit/lib/test_mrtlib.py
deleted file mode 100644
index e870f401..00000000
--- a/tests/unit/lib/test_mrtlib.py
+++ /dev/null
@@ -1,765 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import bz2
-import io
-import logging
-import os
-import sys
-import unittest
-
-try:
- import mock # Python 2
-except ImportError:
- from unittest import mock # Python 3
-
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.lib import addrconv
-from ryu.lib import mrtlib
-from ryu.lib.packet import bgp
-from ryu.lib.packet import ospf
-from ryu.utils import binary_str
-
-
-LOG = logging.getLogger(__name__)
-
-MRT_DATA_DIR = os.path.join(
- os.path.dirname(sys.modules[__name__].__file__), '../../packet_data/mrt/')
-
-
-class TestMrtlib(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.
- """
-
- def test_reader(self):
- files = [
- 'rib.20161101.0000_pick.bz2',
- 'updates.20161101.0000.bz2',
- ]
-
- for f in files:
- # print('\n*** testing mrtlib.Reader with %s ...' % f)
- counter = 0
- input_file = os.path.join(MRT_DATA_DIR, f)
- for record in mrtlib.Reader(bz2.BZ2File(input_file, 'rb')):
- # print('* No.%d\n%s' % (counter, record))
- ok_(not isinstance(record, mrtlib.UnknownMrtRecord))
- counter += 1
-
- def test_writer(self):
- files = [
- 'rib.20161101.0000_pick.bz2',
- 'updates.20161101.0000.bz2',
- ]
-
- for f in files:
- # print('\n*** testing mrtlib.Writer with %s ...' % f)
- input_file = os.path.join(MRT_DATA_DIR, f)
- input_buf = bz2.BZ2File(input_file, 'rb').read()
- input_records = list(mrtlib.Reader(bz2.BZ2File(input_file, 'rb')))
-
- counter = 0
- f = io.BytesIO()
- mrt_writer = mrtlib.Writer(f)
- for record in input_records:
- # print('* No.%d\n%s' % (counter, record))
- mrt_writer.write(record)
- counter += 1
-
- output_buf = f.getvalue()
-
- eq_(binary_str(input_buf), binary_str(output_buf))
-
- mrt_writer.close()
-
- eq_(True, mrt_writer._f.closed)
-
-
-class TestMrtlibMrtRecord(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.MrtRecord.
- """
-
- def test_init_without_type_subtype(self):
- type_ = mrtlib.MrtRecord.TYPE_TABLE_DUMP
- subtype = mrtlib.TableDumpMrtRecord.SUBTYPE_AFI_IPv4
-
- message = mrtlib.TableDumpAfiIPv4MrtMessage(
- view_num=1,
- seq_num=2,
- prefix='192.168.1.0',
- prefix_len=24,
- status=1,
- originated_time=0,
- peer_ip='10.0.0.1',
- peer_as=65000,
- bgp_attributes=[],
- )
- record = mrtlib.TableDumpMrtRecord(message)
-
- eq_(type_, record.type)
- eq_(subtype, record.subtype)
-
- def test_parse_pre_with_type_et(self):
- buf = (
- b'\x00\x00\x00\x00' # timestamp
- b'\x00\x11\x00\x00' # type=TYPE_BGP4MP_ET(17), subtype
- b'\x00\x00\x00\xaa' # length
- )
-
- required_len = mrtlib.MrtRecord.parse_pre(buf)
-
- eq_(0xaa + mrtlib.ExtendedTimestampMrtRecord.HEADER_SIZE,
- required_len)
-
-
-# Note: MrtCommonRecord is tested in TestMrtlibMrtRecord.
-# class TestMrtlibMrtCommonRecord(unittest.TestCase):
-
-
-class TestMrtlibExtendedTimestampMrtRecord(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.ExtendedTimestampMrtRecord.
- """
-
- def test_parse_extended_header(self):
- body = b'test'
- buf = (
- b'\x11\x11\x11\x11' # ms_timestamp
- + body
- )
-
- (headers,
- rest) = mrtlib.ExtendedTimestampMrtRecord.parse_extended_header(buf)
-
- ok_(isinstance(headers, list))
- eq_(1, len(headers))
- eq_(0x11111111, headers[0])
- eq_(body, rest)
-
- def test_serialize(self):
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x22\x22\x33\x33' # type, subtype
- b'\x00\x00\x00\x04' # length=len(body)
- b'\x44\x44\x44\x44' # ms_timestamp
- + body
- )
-
- message_mock = mock.MagicMock(spec=mrtlib.MrtMessage)
- message_mock.serialize.return_value = body
-
- record = mrtlib.ExtendedTimestampMrtRecord(
- message=message_mock,
- timestamp=0x11111111,
- type_=0x2222, subtype=0x3333,
- ms_timestamp=0x44444444,
- length=0x00000004,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
-
-
-class TestMrtlibUnknownMrtRecord(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.UnknownMrtRecord.
- """
-
- def test_parse(self):
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x22\x22\x33\x33' # type, subtype
- b'\x00\x00\x00\x04' # length=len(body)
- + body
- )
-
- (record, rest) = mrtlib.MrtRecord.parse(buf)
-
- eq_(0x11111111, record.timestamp)
- eq_(0x2222, record.type)
- eq_(0x3333, record.subtype)
- eq_(0x00000004, record.length)
- eq_(body, record.message.buf)
- eq_(b'', rest)
-
- def test_serialize(self):
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x22\x22\x33\x33' # type, subtype
- b'\x00\x00\x00\x04' # length=len(body)
- + body
- )
-
- message = mrtlib.UnknownMrtMessage(buf=body)
- record = mrtlib.UnknownMrtRecord(
- message=message,
- timestamp=0x11111111,
- type_=0x2222, subtype=0x3333,
- length=0x00000004,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
-
-
-class TestMrtlibOspf2MrtRecord(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.Ospf2MrtRecord.
- """
-
- @mock.patch('ryu.lib.packet.ospf.ospf.parser')
- def test_parse(self, mock_ospf_parser):
- remote_ip = '10.0.0.1'
- local_ip = '10.0.0.2'
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0b\x00\x00' # type=TYPE_OSPFv2(11), subtype
- b'\x00\x00\x00\x0c' # length=len(remote_ip + local_ip + body)
- + addrconv.ipv4.text_to_bin(remote_ip) # remote_ip
- + addrconv.ipv4.text_to_bin(local_ip) # local_ip
- + body # ospf_message
- )
-
- mock_ospf_message = mock.MagicMock(spec=ospf.OSPFMessage)
- mock_ospf_parser.return_value = (mock_ospf_message, None, '')
-
- (record, rest) = mrtlib.MrtRecord.parse(buf)
-
- eq_(0x11111111, record.timestamp)
- eq_(mrtlib.MrtRecord.TYPE_OSPFv2, record.type)
- eq_(0x0000, record.subtype)
- eq_(0x0000000c, record.length)
- eq_(remote_ip, record.message.remote_ip)
- eq_(local_ip, record.message.local_ip)
- eq_(mock_ospf_message, record.message.ospf_message)
- eq_(b'', rest)
-
- def test_serialize(self):
- remote_ip = '10.0.0.1'
- local_ip = '10.0.0.2'
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0b\x00\x00' # type=TYPE_OSPFv2(11), subtype
- b'\x00\x00\x00\x0c' # length=len(remote_ip + local_ip + body)
- + addrconv.ipv4.text_to_bin(remote_ip) # remote_ip
- + addrconv.ipv4.text_to_bin(local_ip) # local_ip
- + body # ospf_message
- )
-
- mock_ospf_message = mock.MagicMock(spec=ospf.OSPFMessage)
- mock_ospf_message.serialize.return_value = body
-
- message = mrtlib.Ospf2MrtMessage(
- remote_ip=remote_ip,
- local_ip=local_ip,
- ospf_message=mock_ospf_message,
- )
- record = mrtlib.Ospf2MrtRecord(
- message=message,
- timestamp=0x11111111,
- # type_=None,
- # subtype=None,
- # length=None,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
-
-
-class TestMrtlibTableDumpMrtRecord(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.TableDumpMrtRecord.
- """
-
- @mock.patch('ryu.lib.packet.bgp._PathAttribute.parser')
- def test_parse_afi_ipv4(self, mock_bgp_attr_parser):
- prefix = '10.0.0.0'
- peer_ip = '172.16.0.1'
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0c\x00\x01' # type=TYPE_TABLE_DUMP(12),
- # subtype=SUBTYPE_AFI_IPv4(1)
- b'\x00\x00\x00\x1a' # length=26
- b'\x22\x22\x33\x33' # view_num, seq_num
- + addrconv.ipv4.text_to_bin(prefix) + # prefix
- b'\x18\x01' # prefix_len=24, status=1
- b'\x44\x44\x44\x44' # originated_time
- + addrconv.ipv4.text_to_bin(peer_ip) + # peer_ip
- b'\xfd\xe8\x00\x04' # peer_as=65000, attr_len=len(body)
- + body # bgp_attributes
- )
-
- mock_bgp_attr = mock.MagicMock(spec=bgp._PathAttribute)
- mock_bgp_attr_parser.return_value = (mock_bgp_attr, b'')
-
- (record, rest) = mrtlib.MrtRecord.parse(buf)
-
- eq_(0x11111111, record.timestamp)
- eq_(mrtlib.MrtRecord.TYPE_TABLE_DUMP, record.type)
- eq_(mrtlib.TableDumpMrtRecord.SUBTYPE_AFI_IPv4, record.subtype)
- eq_(0x0000001a, record.length)
- eq_(0x2222, record.message.view_num)
- eq_(0x3333, record.message.seq_num)
- eq_(prefix, record.message.prefix)
- eq_(24, record.message.prefix_len)
- eq_(1, record.message.status)
- eq_(0x44444444, record.message.originated_time)
- eq_(peer_ip, record.message.peer_ip)
- eq_(65000, record.message.peer_as)
- eq_(0x0004, record.message.attr_len)
- eq_([mock_bgp_attr], record.message.bgp_attributes)
- eq_(b'', rest)
-
- def test_serialize_afi_ipv4(self):
- prefix = '10.0.0.0'
- peer_ip = '172.16.0.1'
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0c\x00\x01' # type=TYPE_TABLE_DUMP(12),
- # subtype=SUBTYPE_AFI_IPv4(1)
- b'\x00\x00\x00\x1a' # length=26
- b'\x22\x22\x33\x33' # view_num, seq_num
- + addrconv.ipv4.text_to_bin(prefix) + # prefix
- b'\x18\x01' # prefix_len=24, status=1
- b'\x44\x44\x44\x44' # originated_time
- + addrconv.ipv4.text_to_bin(peer_ip) + # peer_ip
- b'\xfd\xe8\x00\x04' # peer_as=65000, attr_len=len(body)
- + body # bgp_attributes
- )
-
- mock_bgp_attr = mock.MagicMock(spec=bgp._PathAttribute)
- mock_bgp_attr.serialize.return_value = body
-
- message = mrtlib.TableDumpAfiIPv4MrtMessage(
- view_num=0x2222,
- seq_num=0x3333,
- prefix=prefix,
- prefix_len=24,
- status=1,
- originated_time=0x44444444,
- peer_ip=peer_ip,
- peer_as=65000,
- bgp_attributes=[mock_bgp_attr],
- # attr_len=4
- )
- record = mrtlib.TableDumpMrtRecord(
- message=message,
- timestamp=0x11111111,
- # type_=None,
- # subtype=None,
- # length=None,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
-
- @mock.patch('ryu.lib.packet.bgp._PathAttribute.parser')
- def test_parse_afi_ipv6(self, mock_bgp_attr_parser):
- prefix = '2001:db8::1'
- peer_ip = 'fe80::1'
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0c\x00\x02' # type=TYPE_TABLE_DUMP(12),
- # subtype=SUBTYPE_AFI_IPv6(2)
- b'\x00\x00\x00\x32' # length=50
- b'\x22\x22\x33\x33' # view_num, seq_num
- + addrconv.ipv6.text_to_bin(prefix) + # prefix
- b'\x40\x01' # prefix_len=64, status=1
- b'\x44\x44\x44\x44' # originated_time
- + addrconv.ipv6.text_to_bin(peer_ip) + # peer_ip
- b'\xfd\xe8\x00\x04' # peer_as=65000, attr_len=len(body)
- + body # bgp_attributes
- )
-
- mock_bgp_attr = mock.MagicMock(spec=bgp._PathAttribute)
- mock_bgp_attr_parser.return_value = (mock_bgp_attr, b'')
-
- (record, rest) = mrtlib.MrtRecord.parse(buf)
-
- eq_(0x11111111, record.timestamp)
- eq_(mrtlib.MrtRecord.TYPE_TABLE_DUMP, record.type)
- eq_(mrtlib.TableDumpMrtRecord.SUBTYPE_AFI_IPv6, record.subtype)
- eq_(0x00000032, record.length)
- eq_(0x2222, record.message.view_num)
- eq_(0x3333, record.message.seq_num)
- eq_(prefix, record.message.prefix)
- eq_(64, record.message.prefix_len)
- eq_(1, record.message.status)
- eq_(0x44444444, record.message.originated_time)
- eq_(peer_ip, record.message.peer_ip)
- eq_(65000, record.message.peer_as)
- eq_(0x0004, record.message.attr_len)
- eq_([mock_bgp_attr], record.message.bgp_attributes)
- eq_(b'', rest)
-
- def test_serialize_afi_ipv6(self):
- prefix = '2001:db8::1'
- peer_ip = 'fe80::1'
- body = b'test' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0c\x00\x02' # type=TYPE_TABLE_DUMP(12),
- # subtype=SUBTYPE_AFI_IPv6(2)
- b'\x00\x00\x00\x32' # length=50
- b'\x22\x22\x33\x33' # view_num, seq_num
- + addrconv.ipv6.text_to_bin(prefix) + # prefix
- b'\x40\x01' # prefix_len=64, status=1
- b'\x44\x44\x44\x44' # originated_time
- + addrconv.ipv6.text_to_bin(peer_ip) + # peer_ip
- b'\xfd\xe8\x00\x04' # peer_as=65000, attr_len=len(body)
- + body # bgp_attributes
- )
-
- mock_bgp_attr = mock.MagicMock(spec=bgp._PathAttribute)
- mock_bgp_attr.serialize.return_value = body
-
- message = mrtlib.TableDumpAfiIPv6MrtMessage(
- view_num=0x2222,
- seq_num=0x3333,
- prefix=prefix,
- prefix_len=64,
- status=1,
- originated_time=0x44444444,
- peer_ip=peer_ip,
- peer_as=65000,
- bgp_attributes=[mock_bgp_attr],
- # attr_len=4
- )
- record = mrtlib.TableDumpMrtRecord(
- message=message,
- timestamp=0x11111111,
- # type_=None,
- # subtype=None,
- # length=None,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
-
-
-class TestMrtlibTableDump2MrtRecord(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.TableDump2MrtRecord.
- """
-
- # Note: The classes corresponding to the following subtypes are
- # tested in TestMrtlibMrtRecord.
- # - SUBTYPE_PEER_INDEX_TABLE = 1
- # - SUBTYPE_RIB_IPV4_UNICAST = 2
- # - SUBTYPE_RIB_IPV4_MULTICAST = 3
- # - SUBTYPE_RIB_IPV6_UNICAST = 4
- # - SUBTYPE_RIB_IPV6_MULTICAST = 5
-
- @mock.patch('ryu.lib.mrtlib.MrtRibEntry.parse')
- @mock.patch('ryu.lib.packet.bgp.BGPNLRI.parser')
- def test_parse_rib_generic(self, mock_nlri_parser, mock_rib_entry_parser):
- nlri_bin = b'nlri' # 4 bytes
- rib_entries_bin = b'ribs' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0d\x00\x06' # type=TYPE_TABLE_DUMP_V2(13),
- # subtype=SUBTYPE_RIB_GENERIC(6)
- b'\x00\x00\x00\x11' # length=17
- b'\x22\x22\x22\x22' # seq_num
- b'\x33\x33\x44' # afi, safi
- + nlri_bin + # nlri
- b'\x00\x01' # entry_count
- + rib_entries_bin # rib_entries
- )
- buf_entries = (
- b'\x00\x01' # entry_count
- + rib_entries_bin # rib_entries
- )
-
- mock_bgp_nlri = mock.MagicMock(spec=bgp._AddrPrefix)
- mock_nlri_parser.return_value = (mock_bgp_nlri, buf_entries)
-
- mock_rib_entry = mock.MagicMock(spec=mrtlib.MrtRibEntry)
- mock_rib_entry_parser.return_value = (mock_rib_entry, b'')
-
- (record, rest) = mrtlib.MrtRecord.parse(buf)
-
- eq_(0x11111111, record.timestamp)
- eq_(mrtlib.MrtRecord.TYPE_TABLE_DUMP_V2, record.type)
- eq_(mrtlib.TableDump2MrtRecord.SUBTYPE_RIB_GENERIC, record.subtype)
- eq_(0x00000011, record.length)
- eq_(0x22222222, record.message.seq_num)
- eq_(0x3333, record.message.afi)
- eq_(0x44, record.message.safi)
- eq_(mock_bgp_nlri, record.message.nlri)
- eq_(0x0001, record.message.entry_count)
- eq_([mock_rib_entry], record.message.rib_entries)
- eq_(b'', rest)
-
- def test_serialize_rib_generic(self):
- nlri_bin = b'nlri' # 4 bytes
- rib_entries_bin = b'ribs' # 4 bytes
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x0d\x00\x06' # type=TYPE_TABLE_DUMP_V2(13),
- # subtype=SUBTYPE_RIB_GENERIC(6)
- b'\x00\x00\x00\x11' # length=17
- b'\x22\x22\x22\x22' # seq_num
- b'\x33\x33\x44' # afi, safi
- + nlri_bin + # nlri
- b'\x00\x01' # entry_count
- + rib_entries_bin # rib_entries
- )
-
- mock_bgp_nlri = mock.MagicMock(spec=bgp._AddrPrefix)
- mock_bgp_nlri.serialize.return_value = nlri_bin
-
- mock_rib_entry = mock.MagicMock(spec=mrtlib.MrtRibEntry)
- mock_rib_entry.serialize.return_value = rib_entries_bin
-
- message = mrtlib.TableDump2RibGenericMrtMessage(
- seq_num=0x22222222,
- afi=0x3333,
- safi=0x44,
- nlri=mock_bgp_nlri,
- rib_entries=[mock_rib_entry],
- # entry_count=1,
- )
- record = mrtlib.TableDump2MrtRecord(
- message=message,
- timestamp=0x11111111,
- # type_=None,
- # subtype=None,
- # length=None,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
-
-
-class TestMrtlibMrtPeer(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.MrtPeer.
- """
-
- def test_parse_two_octet_as(self):
- bgp_id = '1.1.1.1'
- ip_addr = '10.0.0.1'
- buf = (
- b'\x00' # type
- + addrconv.ipv4.text_to_bin(bgp_id) # bgp_id
- + addrconv.ipv4.text_to_bin(ip_addr) + # ip_addr
- b'\xfd\xe8' # as_num
- )
-
- peer, rest = mrtlib.MrtPeer.parse(buf)
-
- eq_(0, peer.type)
- eq_(bgp_id, peer.bgp_id)
- eq_(ip_addr, peer.ip_addr)
- eq_(65000, peer.as_num)
- eq_(b'', rest)
-
- def test_serialize_two_octet_as(self):
- bgp_id = '1.1.1.1'
- ip_addr = '10.0.0.1'
- buf = (
- b'\x00' # type
- + addrconv.ipv4.text_to_bin(bgp_id) # bgp_id
- + addrconv.ipv4.text_to_bin(ip_addr) + # ip_addr
- b'\xfd\xe8' # as_num
- )
-
- peer = mrtlib.MrtPeer(
- bgp_id=bgp_id,
- ip_addr=ip_addr,
- as_num=65000,
- # type_=0,
- )
-
- output = peer.serialize()
-
- eq_(buf, output)
-
-
-class TestMrtlibBgp4MpMrtRecord(unittest.TestCase):
- """
- Test case for ryu.lib.mrtlib.Bgp4MpMrtRecord.
- """
-
- # Note: The classes corresponding to the following subtypes are
- # tested in TestMrtlibMrtRecord.
- # - SUBTYPE_BGP4MP_MESSAGE = 1
- # - SUBTYPE_BGP4MP_MESSAGE_AS4 = 4
- # - SUBTYPE_BGP4MP_STATE_CHANGE_AS4 = 5
- # - SUBTYPE_BGP4MP_MESSAGE_LOCAL = 6
- # - SUBTYPE_BGP4MP_MESSAGE_AS4_LOCAL = 7
-
- def test_parse_state_change_afi_ipv4(self):
- peer_ip = '10.0.0.1'
- local_ip = '10.0.0.2'
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x10\x00\x00' # type=TYPE_BGP4MP(16),
- # subtype=SUBTYPE_BGP4MP_STATE_CHANGE(0)
- b'\x00\x00\x00\x14' # length=20
- b'\xfd\xe9\xfd\xea' # peer_as=65001, local_as=65002
- b'\x22\x22\x00\x01' # if_index, addr_family=AFI_IPv4(1)
- + addrconv.ipv4.text_to_bin(peer_ip) # peer_ip
- + addrconv.ipv4.text_to_bin(local_ip) + # local_ip
- b'\x00\x01\x00\x02' # old_state=STATE_IDLE(1),
- # new_state=STATE_CONNECT(2)
- )
-
- (record, rest) = mrtlib.MrtRecord.parse(buf)
-
- eq_(0x11111111, record.timestamp)
- eq_(mrtlib.MrtRecord.TYPE_BGP4MP, record.type)
- eq_(mrtlib.Bgp4MpMrtRecord.SUBTYPE_BGP4MP_STATE_CHANGE, record.subtype)
- eq_(0x00000014, record.length)
- eq_(65001, record.message.peer_as)
- eq_(65002, record.message.local_as)
- eq_(0x2222, record.message.if_index)
- eq_(mrtlib.Bgp4MpStateChangeMrtMessage.AFI_IPv4,
- record.message.afi)
- eq_(mrtlib.Bgp4MpStateChangeMrtMessage.STATE_IDLE,
- record.message.old_state)
- eq_(mrtlib.Bgp4MpStateChangeMrtMessage.STATE_CONNECT,
- record.message.new_state)
- eq_(b'', rest)
-
- def test_serialize_state_change_afi_ipv4(self):
- peer_ip = '10.0.0.1'
- local_ip = '10.0.0.2'
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x10\x00\x00' # type=TYPE_BGP4MP(16),
- # subtype=SUBTYPE_BGP4MP_STATE_CHANGE(0)
- b'\x00\x00\x00\x14' # length=20
- b'\xfd\xe9\xfd\xea' # peer_as=65001, local_as=65002
- b'\x22\x22\x00\x01' # if_index, addr_family=AFI_IPv4(1)
- + addrconv.ipv4.text_to_bin(peer_ip) # peer_ip
- + addrconv.ipv4.text_to_bin(local_ip) + # local_ip
- b'\x00\x01\x00\x02' # old_state=STATE_IDLE(1),
- # new_state=STATE_CONNECT(2)
- )
-
- message = mrtlib.Bgp4MpStateChangeMrtMessage(
- peer_as=65001,
- local_as=65002,
- if_index=0x2222,
- peer_ip=peer_ip,
- local_ip=local_ip,
- old_state=mrtlib.Bgp4MpStateChangeMrtMessage.STATE_IDLE,
- new_state=mrtlib.Bgp4MpStateChangeMrtMessage.STATE_CONNECT,
- # afi=mrtlib.Bgp4MpStateChangeMrtMessage.AFI_IPv4,
- )
- record = mrtlib.Bgp4MpMrtRecord(
- message=message,
- timestamp=0x11111111,
- # type_=None,
- # subtype=None,
- # length=None,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
-
- def test_parse_state_change_afi_ipv6(self):
- peer_ip = 'fe80::1'
- local_ip = 'fe80::2'
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x10\x00\x00' # type=TYPE_BGP4MP(16),
- # subtype=SUBTYPE_BGP4MP_STATE_CHANGE(0)
- b'\x00\x00\x00\x2c' # length=44
- b'\xfd\xe9\xfd\xea' # peer_as=65001, local_as=65002
- b'\x22\x22\x00\x02' # if_index, addr_family=AFI_IPv6(2)
- + addrconv.ipv6.text_to_bin(peer_ip) # peer_ip
- + addrconv.ipv6.text_to_bin(local_ip) + # local_ip
- b'\x00\x01\x00\x02' # old_state=STATE_IDLE(1),
- # new_state=STATE_CONNECT(2)
- )
-
- (record, rest) = mrtlib.MrtRecord.parse(buf)
-
- eq_(0x11111111, record.timestamp)
- eq_(mrtlib.MrtRecord.TYPE_BGP4MP, record.type)
- eq_(mrtlib.Bgp4MpMrtRecord.SUBTYPE_BGP4MP_STATE_CHANGE, record.subtype)
- eq_(0x0000002c, record.length)
- eq_(65001, record.message.peer_as)
- eq_(65002, record.message.local_as)
- eq_(0x2222, record.message.if_index)
- eq_(mrtlib.Bgp4MpStateChangeMrtMessage.AFI_IPv6,
- record.message.afi)
- eq_(mrtlib.Bgp4MpStateChangeMrtMessage.STATE_IDLE,
- record.message.old_state)
- eq_(mrtlib.Bgp4MpStateChangeMrtMessage.STATE_CONNECT,
- record.message.new_state)
- eq_(b'', rest)
-
- def test_serialize_state_change_afi_ipv6(self):
- peer_ip = 'fe80::1'
- local_ip = 'fe80::2'
- buf = (
- b'\x11\x11\x11\x11' # timestamp
- b'\x00\x10\x00\x00' # type=TYPE_BGP4MP(16),
- # subtype=SUBTYPE_BGP4MP_STATE_CHANGE(0)
- b'\x00\x00\x00\x2c' # length=44
- b'\xfd\xe9\xfd\xea' # peer_as=65001, local_as=65002
- b'\x22\x22\x00\x02' # if_index, addr_family=AFI_IPv6(2)
- + addrconv.ipv6.text_to_bin(peer_ip) # peer_ip
- + addrconv.ipv6.text_to_bin(local_ip) + # local_ip
- b'\x00\x01\x00\x02' # old_state=STATE_IDLE(1),
- # new_state=STATE_CONNECT(2)
- )
-
- message = mrtlib.Bgp4MpStateChangeMrtMessage(
- peer_as=65001,
- local_as=65002,
- if_index=0x2222,
- peer_ip=peer_ip,
- local_ip=local_ip,
- old_state=mrtlib.Bgp4MpStateChangeMrtMessage.STATE_IDLE,
- new_state=mrtlib.Bgp4MpStateChangeMrtMessage.STATE_CONNECT,
- # afi=mrtlib.Bgp4MpStateChangeMrtMessage.AFI_IPv4,
- )
- record = mrtlib.Bgp4MpMrtRecord(
- message=message,
- timestamp=0x11111111,
- # type_=None,
- # subtype=None,
- # length=None,
- )
-
- output = record.serialize()
-
- eq_(buf, output)
diff --git a/tests/unit/lib/test_of_config_classes.py b/tests/unit/lib/test_of_config_classes.py
deleted file mode 100644
index 5b0dd6d3..00000000
--- a/tests/unit/lib/test_of_config_classes.py
+++ /dev/null
@@ -1,442 +0,0 @@
-# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2014 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-from nose.tools import eq_
-from nose.tools import ok_
-
-import sys
-import lxml.etree as ET
-from formencode.doctest_xml_compare import xml_compare
-
-from ryu.lib.of_config import classes as ofc
-
-
-GET = """<ns0:capable-switch xmlns:ns0="urn:onf:of111:config:yang">
- <ns0:id>CapableSwitch0</ns0:id>
- <ns0:resources>
- <ns0:port>
- <ns0:resource-id>LogicalSwitch9-Port4</ns0:resource-id>
- <ns0:number>4</ns0:number>
- <ns0:name>Port4</ns0:name>
- <ns0:current-rate>5000</ns0:current-rate>
- <ns0:max-rate>5000</ns0:max-rate>
- <ns0:configuration>
- <ns0:admin-state>up</ns0:admin-state>
- <ns0:no-receive>false</ns0:no-receive>
- <ns0:no-forward>false</ns0:no-forward>
- <ns0:no-packet-in>false</ns0:no-packet-in>
- </ns0:configuration>
- <ns0:state>
- <ns0:oper-state>up</ns0:oper-state>
- <ns0:blocked>false</ns0:blocked>
- <ns0:live>true</ns0:live>
- </ns0:state>
- <ns0:features>
- <ns0:current>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:current>
- <ns0:advertised>
- <ns0:rate>other</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised>
- <ns0:supported>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:supported>
- <ns0:advertised-peer>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised-peer>
- </ns0:features>
- </ns0:port>
- <ns0:port>
- <ns0:resource-id>LogicalSwitch9-Port3</ns0:resource-id>
- <ns0:number>3</ns0:number>
- <ns0:name>Port3</ns0:name>
- <ns0:current-rate>5000</ns0:current-rate>
- <ns0:max-rate>5000</ns0:max-rate>
- <ns0:configuration>
- <ns0:admin-state>up</ns0:admin-state>
- <ns0:no-receive>false</ns0:no-receive>
- <ns0:no-forward>false</ns0:no-forward>
- <ns0:no-packet-in>false</ns0:no-packet-in>
- </ns0:configuration>
- <ns0:state>
- <ns0:oper-state>up</ns0:oper-state>
- <ns0:blocked>false</ns0:blocked>
- <ns0:live>true</ns0:live>
- </ns0:state>
- <ns0:features>
- <ns0:current>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:current>
- <ns0:advertised>
- <ns0:rate>other</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised>
- <ns0:supported>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:supported>
- <ns0:advertised-peer>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised-peer>
- </ns0:features>
- </ns0:port>
- <ns0:port>
- <ns0:resource-id>LogicalSwitch7-Port2</ns0:resource-id>
- <ns0:number>2</ns0:number>
- <ns0:name>Port2</ns0:name>
- <ns0:current-rate>5000</ns0:current-rate>
- <ns0:max-rate>5000</ns0:max-rate>
- <ns0:configuration>
- <ns0:admin-state>up</ns0:admin-state>
- <ns0:no-receive>false</ns0:no-receive>
- <ns0:no-forward>false</ns0:no-forward>
- <ns0:no-packet-in>false</ns0:no-packet-in>
- </ns0:configuration>
- <ns0:state>
- <ns0:oper-state>up</ns0:oper-state>
- <ns0:blocked>false</ns0:blocked>
- <ns0:live>true</ns0:live>
- </ns0:state>
- <ns0:features>
- <ns0:current>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:current>
- <ns0:advertised>
- <ns0:rate>other</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised>
- <ns0:supported>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:supported>
- <ns0:advertised-peer>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised-peer>
- </ns0:features>
- </ns0:port>
- <ns0:port>
- <ns0:resource-id>LogicalSwitch7-Port1</ns0:resource-id>
- <ns0:number>1</ns0:number>
- <ns0:name>Port1</ns0:name>
- <ns0:current-rate>5000</ns0:current-rate>
- <ns0:max-rate>5000</ns0:max-rate>
- <ns0:configuration>
- <ns0:admin-state>up</ns0:admin-state>
- <ns0:no-receive>false</ns0:no-receive>
- <ns0:no-forward>false</ns0:no-forward>
- <ns0:no-packet-in>false</ns0:no-packet-in>
- </ns0:configuration>
- <ns0:state>
- <ns0:oper-state>up</ns0:oper-state>
- <ns0:blocked>false</ns0:blocked>
- <ns0:live>true</ns0:live>
- </ns0:state>
- <ns0:features>
- <ns0:current>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:current>
- <ns0:advertised>
- <ns0:rate>other</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised>
- <ns0:supported>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:supported>
- <ns0:advertised-peer>
- <ns0:rate>100Mb-FD</ns0:rate>
- <ns0:auto-negotiate>true</ns0:auto-negotiate>
- <ns0:medium>copper</ns0:medium>
- <ns0:pause>unsupported</ns0:pause>
- </ns0:advertised-peer>
- </ns0:features>
- </ns0:port>
- <ns0:queue>
- <ns0:resource-id>LogicalSwitch9-Port4-Queue992</ns0:resource-id>
- <ns0:id>992</ns0:id>
- <ns0:port>4</ns0:port>
- <ns0:properties>
- <ns0:min-rate>10</ns0:min-rate>
- <ns0:max-rate>130</ns0:max-rate>
- </ns0:properties>
- </ns0:queue>
- <ns0:queue>
- <ns0:resource-id>LogicalSwitch9-Port4-Queue991</ns0:resource-id>
- <ns0:id>991</ns0:id>
- <ns0:port>4</ns0:port>
- <ns0:properties>
- <ns0:min-rate>10</ns0:min-rate>
- <ns0:max-rate>120</ns0:max-rate>
- </ns0:properties>
- </ns0:queue>
- <ns0:queue>
- <ns0:resource-id>LogicalSwitch7-Port2-Queue994</ns0:resource-id>
- <ns0:id>994</ns0:id>
- <ns0:port>2</ns0:port>
- <ns0:properties>
- <ns0:min-rate>400</ns0:min-rate>
- <ns0:max-rate>900</ns0:max-rate>
- </ns0:properties>
- </ns0:queue>
- <ns0:queue>
- <ns0:resource-id>LogicalSwitch7-Port2-Queue993</ns0:resource-id>
- <ns0:id>993</ns0:id>
- <ns0:port>2</ns0:port>
- <ns0:properties>
- <ns0:min-rate>200</ns0:min-rate>
- <ns0:max-rate>300</ns0:max-rate>
- </ns0:properties>
- </ns0:queue>
- </ns0:resources>
- <ns0:logical-switches>
- <ns0:switch>
- <ns0:id>LogicalSwitch9</ns0:id>
- <ns0:capabilities>
- <ns0:max-buffered-packets>0</ns0:max-buffered-packets>
- <ns0:max-tables>255</ns0:max-tables>
- <ns0:max-ports>16777216</ns0:max-ports>
- <ns0:flow-statistics>true</ns0:flow-statistics>
- <ns0:table-statistics>true</ns0:table-statistics>
- <ns0:port-statistics>true</ns0:port-statistics>
- <ns0:group-statistics>true</ns0:group-statistics>
- <ns0:queue-statistics>true</ns0:queue-statistics>
- <ns0:reassemble-ip-fragments>false</ns0:reassemble-ip-fragments>
- <ns0:block-looping-ports>false</ns0:block-looping-ports>
- <ns0:reserved-port-types>
- <ns0:type>all</ns0:type>
- <ns0:type>controller</ns0:type>
- <ns0:type>table</ns0:type>
- <ns0:type>inport</ns0:type>
- <ns0:type>any</ns0:type>
- </ns0:reserved-port-types>
- <ns0:group-types>
- <ns0:type>all</ns0:type>
- <ns0:type>select</ns0:type>
- <ns0:type>indirect</ns0:type>
- <ns0:type>fast-failover</ns0:type>
- </ns0:group-types>
- <ns0:group-capabilities>
- <ns0:capability>select-weight</ns0:capability>
- <ns0:capability>select-liveness</ns0:capability>
- <ns0:capability>chaining</ns0:capability>
- </ns0:group-capabilities>
- <ns0:action-types>
- <ns0:type>output</ns0:type>
- <ns0:type>group</ns0:type>
- <ns0:type>set-queue</ns0:type>
- <ns0:type>set-mpls-ttl</ns0:type>
- <ns0:type>dec-mpls-ttl</ns0:type>
- <ns0:type>set-nw-ttl</ns0:type>
- <ns0:type>dec-nw-ttl</ns0:type>
- <ns0:type>copy-ttl-out</ns0:type>
- <ns0:type>copy-ttl-in</ns0:type>
- <ns0:type>push-vlan</ns0:type>
- <ns0:type>pop-vlan</ns0:type>
- <ns0:type>push-mpls</ns0:type>
- <ns0:type>pop-mpls</ns0:type>
- <ns0:type>push-pbb</ns0:type>
- <ns0:type>pop-pbb</ns0:type>
- <ns0:type>set-field</ns0:type>
- </ns0:action-types>
- <ns0:instruction-types>
- <ns0:type>goto-table</ns0:type>
- <ns0:type>write-metadata</ns0:type>
- <ns0:type>write-actions</ns0:type>
- <ns0:type>apply-actions</ns0:type>
- <ns0:type>clear-actions</ns0:type>
- <ns0:type>meter</ns0:type>
- </ns0:instruction-types>
- </ns0:capabilities>
- <ns0:datapath-id>08:60:6E:7F:74:E7:00:09</ns0:datapath-id>
- <ns0:enabled>true</ns0:enabled>
- <ns0:check-controller-certificate>false
- </ns0:check-controller-certificate>
- <ns0:lost-connection-behavior>failSecureMode
- </ns0:lost-connection-behavior>
- <ns0:controllers>
- <ns0:controller>
- <ns0:id>Switch9-Controller</ns0:id>
- <ns0:role>equal</ns0:role>
- <ns0:ip-address>127.0.0.1</ns0:ip-address>
- <ns0:port>6633</ns0:port>
- <ns0:protocol>tcp</ns0:protocol>
- <ns0:state>
- <ns0:connection-state>down</ns0:connection-state>
- <ns0:supported-versions>1.3</ns0:supported-versions>
- </ns0:state>
- </ns0:controller>
- </ns0:controllers>
- <ns0:resources>
- <ns0:port>LogicalSwitch9-Port4</ns0:port>
- <ns0:port>LogicalSwitch9-Port3</ns0:port>
- <ns0:queue>LogicalSwitch9-Port4-Queue992</ns0:queue>
- <ns0:queue>LogicalSwitch9-Port4-Queue991</ns0:queue>
- </ns0:resources>
- </ns0:switch>
- <ns0:switch>
- <ns0:id>LogicalSwitch7</ns0:id>
- <ns0:capabilities>
- <ns0:max-buffered-packets>0</ns0:max-buffered-packets>
- <ns0:max-tables>255</ns0:max-tables>
- <ns0:max-ports>16777216</ns0:max-ports>
- <ns0:flow-statistics>true</ns0:flow-statistics>
- <ns0:table-statistics>true</ns0:table-statistics>
- <ns0:port-statistics>true</ns0:port-statistics>
- <ns0:group-statistics>true</ns0:group-statistics>
- <ns0:queue-statistics>true</ns0:queue-statistics>
- <ns0:reassemble-ip-fragments>false</ns0:reassemble-ip-fragments>
- <ns0:block-looping-ports>false</ns0:block-looping-ports>
- <ns0:reserved-port-types>
- <ns0:type>all</ns0:type>
- <ns0:type>controller</ns0:type>
- <ns0:type>table</ns0:type>
- <ns0:type>inport</ns0:type>
- <ns0:type>any</ns0:type>
- </ns0:reserved-port-types>
- <ns0:group-types>
- <ns0:type>all</ns0:type>
- <ns0:type>select</ns0:type>
- <ns0:type>indirect</ns0:type>
- <ns0:type>fast-failover</ns0:type>
- </ns0:group-types>
- <ns0:group-capabilities>
- <ns0:capability>select-weight</ns0:capability>
- <ns0:capability>select-liveness</ns0:capability>
- <ns0:capability>chaining</ns0:capability>
- </ns0:group-capabilities>
- <ns0:action-types>
- <ns0:type>output</ns0:type>
- <ns0:type>group</ns0:type>
- <ns0:type>set-queue</ns0:type>
- <ns0:type>set-mpls-ttl</ns0:type>
- <ns0:type>dec-mpls-ttl</ns0:type>
- <ns0:type>set-nw-ttl</ns0:type>
- <ns0:type>dec-nw-ttl</ns0:type>
- <ns0:type>copy-ttl-out</ns0:type>
- <ns0:type>copy-ttl-in</ns0:type>
- <ns0:type>push-vlan</ns0:type>
- <ns0:type>pop-vlan</ns0:type>
- <ns0:type>push-mpls</ns0:type>
- <ns0:type>pop-mpls</ns0:type>
- <ns0:type>set-field</ns0:type>
- </ns0:action-types>
- <ns0:instruction-types>
- <ns0:type>goto-table</ns0:type>
- <ns0:type>write-metadata</ns0:type>
- <ns0:type>write-actions</ns0:type>
- <ns0:type>apply-actions</ns0:type>
- <ns0:type>clear-actions</ns0:type>
- </ns0:instruction-types>
- </ns0:capabilities>
- <ns0:datapath-id>08:60:6E:7F:74:E7:00:07</ns0:datapath-id>
- <ns0:enabled>true</ns0:enabled>
- <ns0:check-controller-certificate>false
- </ns0:check-controller-certificate>
- <ns0:lost-connection-behavior>failSecureMode
- </ns0:lost-connection-behavior>
- <ns0:controllers>
- <ns0:controller>
- <ns0:id>Switch7-Controller</ns0:id>
- <ns0:role>equal</ns0:role>
- <ns0:ip-address>127.0.0.1</ns0:ip-address>
- <ns0:port>6633</ns0:port>
- <ns0:protocol>tcp</ns0:protocol>
- <ns0:state>
- <ns0:connection-state>down</ns0:connection-state>
- <ns0:supported-versions>1.2</ns0:supported-versions>
- </ns0:state>
- </ns0:controller>
- </ns0:controllers>
- <ns0:resources>
- <ns0:port>LogicalSwitch7-Port2</ns0:port>
- <ns0:port>LogicalSwitch7-Port1</ns0:port>
- <ns0:queue>LogicalSwitch7-Port2-Queue994</ns0:queue>
- <ns0:queue>LogicalSwitch7-Port2-Queue993</ns0:queue>
- </ns0:resources>
- </ns0:switch>
- </ns0:logical-switches>
-</ns0:capable-switch>
-"""
-
-
-class Test_of_config_classes(unittest.TestCase):
- """ Test case for ryu.lib.of_config.classes
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_parse(self):
- for xml0 in [GET]:
- o = ofc.OFCapableSwitchType.from_xml(xml0)
- xml1 = o.to_xml('capable-switch')
- ok_(xml_compare(ET.fromstring(xml0), ET.fromstring(xml1),
- reporter=sys.stderr.write))
-
- def test_alt_names(self):
- xml0 = GET
- o = ofc.OFCapableSwitchType.from_xml(xml0)
- eq_(o.logical_switches, getattr(o, 'logical_switches'))
- eq_(o.logical_switches, getattr(o, 'logical-switches'))
-
- def test_iterate(self):
- xml0 = GET
- o = ofc.OFCapableSwitchType.from_xml(xml0)
- for lsw in o.logical_switches.switch:
- ok_(str(lsw.id).startswith('LogicalSwitch'))
diff --git a/tests/unit/lib/test_ofctl.py b/tests/unit/lib/test_ofctl.py
deleted file mode 100644
index 57fa8355..00000000
--- a/tests/unit/lib/test_ofctl.py
+++ /dev/null
@@ -1,643 +0,0 @@
-# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import functools
-import json
-import logging
-from nose.tools import eq_
-import os
-import sys
-import unittest
-
-from ryu.lib import ofctl_v1_0
-from ryu.lib import ofctl_v1_2
-from ryu.lib import ofctl_v1_3
-from ryu.lib import ofctl_v1_4
-from ryu.lib import ofctl_v1_5
-from ryu.ofproto import ofproto_parser
-from ryu.ofproto.ofproto_protocol import ProtocolDesc
-
-from tests import test_lib
-
-LOG = logging.getLogger(__name__)
-
-
-class DummyDatapath(ProtocolDesc):
-
- def __init__(self, version):
- super(DummyDatapath, self).__init__(version)
- self.id = 1 # XXX
- self.request_msg = None
- self.reply_msg = None
- self.waiters = None
-
- @staticmethod
- def set_xid(msg):
- msg.set_xid(0)
- return 0
-
- def send_msg(self, msg):
- msg.serialize()
- self.request_msg = msg
-
- if self.reply_msg:
- lock, msgs = self.waiters[self.id][msg.xid]
- msgs.append(self.reply_msg)
- del self.waiters[self.id][msg.xid]
- lock.set()
-
- def set_reply(self, msg, waiters):
- self.reply_msg = msg
- self.waiters = waiters
-
-
-class Test_ofctl(unittest.TestCase):
-
- def _test(self, name, dp, method, args, request, reply, expected):
- print('processing %s ...' % name)
- waiters = {}
- dp.set_reply(reply, waiters)
- if reply:
- output = method(dp=dp, waiters=waiters, **args)
- else:
- output = method(dp=dp, **args)
-
- # expected message <--> sent message
- request.serialize()
- try:
- eq_(json.dumps(request.to_jsondict(), sort_keys=True),
- json.dumps(dp.request_msg.to_jsondict(), sort_keys=True))
- except AssertionError as e:
- # For debugging
- json.dump(dp.request_msg.to_jsondict(),
- open('/tmp/' + name + '_request.json', 'w'),
- indent=3, sort_keys=True)
- raise e
-
- # expected output <--> return of ofctl
- def _remove(d, names):
- def f(x):
- return _remove(x, names)
-
- if isinstance(d, list):
- return list(map(f, d))
- if isinstance(d, dict):
- d2 = {}
- for k, v in d.items():
- if k in names:
- continue
- d2[k] = f(v)
- return d2
- return d
-
- expected = _remove(expected, ['len', 'length'])
- output = _remove(output, ['len', 'length'])
- try:
- eq_(json.dumps(expected, sort_keys=True),
- json.dumps(output, sort_keys=True))
- except AssertionError as e:
- # For debugging
- json.dump(output, open('/tmp/' + name + '_reply.json', 'w'),
- indent=4)
- raise e
-
-
-def _add_tests():
- _ofp_vers = {
- 'of10': 0x01,
- 'of12': 0x03,
- 'of13': 0x04,
- 'of14': 0x05,
- 'of15': 0x06,
- }
-
- _test_cases = {
- 'of10': [
- {
- 'method': ofctl_v1_0.mod_flow_entry,
- 'request': '1-2-ofp_flow_mod.packet.json',
- 'reply': None
- },
- ],
- 'of12': [
- {
- 'method': ofctl_v1_2.get_desc_stats,
- 'request': '3-24-ofp_desc_stats_request.packet.json',
- 'reply': '3-0-ofp_desc_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_queue_stats,
- 'request': '3-37-ofp_queue_stats_request.packet.json',
- 'reply': '3-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_queue_stats,
- 'request': 'lib-ofctl-ofp_queue_stats_request.packet1.json',
- 'reply': '3-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_queue_stats,
- 'request': 'lib-ofctl-ofp_queue_stats_request.packet2.json',
- 'reply': '3-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_queue_stats,
- 'request': 'lib-ofctl-ofp_queue_stats_request.packet3.json',
- 'reply': '3-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_queue_config,
- 'request': '3-35-ofp_queue_get_config_request.packet.json',
- 'reply': '3-36-ofp_queue_get_config_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_queue_config,
- 'request': 'lib-ofctl-ofp_queue_get_config_request.packet.json',
- 'reply': '3-36-ofp_queue_get_config_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_flow_stats,
- 'request': '3-11-ofp_flow_stats_request.packet.json',
- 'reply': '3-12-ofp_flow_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_aggregate_flow_stats,
- 'request': '3-25-ofp_aggregate_stats_request.packet.json',
- 'reply': '3-26-ofp_aggregate_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_table_stats,
- 'request': '3-27-ofp_table_stats_request.packet.json',
- 'reply': '3-28-ofp_table_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_port_stats,
- 'request': '3-29-ofp_port_stats_request.packet.json',
- 'reply': '3-30-ofp_port_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_port_stats,
- 'request': 'lib-ofctl-ofp_port_stats_request.packet.json',
- 'reply': '3-30-ofp_port_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_group_stats,
- 'request': '3-61-ofp_group_stats_request.packet.json',
- 'reply': '3-62-ofp_group_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_group_stats,
- 'request': 'lib-ofctl-ofp_group_stats_request.packet.json',
- 'reply': '3-62-ofp_group_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_group_features,
- 'request': '3-31-ofp_group_features_stats_request.packet.json',
- 'reply': '3-32-ofp_group_features_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.get_group_desc,
- 'request': '3-33-ofp_group_desc_stats_request.packet.json',
- 'reply': '3-34-ofp_group_desc_stats_reply.packet.json'
- },
- # In OpenFlow 1.2, ofp_port_desc is not defined.
- # We use ofp_features_request to get ports description instead.
- {
- 'method': ofctl_v1_2.get_port_desc,
- 'request': '3-5-ofp_features_request.packet.json',
- 'reply': '3-6-ofp_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_2.mod_flow_entry,
- 'request': '3-2-ofp_flow_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_2.mod_group_entry,
- 'request': '3-21-ofp_group_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_2.mod_port_behavior,
- 'request': '3-22-ofp_port_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_2.send_experimenter,
- 'request': '3-16-ofp_experimenter.packet.json',
- 'reply': None
- },
- ],
- 'of13': [
- {
- 'method': ofctl_v1_3.get_desc_stats,
- 'request': '4-24-ofp_desc_request.packet.json',
- 'reply': '4-0-ofp_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_queue_stats,
- 'request': '4-37-ofp_queue_stats_request.packet.json',
- 'reply': '4-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_queue_stats,
- 'request': 'lib-ofctl-ofp_queue_stats_request.packet1.json',
- 'reply': '4-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_queue_stats,
- 'request': 'lib-ofctl-ofp_queue_stats_request.packet2.json',
- 'reply': '4-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_queue_stats,
- 'request': 'lib-ofctl-ofp_queue_stats_request.packet3.json',
- 'reply': '4-38-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_queue_config,
- 'request': '4-35-ofp_queue_get_config_request.packet.json',
- 'reply': '4-36-ofp_queue_get_config_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_queue_config,
- 'request': 'lib-ofctl-ofp_queue_get_config_request.packet.json',
- 'reply': '4-36-ofp_queue_get_config_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_flow_stats,
- 'request': '4-11-ofp_flow_stats_request.packet.json',
- 'reply': '4-12-ofp_flow_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_aggregate_flow_stats,
- 'request': '4-25-ofp_aggregate_stats_request.packet.json',
- 'reply': '4-26-ofp_aggregate_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_table_stats,
- 'request': '4-27-ofp_table_stats_request.packet.json',
- 'reply': '4-28-ofp_table_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_table_features,
- 'request': 'lib-ofctl-ofp_table_features_request.packet.json',
- 'reply': '4-56-ofp_table_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_port_stats,
- 'request': '4-29-ofp_port_stats_request.packet.json',
- 'reply': '4-30-ofp_port_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_port_stats,
- 'request': 'lib-ofctl-ofp_port_stats_request.packet.json',
- 'reply': '4-30-ofp_port_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_meter_stats,
- 'request': '4-49-ofp_meter_stats_request.packet.json',
- 'reply': '4-50-ofp_meter_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_meter_stats,
- 'request': 'lib-ofctl-ofp_meter_stats_request.packet.json',
- 'reply': '4-50-ofp_meter_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_meter_features,
- 'request': '4-51-ofp_meter_features_request.packet.json',
- 'reply': '4-52-ofp_meter_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_meter_config,
- 'request': '4-47-ofp_meter_config_request.packet.json',
- 'reply': '4-48-ofp_meter_config_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_meter_config,
- 'request': 'lib-ofctl-ofp_meter_config_request.packet.json',
- 'reply': '4-48-ofp_meter_config_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_group_stats,
- 'request': '4-57-ofp_group_stats_request.packet.json',
- 'reply': '4-58-ofp_group_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_group_stats,
- 'request': 'lib-ofctl-ofp_group_stats_request.packet.json',
- 'reply': '4-58-ofp_group_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_group_features,
- 'request': '4-31-ofp_group_features_request.packet.json',
- 'reply': '4-32-ofp_group_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_group_desc,
- 'request': '4-33-ofp_group_desc_request.packet.json',
- 'reply': '4-34-ofp_group_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.get_port_desc,
- 'request': '4-53-ofp_port_desc_request.packet.json',
- 'reply': '4-54-ofp_port_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_3.mod_flow_entry,
- 'request': '4-2-ofp_flow_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_3.mod_meter_entry,
- 'request': '4-45-ofp_meter_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_3.mod_group_entry,
- 'request': '4-21-ofp_group_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_3.mod_port_behavior,
- 'request': '4-22-ofp_port_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_3.send_experimenter,
- 'request': '4-16-ofp_experimenter.packet.json',
- 'reply': None
- },
- ],
- 'of14': [
- {
- 'method': ofctl_v1_4.get_desc_stats,
- 'request': '5-24-ofp_desc_request.packet.json',
- 'reply': '5-0-ofp_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_queue_stats,
- 'request': '5-35-ofp_queue_stats_request.packet.json',
- 'reply': '5-36-ofp_queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_queue_desc,
- 'request': '5-63-ofp_queue_desc_request.packet.json',
- 'reply': '5-64-ofp_queue_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_flow_stats,
- 'request': '5-11-ofp_flow_stats_request.packet.json',
- 'reply': '5-12-ofp_flow_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_aggregate_flow_stats,
- 'request': '5-25-ofp_aggregate_stats_request.packet.json',
- 'reply': '5-26-ofp_aggregate_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_table_stats,
- 'request': '5-27-ofp_table_stats_request.packet.json',
- 'reply': '5-28-ofp_table_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_table_features,
- 'request': 'lib-ofctl-ofp_table_features_request.packet.json',
- 'reply': '5-54-ofp_table_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_port_stats,
- 'request': '5-29-ofp_port_stats_request.packet.json',
- 'reply': '5-30-ofp_port_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_meter_stats,
- 'request': '5-47-ofp_meter_stats_request.packet.json',
- 'reply': '5-48-ofp_meter_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_meter_features,
- 'request': '5-49-ofp_meter_features_request.packet.json',
- 'reply': '5-50-ofp_meter_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_meter_config,
- 'request': '5-45-ofp_meter_config_request.packet.json',
- 'reply': '5-46-ofp_meter_config_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_group_stats,
- 'request': '5-55-ofp_group_stats_request.packet.json',
- 'reply': '5-56-ofp_group_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_group_features,
- 'request': '5-31-ofp_group_features_request.packet.json',
- 'reply': '5-32-ofp_group_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_group_desc,
- 'request': '5-33-ofp_group_desc_request.packet.json',
- 'reply': '5-34-ofp_group_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.get_port_desc,
- 'request': '5-51-ofp_port_desc_request.packet.json',
- 'reply': '5-52-ofp_port_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_4.mod_flow_entry,
- 'request': '5-2-ofp_flow_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_4.mod_meter_entry,
- 'request': '5-43-ofp_meter_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_4.mod_group_entry,
- 'request': '5-21-ofp_group_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_4.mod_port_behavior,
- 'request': '5-22-ofp_port_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_4.send_experimenter,
- 'request': '5-16-ofp_experimenter.packet.json',
- 'reply': None
- },
- ],
- 'of15': [
- {
- 'method': ofctl_v1_5.get_desc_stats,
- 'request': 'libofproto-OFP15-desc_request.packet.json',
- 'reply': 'libofproto-OFP15-desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_queue_stats,
- 'request': 'lib-ofctl-ofp_queue_stats_request.packet.json',
- 'reply': 'libofproto-OFP15-queue_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_queue_desc,
- 'request': 'libofproto-OFP15-queue_desc_request.packet.json',
- 'reply': 'libofproto-OFP15-queue_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_flow_stats,
- 'request': 'libofproto-OFP15-flow_stats_request.packet.json',
- 'reply': 'libofproto-OFP15-flow_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_flow_desc_stats,
- 'request': 'libofproto-OFP15-flow_desc_request.packet.json',
- 'reply': 'libofproto-OFP15-flow_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_flow_desc_stats,
- 'request': 'lib-ofctl-OFP15-flow_desc_request.packet.json',
- 'reply': 'lib-ofctl-OFP15-flow_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_aggregate_flow_stats,
- 'request': 'libofproto-OFP15-aggregate_stats_request.packet.json',
- 'reply': 'libofproto-OFP15-aggregate_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_table_stats,
- 'request': 'libofproto-OFP15-table_stats_request.packet.json',
- 'reply': 'libofproto-OFP15-table_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_table_features,
- 'request': 'lib-ofctl-ofp_table_features_request.packet.json',
- 'reply': 'libofproto-OFP15-table_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_port_stats,
- 'request': 'libofproto-OFP15-port_stats_request.packet.json',
- 'reply': 'libofproto-OFP15-port_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_meter_stats,
- 'request': 'libofproto-OFP15-meter_stats_request.packet.json',
- 'reply': 'libofproto-OFP15-meter_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_meter_features,
- 'request': 'libofproto-OFP15-meter_features_request.packet.json',
- 'reply': 'libofproto-OFP15-meter_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_meter_desc,
- 'request': 'libofproto-OFP15-meter_desc_request.packet.json',
- 'reply': 'libofproto-OFP15-meter_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_group_stats,
- 'request': 'libofproto-OFP15-group_stats_request.packet.json',
- 'reply': 'libofproto-OFP15-group_stats_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_group_features,
- 'request': 'libofproto-OFP15-group_features_request.packet.json',
- 'reply': 'libofproto-OFP15-group_features_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_group_desc,
- 'request': 'libofproto-OFP15-group_desc_request.packet.json',
- 'reply': 'libofproto-OFP15-group_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.get_port_desc,
- 'request': 'libofproto-OFP15-port_desc_request.packet.json',
- 'reply': 'libofproto-OFP15-port_desc_reply.packet.json'
- },
- {
- 'method': ofctl_v1_5.mod_flow_entry,
- 'request': 'libofproto-OFP15-flow_mod_no_nx.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_5.mod_flow_entry,
- 'request': 'lib-ofctl-OFP15-flow_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_5.mod_meter_entry,
- 'request': 'libofproto-OFP15-meter_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_5.mod_group_entry,
- 'request': 'libofproto-OFP15-group_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_5.mod_port_behavior,
- 'request': 'libofproto-OFP15-port_mod.packet.json',
- 'reply': None
- },
- {
- 'method': ofctl_v1_5.send_experimenter,
- 'request': 'libofproto-OFP15-experimenter.packet.json',
- 'reply': None
- }
- ],
- }
-
- def _jsonfile_to_msg(datapath, jsonfile):
- return ofproto_parser.ofp_msg_from_jsondict(
- datapath, json.load(open(jsonfile)))
-
- this_dir = os.path.dirname(sys.modules[__name__].__file__)
- parser_json_root = os.path.join(this_dir, '../ofproto/json/')
- ofctl_json_root = os.path.join(this_dir, 'ofctl_json/')
-
- for ofp_ver, tests in _test_cases.items():
- dp = DummyDatapath(_ofp_vers[ofp_ver])
- parser_json_dir = os.path.join(parser_json_root, ofp_ver)
- ofctl_json_dir = os.path.join(ofctl_json_root, ofp_ver)
- for test in tests:
- name = 'test_ofctl_' + ofp_ver + '_' + test['request']
- print('adding %s ...' % name)
- args = {}
- args_json_path = os.path.join(ofctl_json_dir, test['request'])
- if os.path.exists(args_json_path):
- args = json.load(open(args_json_path))
- request = _jsonfile_to_msg(
- dp, os.path.join(parser_json_dir, test['request']))
- reply = None
- expected = None
- if test['reply']:
- reply = _jsonfile_to_msg(
- dp, os.path.join(parser_json_dir, test['reply']))
- expected = json.load(
- open(os.path.join(ofctl_json_dir, test['reply'])))
- f = functools.partial(
- Test_ofctl._test, name=name, dp=dp, method=test['method'],
- args=args, request=request, reply=reply, expected=expected)
- test_lib.add_method(Test_ofctl, name, f)
-
-
-_add_tests()
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/unit/lib/test_ofctl_action_match.py b/tests/unit/lib/test_ofctl_action_match.py
deleted file mode 100644
index 2b8707cf..00000000
--- a/tests/unit/lib/test_ofctl_action_match.py
+++ /dev/null
@@ -1,869 +0,0 @@
-# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import unittest
-import logging
-import netaddr
-import functools
-import inspect
-
-from nose.tools import *
-
-from ryu.lib import addrconv
-from ryu.lib import ofctl_v1_0
-from ryu.ofproto import ofproto_v1_0, ofproto_v1_0_parser
-from ryu.lib import ofctl_v1_2
-from ryu.ofproto import ofproto_v1_2, ofproto_v1_2_parser
-from ryu.lib import ofctl_v1_3
-from ryu.ofproto import ofproto_v1_3, ofproto_v1_3_parser
-from ryu.ofproto import ofproto_protocol
-from ryu.ofproto import inet
-
-from tests import test_lib
-
-LOG = logging.getLogger('test_ofctl_v1_2, v1_3')
-
-""" Common Functions """
-
-
-def _str_to_int(v):
- try:
- return int(v, 0)
- except (ValueError, TypeError):
- return v
-
-
-def _to_match_eth(value):
- if '/' in value:
- value = value.split('/')
- return value[0], value[1]
- else:
- return value, None
-
-
-def _to_match_ip(value):
- if '/' in value:
- ip = netaddr.ip.IPNetwork(value)
- ip_addr = str(ip.network)
- ip_mask = str(ip.netmask)
- return ip_addr, ip_mask
- else:
- return value, None
-
-
-def _to_match_masked_int(value):
- if isinstance(value, str) and '/' in value:
- value = value.split('/')
- return _str_to_int(value[0]), _str_to_int(value[1])
- else:
- return _str_to_int(value), None
-
-
-def _to_masked_int_str(value):
- v, m = _to_match_masked_int(value)
- v &= m
- return '%d/%d' % (v, m)
-
-
-conv_of10_to_of12_dict = {
- 'dl_dst': 'eth_dst',
- 'dl_src': 'eth_src',
- 'dl_type': 'eth_type',
- 'dl_vlan': 'vlan_vid',
- 'nw_src': 'ipv4_src',
- 'nw_dst': 'ipv4_dst',
- 'nw_proto': 'ip_proto'
-}
-
-
-conv_of12_to_of10_dict = {
- 'eth_src': 'dl_src',
- 'eth_dst': 'dl_dst',
- 'eth_type': 'dl_type',
- 'ipv4_dst': 'nw_dst',
- 'ipv4_src': 'nw_src',
- 'ip_proto': 'nw_proto',
- 'vlan_vid': 'dl_vlan',
- 'tcp_src': 'tp_src',
- 'tcp_dst': 'tp_dst',
- 'udp_src': 'tp_src',
- 'udp_dst': 'tp_dst'
-}
-
-""" Test_ofctl """
-
-
-class Test_ofctl(unittest.TestCase):
-
- def __init__(self, methodName):
- super(Test_ofctl, self).__init__(methodName)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _test_actions(self, act, test):
- dp = ofproto_protocol.ProtocolDesc(version=test.ver)
- act_type = act["type"]
-
- # str -> action
- insts = test.to_actions(dp, [act])
-
- if test.ver == ofproto_v1_0.OFP_VERSION:
- action = insts[0]
- self._equal_str_to_act(action, act, act_type, test)
- else:
- inst = insts[0]
- self._equal_str_to_inst(inst, act, act_type, test)
-
- # action -> str
- inst_str = test.actions_to_str(insts)
- if test.ver == ofproto_v1_0.OFP_VERSION:
- act_str = inst_str
- self._equal_act_to_str(act_str, act, act_type, test)
- else:
- self._equal_inst_to_str(inst_str, act, act_type, test)
-
- def _test_match(self, attrs, test):
- dp = ofproto_protocol.ProtocolDesc(version=test.ver)
-
- # str -> match
- match = test.to_match(dp, attrs)
-
- for key, value in attrs.items():
- key = self._conv_key(test, key, attrs)
- self._equal_str_to_match(key, value, match, test)
-
- # match -> str
- match_str = test.match_to_str(match)
-
- for key, value in attrs.items():
- if key in conv_of12_to_of10_dict:
- key_old = conv_of12_to_of10_dict[key]
- else:
- key_old = key
- self._equal_match_to_str(key_old, value, match_str, test)
-
- def _equal_str_to_inst(self, inst, act, act_type, test):
- if act_type in test.supported_action:
- cls = test.supported_action[act_type]
- else:
- cls = None
- if act_type == 'GOTO_TABLE':
- ok_(isinstance(inst, cls))
- eq_(inst.table_id, act["table_id"])
- elif act_type == 'WRITE_METADATA':
- ok_(isinstance(inst, cls))
- eq_(inst.metadata, act["metadata"])
- eq_(inst.metadata_mask, act["metadata_mask"])
- elif act_type == 'METER':
- ok_(isinstance(inst, cls))
- eq_(inst.meter_id, act["meter_id"])
- elif act_type == 'WRITE_ACTIONS':
- ok_(isinstance(inst, cls))
- eq_(inst.type, test._ofproto.OFPIT_WRITE_ACTIONS)
- self._equal_str_to_act(inst.actions[0],
- act["actions"][0],
- act["actions"][0]["type"],
- test)
- elif act_type == 'CLEAR_ACTIONS':
- ok_(isinstance(inst, cls))
- eq_(inst.type, test._ofproto.OFPIT_CLEAR_ACTIONS)
- else:
- # APPLY_ACTIONS or Uknown Action Type
- ok_(isinstance(inst, test._parser.OFPInstructionActions))
- eq_(inst.type, test._ofproto.OFPIT_APPLY_ACTIONS)
- self._equal_str_to_act(inst.actions[0], act,
- act_type, test)
-
- def _equal_str_to_act(self, action, act, act_type, test):
- if act_type in test.supported_action:
- cls = test.supported_action[act_type]
- else:
- cls = None
- ok_(isinstance(action, cls))
- if act_type == 'OUTPUT':
- eq_(action.port, act["port"])
- elif act_type == 'SET_VLAN_VID':
- eq_(action.vlan_vid, act["vlan_vid"])
- elif act_type == 'SET_VLAN_PCP':
- eq_(action.vlan_pcp, act["vlan_pcp"])
- elif act_type == 'SET_DL_SRC':
- eq_(addrconv.mac.bin_to_text(action.dl_addr),
- act["dl_src"])
- elif act_type == 'SET_DL_DST':
- eq_(addrconv.mac.bin_to_text(action.dl_addr),
- act["dl_dst"])
- elif act_type == 'SET_NW_SRC':
- ip = netaddr.ip.IPAddress(action.nw_addr)
- eq_(str(ip), act["nw_src"])
- elif act_type == 'SET_NW_DST':
- ip = netaddr.ip.IPAddress(action.nw_addr)
- eq_(str(ip), act["nw_dst"])
- elif act_type == 'SET_NW_TOS':
- eq_(action.tos, act["nw_tos"])
- elif act_type == 'SET_TP_SRC':
- eq_(action.tp, act["tp_src"])
- elif act_type == 'SET_TP_DST':
- eq_(action.tp, act["tp_dst"])
- elif act_type == 'ENQUEUE':
- eq_(action.queue_id, act["queue_id"])
- eq_(action.port, act["port"])
- elif act_type == 'SET_MPLS_TTL':
- eq_(action.mpls_ttl, act["mpls_ttl"])
- elif act_type in ['PUSH_VLAN', 'PUSH_MPLS',
- 'POP_MPLS', 'PUSH_PBB']:
- eq_(action.ethertype, act["ethertype"])
- elif act_type == 'SET_QUEUE':
- eq_(action.queue_id, act["queue_id"])
- elif act_type == 'GROUP':
- eq_(action.group_id, act["group_id"])
- elif act_type == 'SET_NW_TTL':
- eq_(action.nw_ttl, act["nw_ttl"])
- elif act_type == 'SET_FIELD':
- eq_(action.key, act['field'])
- eq_(action.value, act['value'])
- elif act_type in ['STRIP_VLAN', 'COPY_TTL_OUT',
- 'COPY_TTL_IN', 'DEC_MPLS_TTL',
- 'POP_VLAN', 'DEC_NW_TTL', 'POP_PBB']:
- pass
- else: # Uknown Action Type
- assert False
-
- def _equal_inst_to_str(self, inst_str, act, act_type, test):
- if act_type == 'WRITE_ACTIONS':
- act_str = inst_str[0]["WRITE_ACTIONS"]
- act = act["actions"][0]
- act_type = act["type"]
- self._equal_act_to_str(act_str, act, act_type, test)
- else:
- inst_str_list = inst_str[0].split(':', 1)
- eq_(inst_str_list[0], act_type)
- if act_type == 'GOTO_TABLE':
- eq_(int(inst_str_list[1]), act["table_id"])
- elif act_type == 'WRITE_METADATA':
- met = inst_str_list[1].split('/')
- eq_(int(met[0], 16), act["metadata"])
- eq_(int(met[1], 16), act["metadata_mask"])
- elif act_type == 'METER':
- eq_(int(inst_str_list[1]), act["meter_id"])
- elif act_type == 'CLEAR_ACTIONS':
- pass
- else:
- # APPLY_ACTIONS
- act_str = inst_str
- self._equal_act_to_str(act_str, act, act_type, test)
-
- def _equal_act_to_str(self, act_str, act, act_type, test):
- act_str_list = act_str[0].split(':', 1)
- eq_(act_str_list[0], act_type)
- if act_type == 'OUTPUT':
- eq_(int(act_str_list[1]), act["port"])
- elif act_type == 'SET_VLAN_VID':
- eq_(int(act_str_list[1]), act["vlan_vid"])
- elif act_type == 'SET_VLAN_PCP':
- eq_(int(act_str_list[1]), act["vlan_pcp"])
- elif act_type == 'SET_DL_SRC':
- eq_(act_str_list[1], act["dl_src"])
- elif act_type == 'SET_DL_DST':
- eq_(act_str_list[1], act["dl_dst"])
- elif act_type == 'SET_NW_SRC':
- eq_(act_str_list[1], act["nw_src"])
- elif act_type == 'SET_NW_DST':
- eq_(act_str_list[1], act["nw_dst"])
- elif act_type == 'SET_NW_TOS':
- eq_(int(act_str_list[1]), act["nw_tos"])
- elif act_type == 'SET_TP_SRC':
- eq_(int(act_str_list[1]), act["tp_src"])
- elif act_type == 'SET_TP_DST':
- eq_(int(act_str_list[1]), act["tp_dst"])
- elif act_type == 'ENQUEUE':
- enq = act_str_list[1].split(':')
- eq_(int(enq[0], 10), act["port"])
- eq_(int(enq[1], 10), act["queue_id"])
- elif act_type == 'SET_MPLS_TTL':
- eq_(int(act_str_list[1]), act["mpls_ttl"])
- elif act_type == 'PUSH_VLAN':
- eq_(int(act_str_list[1]), act["ethertype"])
- elif act_type == 'PUSH_MPLS':
- eq_(int(act_str_list[1]), act["ethertype"])
- elif act_type == 'POP_MPLS':
- eq_(int(act_str_list[1]), act["ethertype"])
- elif act_type == 'SET_QUEUE':
- eq_(int(act_str_list[1]), act["queue_id"])
- elif act_type == 'GROUP':
- eq_(int(act_str_list[1]), act["group_id"])
- elif act_type == 'SET_NW_TTL':
- eq_(int(act_str_list[1]), act["nw_ttl"])
- elif act_type == 'SET_FIELD':
- field, value = act_str_list[1].split(':')
- eq_(field.strip(' {'), act["field"])
- eq_(int(value.strip('} ')), act["value"])
- elif act_type == 'PUSH_PBB':
- eq_(int(act_str_list[1]), act["ethertype"])
- elif act_type in ['STRIP_VLAN', 'COPY_TTL_OUT',
- 'COPY_TTL_IN', 'DEC_MPLS_TTL',
- 'POP_VLAN', 'DEC_NW_TTL', 'POP_PBB']:
- pass
- else:
- assert False
-
- def _equal_str_to_match(self, key, value, match, test):
- field_value = self._get_field_value(test, key, match)
-
- if key in ['eth_src', 'eth_dst', 'arp_sha', 'arp_tha']:
- # MAC address
- eth, mask = _to_match_eth(value)
- if mask is not None:
- # with mask
- for i in range(0, len(mask)):
- if mask[i] == 'f':
- eq_(eth[i], field_value[0][i])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(eth, field_value)
- return
- elif key in ['dl_src', 'dl_dst']:
- eth, mask = _to_match_eth(value)
- field_value = addrconv.mac.bin_to_text(field_value)
- eq_(eth, field_value)
- return
- elif key in ['ipv4_src', 'ipv4_dst', 'arp_spa', 'arp_tpa']:
- # IPv4 address
- ipv4, mask = _to_match_ip(value)
- if mask is not None:
- # with mask
- eq_(ipv4, field_value[0])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(ipv4, field_value)
- return
- elif key in ['nw_src', 'nw_dst']:
- # IPv4 address
- ipv4, mask = _to_match_ip(value)
- field_value = _to_match_ip(field_value)
- if mask is not None:
- # with mask
- eq_(ipv4, field_value[0])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(ipv4, field_value[0])
- return
- elif key in ['ipv6_src', 'ipv6_dst']:
- # IPv6 address
- ipv6, mask = _to_match_ip(value)
- if mask is not None:
- # with mask
- eq_(ipv6, field_value[0])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(ipv6, field_value)
- return
- elif key == 'vlan_vid':
- if test.ver == ofproto_v1_0.OFP_VERSION:
- eq_(value, field_value)
- else:
- eq_(test.expected_value['vlan_vid'][
- value]['to_match'], field_value)
- return
- else:
- if isinstance(value, str) and '/' in value:
- # with mask
- value, mask = _to_match_masked_int(value)
- value &= mask
- eq_(value, field_value[0])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(_str_to_int(value), field_value)
- return
-
- def _equal_match_to_str(self, key, value, match_str, test):
- field_value = match_str[key]
- if key in ['dl_src', 'dl_dst', 'arp_sha', 'arp_tha']:
- # MAC address
- eth, mask = _to_match_eth(value)
- if mask is not None:
- # with mask
- field_value = field_value.split('/')
- for i in range(0, len(mask)):
- if mask[i] == 'f':
- eq_(eth[i], field_value[0][i])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(eth, field_value)
- return
- elif key in['nw_src', 'nw_dst', 'arp_spa', 'arp_tpa']:
- # IPv4 address
- if test.ver == ofproto_v1_0.OFP_VERSION:
- ipv4, mask = _to_match_ip(value)
- field_value = _to_match_ip(field_value)
- if mask is not None:
- # with mask
- eq_(ipv4, field_value[0])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(ipv4, field_value[0])
- else:
- ipv4, mask = _to_match_ip(value)
- if mask is not None:
- # with mask
- field_value = field_value.split('/')
- eq_(ipv4, field_value[0])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(ipv4, field_value)
- return
- elif key in ['ipv6_src', 'ipv6_dst']:
- # IPv6 address
- ipv6, mask = _to_match_ip(value)
- if mask is not None:
- # with mask
- field_value = field_value.split('/')
- eq_(ipv6, field_value[0])
- eq_(mask, field_value[1])
- else:
- # without mask
- eq_(ipv6, field_value)
- return
- elif key == 'dl_vlan':
- if test.ver == ofproto_v1_0.OFP_VERSION:
- eq_(value, field_value)
- else:
- eq_(test.expected_value['vlan_vid'][
- value]['to_str'], field_value)
- return
- else:
- if isinstance(value, str) and '/' in value:
- # with mask
- value = _to_masked_int_str(value)
- eq_(value, field_value)
- else:
- # without mask
- eq_(_str_to_int(value), field_value)
- return
-
- def _conv_key(self, test, key, attrs):
- if test.ver != ofproto_v1_0.OFP_VERSION:
- if key in conv_of10_to_of12_dict:
- # For old field name
- key = conv_of10_to_of12_dict[key]
- elif key == 'tp_src' or key == 'tp_dst':
- # TCP/UDP port
- conv = {inet.IPPROTO_TCP: {'tp_src': 'tcp_src',
- 'tp_dst': 'tcp_dst'},
- inet.IPPROTO_UDP: {'tp_src': 'udp_src',
- 'tp_dst': 'udp_dst'}}
- ip_proto = attrs.get('nw_proto', attrs.get('ip_proto', 0))
- key = conv[ip_proto][key]
-
- return key
-
- def _get_field_value(self, test, key, match):
- if test.ver == ofproto_v1_0.OFP_VERSION:
- members = inspect.getmembers(match)
- for member in members:
- if member[0] == key:
- field_value = member[1]
- elif member[0] == 'wildcards':
- wildcards = member[1]
- if key == 'nw_src':
- field_value = test.nw_src_to_str(wildcards, field_value)
- elif key == 'nw_dst':
- field_value = test.nw_dst_to_str(wildcards, field_value)
- else:
- field_value = match[key]
-
- return field_value
-
-
-class test_data_base(object):
- # followings must be an attribute of subclass.
- # _ofctl
- # _ofproto
-
- def __init__(self):
- self.ver = self._ofproto.OFP_VERSION
- self.to_match = self._ofctl.to_match
- self.match_to_str = self._ofctl.match_to_str
- self.to_actions = self._ofctl.to_actions
- self.actions_to_str = self._ofctl.actions_to_str
-
-
-class test_data_v1_0(test_data_base):
- """ Test_data for of_v1_0 """
- _ofctl = ofctl_v1_0
- _ofproto = ofproto_v1_0
- _parser = ofproto_v1_0_parser
-
- def __init__(self):
- super(test_data_v1_0, self).__init__()
- self.nw_src_to_str = self._ofctl.nw_src_to_str
- self.nw_dst_to_str = self._ofctl.nw_dst_to_str
- self.supported_action = {}
- self.act_list = [
- {'type': 'OUTPUT', 'port': 3},
- {'type': 'SET_VLAN_VID', 'vlan_vid': 5},
- {'type': 'SET_VLAN_PCP', 'vlan_pcp': 3},
- {'type': 'STRIP_VLAN'},
- {'type': 'SET_DL_SRC', 'dl_src': 'aa:bb:cc:11:22:33'},
- {'type': 'SET_DL_DST', 'dl_dst': 'aa:bb:cc:11:22:33'},
- {'type': 'SET_NW_SRC', 'nw_src': '10.0.0.1'},
- {'type': 'SET_NW_DST', 'nw_dst': '10.0.0.1'},
- {'type': 'SET_NW_TOS', 'nw_tos': 184},
- {'type': 'SET_TP_SRC', 'tp_src': 8080},
- {'type': 'SET_TP_DST', 'tp_dst': 8080},
- {'type': 'ENQUEUE', 'queue_id': 3, 'port': 1}
- ]
- self.attr_list = [
- {'in_port': 7},
- {'dl_src': 'aa:bb:cc:11:22:33'},
- {'dl_dst': 'aa:bb:cc:11:22:33'},
- {'dl_vlan': 5},
- {'dl_vlan_pcp': 3},
- {'dl_type': 123},
- {'nw_tos': 16},
- {'nw_proto': 5},
- {'nw_src': '192.168.0.1'},
- {'nw_src': '192.168.0.1/24'},
- {'nw_dst': '192.168.0.1'},
- {'nw_dst': '192.168.0.1/24'},
- {'tp_src': 1},
- {'tp_dst': 2}
- ]
- self.set_action()
-
- def set_action(self):
- self.supported_action.update(
- {
- 'OUTPUT': self._parser.OFPActionOutput,
- 'SET_VLAN_VID': self._parser.OFPActionVlanVid,
- 'SET_VLAN_PCP': self._parser.OFPActionVlanPcp,
- 'STRIP_VLAN': self._parser.OFPActionStripVlan,
- 'SET_DL_SRC': self._parser.OFPActionSetDlSrc,
- 'SET_DL_DST': self._parser.OFPActionSetDlDst,
- 'SET_NW_SRC': self._parser.OFPActionSetNwSrc,
- 'SET_NW_DST': self._parser.OFPActionSetNwDst,
- 'SET_NW_TOS': self._parser.OFPActionSetNwTos,
- 'SET_TP_SRC': self._parser.OFPActionSetTpSrc,
- 'SET_TP_DST': self._parser.OFPActionSetTpDst,
- 'ENQUEUE': self._parser.OFPActionEnqueue
- })
-
-
-class test_data_v1_2(test_data_base):
- """ Test_data for of_v1_2 """
- _ofctl = ofctl_v1_2
- _ofproto = ofproto_v1_2
- _parser = ofproto_v1_2_parser
-
- def __init__(self):
- super(test_data_v1_2, self).__init__()
- self.supported_action = {}
- self.act_list = [
- {'type': 'OUTPUT', 'port': 3},
- {'type': 'COPY_TTL_OUT'},
- {'type': 'COPY_TTL_IN'},
- {'type': 'SET_MPLS_TTL', 'mpls_ttl': 64},
- {'type': 'DEC_MPLS_TTL'},
- {'type': 'PUSH_VLAN', 'ethertype': 0x0800},
- {'type': 'POP_VLAN'},
- {'type': 'PUSH_MPLS', 'ethertype': 0x0800},
- {'type': 'POP_MPLS', 'ethertype': 0x0800},
- {'type': 'SET_QUEUE', 'queue_id': 7},
- {'type': 'GROUP', 'group_id': 5},
- {'type': 'SET_NW_TTL', 'nw_ttl': 64},
- {'type': 'DEC_NW_TTL'},
- {"type": "CLEAR_ACTIONS"},
- {"type": "WRITE_ACTIONS",
- "actions": [{"type": "OUTPUT", "port": 4}]},
- {'type': 'GOTO_TABLE', 'table_id': 8},
- {'type': 'WRITE_METADATA', 'metadata': 8,
- 'metadata_mask': (1 << 64) - 1},
- ]
- self.attr_list = [
- {'in_port': 7},
- {'in_phy_port': 5, 'in_port': 3},
- {'metadata': 12345},
- {'metadata': '0x1212121212121212'},
- {'metadata': '0x19af28be37fa91b/0x1010101010101010'},
- {'dl_src': "aa:bb:cc:11:22:33"},
- {'dl_src': "aa:bb:cc:11:22:33/00:00:00:00:ff:ff"},
- {'dl_dst': "aa:bb:cc:11:22:33"},
- {'dl_dst': "aa:bb:cc:11:22:33/00:00:00:00:ff:ff"},
- {'dl_type': 123},
- {'eth_src': "aa:bb:cc:11:22:33"},
- {'eth_src': "aa:bb:cc:11:22:33/00:00:00:00:ff:ff"},
- {'eth_dst': "aa:bb:cc:11:22:33"},
- {'eth_dst': "aa:bb:cc:11:22:33/00:00:00:00:ff:ff"},
- {'eth_type': 0x800},
- {'dl_vlan': 0},
- {'dl_vlan': 3},
- {'dl_vlan': 4095},
- {'dl_vlan': "0"},
- {'dl_vlan': "3"},
- {'dl_vlan': "4095"},
- {'dl_vlan': "0x0000"},
- {'dl_vlan': "0x0003"},
- {'dl_vlan': "0x0fff"},
- {'dl_vlan': "0x1000"},
- {'dl_vlan': "0x1003"},
- {'dl_vlan': "0x1fff"},
- {'dl_vlan': "4096/4096"},
- {'dl_vlan': "4096/4097"},
- {'dl_vlan': "2744/2748"},
- {'dl_vlan': "2748/2748"},
- {'dl_vlan': "2748/2749"},
- {'dl_vlan': "0x1000/0x1000"},
- {'dl_vlan': "0x1000/0x1001"},
- {'dl_vlan': "0x0ab8/0x0abc"},
- {'dl_vlan': "0x0abc/0x0abc"},
- {'dl_vlan': "0x0abc/0x0abd"},
- {'vlan_pcp': 3, 'vlan_vid': 3},
- {'ip_dscp': 3, 'eth_type': 0x0800},
- {'ip_ecn': 4, 'eth_type': 0x86dd},
- {'nw_src': "192.168.0.1", 'eth_type': 0x0800},
- {'nw_src': "192.168.0.1/24", 'eth_type': 0x0800},
- {'nw_src': "192.168.10.10/255.255.0.0", 'eth_type': 0x0800},
- {'nw_dst': "192.168.0.1", 'eth_type': 0x0800},
- {'nw_dst': "192.168.0.1/24", 'eth_type': 0x0800},
- {'nw_dst': "192.168.10.10/255.255.255.0"},
- {'nw_proto': 5, 'eth_type': 0x0800},
- {'ip_proto': 5, 'eth_type': 0x86dd},
- {'ipv4_src': "192.168.0.1", 'eth_type': 0x0800},
- {'ipv4_src': "192.168.0.1/24", 'eth_type': 0x0800},
- {'ipv4_src': "192.168.10.10/255.255.0.0", 'eth_type': 0x0800},
- {'ipv4_dst': "192.168.0.1", 'eth_type': 0x0800},
- {'ipv4_dst': "192.168.0.1/24", 'eth_type': 0x0800},
- {'ipv4_dst': "192.168.10.10/255.255.255.0", 'eth_type': 0x0800},
- {'tp_src': 1, 'ip_proto': 6},
- {'tp_dst': 2, 'ip_proto': 6},
- {'tp_src': 3, 'ip_proto': 17},
- {'tp_dst': 4, 'ip_proto': 17},
- {'vlan_vid': 0},
- {'vlan_vid': 3},
- {'vlan_vid': 4095},
- {'vlan_vid': "0"},
- {'vlan_vid': "3"},
- {'vlan_vid': "4095"},
- {'vlan_vid': "0x0000"},
- {'vlan_vid': "0x0003"},
- {'vlan_vid': "0x0fff"},
- {'vlan_vid': "0x1000"},
- {'vlan_vid': "0x1003"},
- {'vlan_vid': "0x1fff"},
- {'vlan_vid': "4096/4096"},
- {'vlan_vid': "4096/4097"},
- {'vlan_vid': "2744/2748"},
- {'vlan_vid': "2748/2748"},
- {'vlan_vid': "2748/2749"},
- {'vlan_vid': "0x1000/0x1000"},
- {'vlan_vid': "0x1000/0x1001"},
- {'vlan_vid': "0x0ab8/0x0abc"},
- {'vlan_vid': "0x0abc/0x0abc"},
- {'vlan_vid': "0x0abc/0x0abd"},
- {'tcp_src': 3, 'ip_proto': 6},
- {'tcp_dst': 5, 'ip_proto': 6},
- {'udp_src': 2, 'ip_proto': 17},
- {'udp_dst': 6, 'ip_proto': 17},
- {'sctp_src': 99, 'ip_proto': 132},
- {'sctp_dst': 99, 'ip_proto': 132},
- {'icmpv4_type': 5, 'ip_proto': 1},
- {'icmpv4_code': 6, 'ip_proto': 1},
- {'arp_op': 3, 'eth_type': 0x0806},
- {'arp_spa': "192.168.0.11", 'eth_type': 0x0806},
- {'arp_spa': "192.168.0.22/24", 'eth_type': 0x0806},
- {'arp_tpa': "192.168.0.33", 'eth_type': 0x0806},
- {'arp_tpa': "192.168.0.44/24", 'eth_type': 0x0806},
- {'arp_sha': "aa:bb:cc:11:22:33", 'eth_type': 0x0806},
- {'arp_sha': "aa:bb:cc:11:22:33/00:00:00:00:ff:ff",
- 'eth_type': 0x0806},
- {'arp_tha': "aa:bb:cc:11:22:33", 'eth_type': 0x0806},
- {'arp_tha': "aa:bb:cc:11:22:33/00:00:00:00:ff:ff",
- 'eth_type': 0x0806},
- {'ipv6_src': '2001::aaaa:bbbb:cccc:1111', 'eth_type': 0x86dd},
- {'ipv6_src': '2001::aaaa:bbbb:cccc:1111/64', 'eth_type': 0x86dd},
- {'ipv6_dst': '2001::ffff:cccc:bbbb:1111', 'eth_type': 0x86dd},
- {'ipv6_dst': '2001::ffff:cccc:bbbb:1111/64', 'eth_type': 0x86dd},
- {'ipv6_flabel': 2, 'eth_type': 0x86dd},
- {'icmpv6_type': 3, 'ip_proto': 58},
- {'icmpv6_code': 4, 'ip_proto': 58},
- {'ipv6_nd_target': '2001::ffff:cccc:bbbb:1111',
- 'icmpv6_type': 135, 'ip_proto': 58},
- {'ipv6_nd_sll': "aa:bb:cc:11:22:33",
- 'icmpv6_type': 135, 'ip_proto': 58},
- {'ipv6_nd_tll': "aa:bb:cc:11:22:33",
- 'icmpv6_type': 136, 'ip_proto': 58},
- {'mpls_label': 3, 'eth_type': 0x8848},
- {'mpls_tc': 2, 'eth_type': 0x8848}
- ]
- self.supported_action.update(
- {
- 'OUTPUT': self._parser.OFPActionOutput,
- 'COPY_TTL_OUT': self._parser.OFPActionCopyTtlOut,
- 'COPY_TTL_IN': self._parser.OFPActionCopyTtlIn,
- 'SET_MPLS_TTL': self._parser.OFPActionSetMplsTtl,
- 'DEC_MPLS_TTL': self._parser.OFPActionDecMplsTtl,
- 'PUSH_VLAN': self._parser.OFPActionPushVlan,
- 'POP_VLAN': self._parser.OFPActionPopVlan,
- 'PUSH_MPLS': self._parser.OFPActionPushMpls,
- 'POP_MPLS': self._parser.OFPActionPopMpls,
- 'SET_QUEUE': self._parser.OFPActionSetQueue,
- 'GROUP': self._parser.OFPActionGroup,
- 'SET_NW_TTL': self._parser.OFPActionSetNwTtl,
- 'DEC_NW_TTL': self._parser.OFPActionDecNwTtl,
- 'SET_FIELD': self._parser.OFPActionSetField,
- 'GOTO_TABLE': self._parser.OFPInstructionGotoTable,
- 'WRITE_METADATA': self._parser.OFPInstructionWriteMetadata,
- 'WRITE_ACTIONS': self._parser.OFPInstructionActions,
- 'CLEAR_ACTIONS': self._parser.OFPInstructionActions,
- })
- self.set_expected_value()
-
- def set_expected_value(self):
- vid_present = self._ofproto.OFPVID_PRESENT
- self.expected_value = {
- "vlan_vid": {
- 0: {"to_match": 0 | vid_present, "to_str": "0"},
- 3: {"to_match": 3 | vid_present, "to_str": "3"},
- 4095: {"to_match": 4095 | vid_present, "to_str": "4095"},
- "0": {"to_match": 0 | vid_present, "to_str": "0"},
- "3": {"to_match": 3 | vid_present, "to_str": "3"},
- "4095": {"to_match": 4095 | vid_present, "to_str": "4095"},
- "0x0000": {"to_match": 0x0000, "to_str": "0x0000"},
- "0x0003": {"to_match": 0x0003, "to_str": "0x0003"},
- "0x0fff": {"to_match": 0x0fff, "to_str": "0x0fff"},
- "0x1000": {"to_match": 0x1000, "to_str": "0"},
- "0x1003": {"to_match": 0x1003, "to_str": "3"},
- "0x1fff": {"to_match": 0x1fff, "to_str": "4095"},
- "4096/4096": {"to_match": (4096, 4096),
- "to_str": "0x1000/0x1000"},
- "4096/4097": {"to_match": (4096, 4097),
- "to_str": "0x1000/0x1001"},
- "2744/2748": {"to_match": (2744, 2748),
- "to_str": "0x0ab8/0x0abc"},
- "2748/2748": {"to_match": (2748, 2748),
- "to_str": "0x0abc/0x0abc"},
- "2748/2749": {"to_match": (2748, 2749),
- "to_str": "0x0abc/0x0abd"},
- "0x1000/0x1000": {"to_match": (0x1000, 0x1000),
- "to_str": "0x1000/0x1000"},
- "0x1000/0x1001": {"to_match": (0x1000, 0x1001),
- "to_str": "0x1000/0x1001"},
- "0x0ab8/0x0abc": {"to_match": (0x0ab8, 0x0abc),
- "to_str": "0x0ab8/0x0abc"},
- "0x0abc/0x0abc": {"to_match": (0x0abc, 0x0abc),
- "to_str": "0x0abc/0x0abc"},
- "0x0abc/0x0abd": {"to_match": (0x0abc, 0x0abd),
- "to_str": "0x0abc/0x0abd"}
- }
- }
-
-
-class test_data_v1_3(test_data_v1_2):
- """ Test_data for of_v1_3 """
- _ofctl = ofctl_v1_3
- _ofproto = ofproto_v1_3
- _parser = ofproto_v1_3_parser
-
- def __init__(self):
- super(test_data_v1_3, self).__init__()
- self.act_list.extend(
- [
- {'type': 'PUSH_PBB', 'ethertype': 0x0800},
- {'type': 'POP_PBB'},
- {'type': 'METER', 'meter_id': 3},
- ]
- )
- self.attr_list.extend(
- [
- {'mpls_bos': 3, 'eth_type': 0x8848},
- {'pbb_isid': 5, 'eth_type': 0x88E7},
- {'pbb_isid': "0x05", 'eth_type': 0x88E7},
- {'pbb_isid': "0x05/0xff", 'eth_type': 0x88E7},
- {'tunnel_id': 7},
- {'tunnel_id': "0x07"},
- {'tunnel_id': "0x07/0xff"},
- {'ipv6_exthdr': 3, 'eth_type': 0x86dd},
- {'ipv6_exthdr': "0x40", 'eth_type': 0x86dd},
- {'ipv6_exthdr': "0x40/0x1F0", 'eth_type': 0x86dd},
- ]
- )
- self.supported_action.update(
- {
- 'PUSH_PBB': self._parser.OFPActionPushPbb,
- 'POP_PBB': self._parser.OFPActionPopPbb,
- 'METER': self._parser.OFPInstructionMeter,
- })
- self.set_expected_value()
-
-
-def _add_tests_actions(cls):
- for act in cls.act_list:
- method_name = 'test_' + str(cls.ver) + '_' + act["type"] + '_action'
-
- def _run(self, name, act, cls):
- print('processing %s ...' % name)
- cls_ = Test_ofctl(name)
- cls_._test_actions(act, cls)
- print('adding %s ...' % method_name)
- func = functools.partial(_run, name=method_name, act=act, cls=cls)
- test_lib.add_method(Test_ofctl, method_name, func)
-
-
-def _add_tests_match(cls):
- for attr in cls.attr_list:
- for key, value in attr.items():
- method_name = 'test_' + \
- str(cls.ver) + '_' + key + '_' + str(
- value) + str(type(value)) + '_match'
-
- def _run(self, name, attr, cls):
- print('processing %s ...' % name)
- cls_ = Test_ofctl(name)
- cls_._test_match(attr, cls)
- print('adding %s ...' % method_name)
- func = functools.partial(
- _run, name=method_name, attr=attr, cls=cls)
- test_lib.add_method(Test_ofctl, method_name, func)
-
-
-""" Test case """
-
-# for of10
-cls = test_data_v1_0()
-_add_tests_actions(cls)
-_add_tests_match(cls)
-
-# for of12
-cls = test_data_v1_2()
-_add_tests_actions(cls)
-_add_tests_match(cls)
-
-# for of13
-cls = test_data_v1_3()
-_add_tests_actions(cls)
-_add_tests_match(cls)
diff --git a/tests/unit/lib/test_ofctl_string.py b/tests/unit/lib/test_ofctl_string.py
deleted file mode 100644
index fb491e39..00000000
--- a/tests/unit/lib/test_ofctl_string.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-
-from ryu.lib import ofctl_string
-from ryu.ofproto import ofproto_parser
-from ryu.ofproto.ofproto_protocol import ProtocolDesc
-from ryu.ofproto import ofproto_v1_5
-
-
-class Test_OfctlString(unittest.TestCase):
- """Test cases for ryu.ofproto.ofp_instruction_from_str.
- """
-
- def __init__(self, methodName):
- print('init %s' % methodName)
- self.fake_dp_of15 = ProtocolDesc(ofproto_v1_5.OFP_VERSION)
- self.maxDiff = None
- super(Test_OfctlString, self).__init__(methodName)
-
- def _test_str(self, dp, ofctl_str, *jsondict):
- json = ofctl_string.ofp_instruction_from_str(
- ofproto_v1_5, ofctl_str)
- inst = ofproto_parser.ofp_instruction_from_jsondict(dp, json)
- self.assertEqual(len(inst), len(jsondict))
- for i in range(len(inst)):
- self.assertEqual(jsondict[i], inst[i].to_jsondict())
-
- def test_drop(self):
- inst = ofctl_string.ofp_instruction_from_str(
- ofproto_v1_5, 'drop')
- self.assertEqual(inst, [])
-
- def test_conjunction(self):
- self._test_str(self.fake_dp_of15,
- 'conjunction(0x234, 1/3),conjunction(0xdea, 2/2)',
- {'OFPInstructionActions': {
- 'actions': [
- {'NXActionConjunction': {'clause': 0,
- 'experimenter': 8992,
- 'id': 0x234,
- 'len': None,
- 'n_clauses': 3,
- 'subtype': 34,
- 'type': 65535}},
- {'NXActionConjunction': {'clause': 1,
- 'experimenter': 8992,
- 'id': 0xdea,
- 'len': None,
- 'n_clauses': 2,
- 'subtype': 34,
- 'type': 65535}}],
- 'type': 4}})
-
- def test_ct(self):
- self._test_str(self.fake_dp_of15,
- 'ct(commit)',
- {'OFPInstructionActions': {
- 'actions': [{'NXActionCT': {'actions': [],
- 'alg': 0,
- 'experimenter': 8992,
- 'flags': 1,
- 'len': None,
- 'recirc_table': 255,
- 'subtype': 35,
- 'type': 65535,
- 'zone_ofs_nbits': 0,
- 'zone_src': u''}}],
- 'type': 4}})
-
- def test_ct_2(self):
- self._test_str(self.fake_dp_of15,
- 'ct(commit,zone=NXM_NX_REG8[0..15],'
- 'exec(set_field:1->ct_mark))',
- {'OFPInstructionActions': {
- 'actions': [{'NXActionCT': {
- 'actions': [
- {'OFPActionSetField': {
- 'field': {'OXMTlv': {'field': 'ct_mark',
- 'mask': None,
- 'value': 1}},
- 'len': 8,
- 'type': 25}}],
- 'alg': 0,
- 'experimenter': 8992,
- 'flags': 1,
- 'len': None,
- 'recirc_table': 255,
- 'subtype': 35,
- 'type': 65535,
- 'zone_ofs_nbits': 15,
- 'zone_src': u'reg8'}}],
- 'type': 4}})
-
- def test_resubmit(self):
- self._test_str(self.fake_dp_of15,
- 'resubmit(,10)',
- {'OFPInstructionActions':
- {'actions': [{'NXActionResubmitTable': {
- 'experimenter': 8992,
- 'in_port': 65528,
- 'len': None,
- 'subtype': 14,
- 'table_id': 10,
- 'type': 65535}}],
- 'type': 4}})
-
- def test_set_field(self):
- self._test_str(self.fake_dp_of15,
- 'set_field:10/0xff->tun_id',
- {'OFPInstructionActions':
- {'actions': [{'OFPActionSetField': {
- 'field': {'OXMTlv': {'field': 'tunnel_id',
- 'mask': 255,
- 'value': 10}},
- 'len': 8,
- 'type': 25}}],
- 'type': 4}})
-
- def test_pop_vlan(self):
- self._test_str(self.fake_dp_of15,
- 'pop_vlan',
- {'OFPInstructionActions':
- {'actions': [{'OFPActionPopVlan': {'len': 8,
- 'type': 18}}],
- 'type': 4}})
-
- def test_multi(self):
- self._test_str(self.fake_dp_of15,
- 'pop_vlan,goto_table:33',
- {'OFPInstructionActions':
- {'actions': [{'OFPActionPopVlan': {'len': 8,
- 'type': 18}}],
- 'type': 4}},
- {'OFPInstructionGotoTable':
- {'len': 8,
- 'table_id': 33,
- 'type': 1}})
diff --git a/tests/unit/lib/test_ofctl_utils.py b/tests/unit/lib/test_ofctl_utils.py
deleted file mode 100644
index 2f02f43b..00000000
--- a/tests/unit/lib/test_ofctl_utils.py
+++ /dev/null
@@ -1,142 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-import unittest
-
-from ryu.lib import ofctl_utils
-from ryu.ofproto import ofproto_v1_3
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_ofctl_utils(unittest.TestCase):
- # prepare test target
- util = ofctl_utils.OFCtlUtil(ofproto_v1_3)
-
- def _test_str_to_int(self, input_value, expected_value):
- output_value = ofctl_utils.str_to_int(input_value)
- self.assertEqual(expected_value, output_value)
-
- def test_str_to_int(self):
- self._test_str_to_int(1, 1) # int
- self._test_str_to_int('0b10', 2) # binary digit
- self._test_str_to_int('0o10', 8) # octal digit
- self._test_str_to_int('0x10', 16) # hexadecimal digit
-
- def test_ofp_port_from_user(self):
- self.assertEqual(
- ofproto_v1_3.OFPP_CONTROLLER,
- self.util.ofp_port_from_user(ofproto_v1_3.OFPP_CONTROLLER) # int
- )
- self.assertEqual(
- ofproto_v1_3.OFPP_CONTROLLER,
- self.util.ofp_port_from_user('CONTROLLER') # str without prefix
- )
- self.assertEqual(
- ofproto_v1_3.OFPP_CONTROLLER,
- self.util.ofp_port_from_user('OFPP_CONTROLLER') # str with prefix
- )
-
- def test_ofp_port_to_user(self):
- self.assertEqual(
- 'CONTROLLER',
- self.util.ofp_port_to_user(ofproto_v1_3.OFPP_CONTROLLER)
- )
- self.assertEqual(
- 1,
- self.util.ofp_port_to_user(1) # not matched
- )
-
- def test_ofp_table_from_user(self):
- self.assertEqual(
- ofproto_v1_3.OFPTT_ALL,
- self.util.ofp_table_from_user('ALL')
- )
-
- def test_ofp_table_to_user(self):
- self.assertEqual(
- 'ALL',
- self.util.ofp_table_to_user(ofproto_v1_3.OFPTT_ALL)
- )
-
- def test_ofp_cml_from_user(self):
- self.assertEqual(
- ofproto_v1_3.OFPCML_NO_BUFFER,
- self.util.ofp_cml_from_user('NO_BUFFER')
- )
-
- def test_ofp_cml_to_user(self):
- self.assertEqual(
- 'NO_BUFFER',
- self.util.ofp_cml_to_user(ofproto_v1_3.OFPCML_NO_BUFFER)
- )
-
- def test_ofp_group_from_user(self):
- self.assertEqual(
- ofproto_v1_3.OFPG_ANY,
- self.util.ofp_group_from_user('ANY')
- )
-
- def test_ofp_group_to_user(self):
- self.assertEqual(
- 'ANY',
- self.util.ofp_group_to_user(ofproto_v1_3.OFPG_ANY)
- )
-
- def test_ofp_buffer_from_user(self):
- self.assertEqual(
- ofproto_v1_3.OFP_NO_BUFFER,
- self.util.ofp_buffer_from_user('NO_BUFFER')
- )
- self.assertEqual(
- 1,
- self.util.ofp_buffer_from_user(1) # not matched
- )
-
- def test_ofp_buffer_to_user(self):
- self.assertEqual(
- 'NO_BUFFER',
- self.util.ofp_buffer_to_user(ofproto_v1_3.OFP_NO_BUFFER)
- )
- self.assertEqual(
- 1,
- self.util.ofp_buffer_to_user(1) # not matched
- )
-
- def test_ofp_meter_from_user(self):
- self.assertEqual(
- ofproto_v1_3.OFPM_ALL,
- self.util.ofp_meter_from_user('ALL')
- )
-
- def test_ofp_meter_to_user(self):
- self.assertEqual(
- 'ALL',
- self.util.ofp_meter_to_user(ofproto_v1_3.OFPM_ALL)
- )
-
- def test_ofp_queue_from_user(self):
- self.assertEqual(
- ofproto_v1_3.OFPQ_ALL,
- self.util.ofp_queue_from_user('ALL')
- )
-
- def test_ofp_queue_to_user(self):
- self.assertEqual(
- 'ALL',
- self.util.ofp_queue_to_user(ofproto_v1_3.OFPQ_ALL)
- )
diff --git a/tests/unit/lib/test_ofctl_v1_3.py b/tests/unit/lib/test_ofctl_v1_3.py
deleted file mode 100644
index 81cfacbf..00000000
--- a/tests/unit/lib/test_ofctl_v1_3.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2013 Stratosphere Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-from nose.tools import *
-
-from ryu.lib import ofctl_v1_3
-from ryu.ofproto import ofproto_v1_3, ofproto_v1_3_parser
-from ryu.ofproto import ofproto_protocol
-from ryu.ofproto.ofproto_v1_3_parser import OFPActionPopMpls
-
-LOG = logging.getLogger('test_ofctl_v1_3')
-
-
-class Test_ofctl_v1_3(unittest.TestCase):
-
- """ Test case for ofctl_v1_3
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_to_actions_pop_mpls(self):
- dp = ofproto_protocol.ProtocolDesc(version=ofproto_v1_3.OFP_VERSION)
-
- acts = [
- {
- 'type': 'POP_MPLS',
- 'ethertype': 0x0800
- }
- ]
- result = ofctl_v1_3.to_actions(dp, acts)
- insts = result[0]
- act = insts.actions[0]
- ok_(isinstance(act, OFPActionPopMpls))
- eq_(act.ethertype, 0x0800)
diff --git a/tests/unit/lib/test_ofp_pktinfilter.py b/tests/unit/lib/test_ofp_pktinfilter.py
deleted file mode 100644
index 2c037737..00000000
--- a/tests/unit/lib/test_ofp_pktinfilter.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (C) 2013 Stratosphere Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-
-from nose.tools import *
-
-from ryu.controller import ofp_event
-from ryu.controller.handler import (
- set_ev_cls,
- MAIN_DISPATCHER,
-)
-from ryu.lib.packet import vlan, ethernet, ipv4
-from ryu.lib.ofp_pktinfilter import packet_in_filter, RequiredTypeFilter
-from ryu.lib import mac
-from ryu.ofproto import ether, ofproto_v1_3, ofproto_v1_3_parser
-from ryu.ofproto.ofproto_protocol import ProtocolDesc
-
-
-LOG = logging.getLogger('test_pktinfilter')
-
-
-class _PacketInFilterApp(object):
- @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)
- @packet_in_filter(RequiredTypeFilter, {'types': [
- vlan.vlan,
- ]})
- def packet_in_handler(self, ev):
- return True
-
-
-class Test_packet_in_filter(unittest.TestCase):
-
- """ Test case for pktinfilter
- """
-
- def setUp(self):
- self.app = _PacketInFilterApp()
-
- def tearDown(self):
- pass
-
- def test_pkt_in_filter_pass(self):
- datapath = ProtocolDesc(version=ofproto_v1_3.OFP_VERSION)
- e = ethernet.ethernet(mac.BROADCAST_STR,
- mac.BROADCAST_STR,
- ether.ETH_TYPE_8021Q)
- v = vlan.vlan()
- i = ipv4.ipv4()
- pkt = (e / v / i)
- pkt.serialize()
- pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath,
- data=six.binary_type(pkt.data))
- ev = ofp_event.EventOFPPacketIn(pkt_in)
- ok_(self.app.packet_in_handler(ev))
-
- def test_pkt_in_filter_discard(self):
- datapath = ProtocolDesc(version=ofproto_v1_3.OFP_VERSION)
- e = ethernet.ethernet(mac.BROADCAST_STR,
- mac.BROADCAST_STR,
- ether.ETH_TYPE_IP)
- i = ipv4.ipv4()
- pkt = (e / i)
- pkt.serialize()
- pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath,
- data=six.binary_type(pkt.data))
- ev = ofp_event.EventOFPPacketIn(pkt_in)
- ok_(not self.app.packet_in_handler(ev))
-
- def test_pkt_in_filter_truncated(self):
- datapath = ProtocolDesc(version=ofproto_v1_3.OFP_VERSION)
- truncated_data = ''
- pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath,
- data=truncated_data)
- ev = ofp_event.EventOFPPacketIn(pkt_in)
- ok_(not self.app.packet_in_handler(ev))
diff --git a/tests/unit/lib/test_pack_utils.py b/tests/unit/lib/test_pack_utils.py
deleted file mode 100644
index 5bc99513..00000000
--- a/tests/unit/lib/test_pack_utils.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-import six
-import struct
-
-from nose.tools import ok_, eq_
-
-from ryu.lib import pack_utils
-
-
-class TestMsgPackInto(unittest.TestCase):
- """ Test case for msg_pack_into
- """
-
- def _test_msg_pack_into(self, offset_type='e'):
- fmt = '!HH'
- len_ = struct.calcsize(fmt)
- buf = bytearray(len_)
- offset = len_
- arg1 = 1
- arg2 = 2
-
- if offset_type == 'l':
- offset += 1
- elif offset_type == 'g':
- offset -= 1
-
- pack_utils.msg_pack_into(fmt, buf, offset, arg1, arg2)
-
- check_offset = len(buf) - len_
- res = struct.unpack_from(fmt, six.binary_type(buf), check_offset)
-
- eq_(arg1, res[0])
- eq_(arg2, res[1])
-
- return True
-
- def test_msg_pack_into(self):
- ok_(self._test_msg_pack_into())
-
- def test_msg_pack_into_less(self):
- ok_(self._test_msg_pack_into('l'))
-
- def test_msg_pack_into_greater(self):
- ok_(self._test_msg_pack_into('g'))
diff --git a/tests/unit/lib/test_pcaplib.py b/tests/unit/lib/test_pcaplib.py
deleted file mode 100644
index ac86904e..00000000
--- a/tests/unit/lib/test_pcaplib.py
+++ /dev/null
@@ -1,230 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import logging
-import os
-import struct
-import sys
-import unittest
-
-try:
- import mock # Python 2
-except ImportError:
- from unittest import mock # Python 3
-
-from nose.tools import eq_
-from nose.tools import raises
-
-from ryu.utils import binary_str
-from ryu.lib import pcaplib
-
-LOG = logging.getLogger(__name__)
-
-PCAP_PACKET_DATA_DIR = os.path.join(
- os.path.dirname(sys.modules[__name__].__file__),
- '../../packet_data/pcap/')
-
-
-class Test_PcapFileHdr(unittest.TestCase):
- """
- Test case for pcaplib.PcapFileHdr class
- """
- hdr = pcaplib.PcapFileHdr(
- magic=None, # temporary default
- version_major=2,
- version_minor=4,
- thiszone=0x11223344,
- sigfigs=0x22334455,
- snaplen=0x33445566,
- network=0x44556677,
- )
-
- buf_big = (
- b'\xa1\xb2\xc3\xd4' # magic (Big Endian)
- b'\x00\x02\x00\x04' # version_major, version_minor
- b'\x11\x22\x33\x44' # thiszone
- b'\x22\x33\x44\x55' # sigfigs
- b'\x33\x44\x55\x66' # snaplen
- b'\x44\x55\x66\x77' # network
- )
-
- buf_little = (
- b'\xd4\xc3\xb2\xa1' # magic (Little Endian)
- b'\x02\x00\x04\x00' # version_major, version_minor
- b'\x44\x33\x22\x11' # thiszone
- b'\x55\x44\x33\x22' # sigfigs
- b'\x66\x55\x44\x33' # snaplen
- b'\x77\x66\x55\x44' # network
- )
-
- buf_invalid = (
- b'\xff\xff\xff\xff' # magic (Invalid)
- b'\x02\x00\x04\x00' # version_major, version_minor
- b'\x44\x33\x22\x11' # thiszone
- b'\x55\x44\x33\x22' # sigfigs
- b'\x66\x55\x44\x33' # snaplen
- b'\x77\x66\x55\x44' # network
- )
-
- def _assert(self, magic, ret):
- self.hdr.magic = magic
- eq_(self.hdr.__dict__, ret.__dict__)
-
- def test_parser_with_big_endian(self):
- ret, byteorder = pcaplib.PcapFileHdr.parser(self.buf_big)
- self._assert(pcaplib.PcapFileHdr.MAGIC_NUMBER_IDENTICAL, ret)
- eq_('big', byteorder)
-
- def test_parser_with_little_endian(self):
- ret, byteorder = pcaplib.PcapFileHdr.parser(self.buf_little)
- self._assert(pcaplib.PcapFileHdr.MAGIC_NUMBER_SWAPPED, ret)
- eq_('little', byteorder)
-
- @mock.patch('sys.byteorder', 'big')
- def test_serialize_with_big_endian(self):
- buf = self.hdr.serialize()
- eq_(binary_str(self.buf_big), binary_str(buf))
-
- @mock.patch('sys.byteorder', 'little')
- def test_serialize_with_little_endian(self):
- buf = self.hdr.serialize()
- eq_(binary_str(self.buf_little), binary_str(buf))
-
- @raises(struct.error)
- def test_parser_with_invalid_magic_number(self):
- pcaplib.PcapFileHdr.parser(self.buf_invalid)
-
-
-class Test_PcapPktHdr(unittest.TestCase):
- """
- Test case for pcaplib.PcapPktHdr class
- """
- expected_buf = b'test_data'
-
- hdr = pcaplib.PcapPktHdr(
- ts_sec=0x11223344,
- ts_usec=0x22334455,
- incl_len=len(expected_buf),
- orig_len=0x44556677,
- )
-
- buf_big = (
- b'\x11\x22\x33\x44' # ts_sec
- b'\x22\x33\x44\x55' # ts_usec
- b'\x00\x00\x00\x09' # incl_len = len(expected_buf)
- b'\x44\x55\x66\x77' # orig_len
- )
-
- buf_little = (
- b'\x44\x33\x22\x11' # ts_sec
- b'\x55\x44\x33\x22' # ts_usec
- b'\x09\x00\x00\x00' # incl_len = len(expected_buf)
- b'\x77\x66\x55\x44' # orig_len
- )
-
- def test_parser_with_big_endian(self):
- ret, buf = pcaplib.PcapPktHdr.parser(
- self.buf_big + self.expected_buf, 'big')
- eq_(self.hdr.__dict__, ret.__dict__)
- eq_(self.expected_buf, buf)
-
- def test_parser_with_little_endian(self):
- ret, buf = pcaplib.PcapPktHdr.parser(
- self.buf_little + self.expected_buf, 'little')
- eq_(self.hdr.__dict__, ret.__dict__)
- eq_(self.expected_buf, buf)
-
- @mock.patch('sys.byteorder', 'big')
- def test_serialize_with_big_endian(self):
- buf = self.hdr.serialize()
- eq_(binary_str(self.buf_big), binary_str(buf))
-
- @mock.patch('sys.byteorder', 'little')
- def test_serialize_with_little_endian(self):
- buf = self.hdr.serialize()
- eq_(binary_str(self.buf_little), binary_str(buf))
-
-
-class Test_pcaplib_Reader(unittest.TestCase):
- """
- Test case for pcaplib.Reader class
- """
-
- expected_outputs = [
- (0x1234 + (0x5678 / 1e6), b'test_data_1'), # sec=0x1234, usec=0x5678
- (0x2345 + (0x6789 / 1e6), b'test_data_2'), # sec=0x2345, usec=0x6789
- ]
-
- def _test(self, file_name):
- outputs = []
- for ts, buf in pcaplib.Reader(open(file_name, 'rb')):
- outputs.append((ts, buf))
-
- eq_(self.expected_outputs, outputs)
-
- def test_with_big_endian(self):
- self._test(os.path.join(PCAP_PACKET_DATA_DIR, 'big_endian.pcap'))
-
- def test_with_little_endian(self):
- self._test(os.path.join(PCAP_PACKET_DATA_DIR, 'little_endian.pcap'))
-
-
-class DummyFile(object):
-
- def __init__(self):
- self.buf = b''
-
- def write(self, buf):
- self.buf += buf
-
- def close(self):
- pass
-
-
-class Test_pcaplib_Writer(unittest.TestCase):
- """
- Test case for pcaplib.Writer class
- """
-
- @staticmethod
- def _test(file_name):
- expected_buf = open(file_name, 'rb').read()
- f = DummyFile()
- w = pcaplib.Writer(f)
- w.write_pkt(b'test_data_1', ts=(0x1234 + (0x5678 / 1e6)))
- w.write_pkt(b'test_data_2', ts=(0x2345 + (0x6789 / 1e6)))
- eq_(expected_buf, f.buf)
-
- @mock.patch('sys.byteorder', 'big')
- def test_with_big_endian(self):
- self._test(os.path.join(PCAP_PACKET_DATA_DIR, 'big_endian.pcap'))
-
- @mock.patch('sys.byteorder', 'little')
- def test_with_little_endian(self):
- self._test(os.path.join(PCAP_PACKET_DATA_DIR, 'little_endian.pcap'))
-
- @staticmethod
- @mock.patch.object(pcaplib.Writer, '_write_pcap_file_hdr', mock.MagicMock)
- @mock.patch.object(pcaplib.Writer, '_write_pkt_hdr', mock.MagicMock)
- def test_with_longer_buf():
- f = DummyFile()
- snaplen = 4
- w = pcaplib.Writer(f, snaplen=snaplen)
- w.write_pkt(b'hogehoge', ts=0)
- expected_buf = b'hoge' # b'hogehoge'[:snaplen]
- eq_(expected_buf, f.buf)
- eq_(snaplen, len(f.buf))
diff --git a/tests/unit/lib/test_rpc.py b/tests/unit/lib/test_rpc.py
deleted file mode 100644
index 2df123ee..00000000
--- a/tests/unit/lib/test_rpc.py
+++ /dev/null
@@ -1,360 +0,0 @@
-# Copyright (C) 2013-2015 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013-2015 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import numbers
-import socket
-import struct
-import unittest
-
-from nose.tools import raises
-import six
-
-from ryu.lib import hub
-from ryu.lib import rpc
-
-
-class MyException(BaseException):
- pass
-
-
-class Test_rpc(unittest.TestCase):
- """ Test case for ryu.lib.rpc
- """
-
- def _handle_request(self, m):
- e = self._server_endpoint
- msgid, method, params = m
- if method == 'resp':
- e.send_response(msgid, result=params[0])
- elif method == 'err':
- e.send_response(msgid, error=params[0])
- elif method == 'callback':
- n, cb, v = params
- assert n > 0
- self._requests.add(e.send_request(cb, [msgid, n, cb, v]))
- elif method == 'notify1':
- e.send_notification(params[1], params[2])
- e.send_response(msgid, result=params[0])
- elif method == 'shutdown':
- how = getattr(socket, params[0])
- self._server_sock.shutdown(how)
- e.send_response(msgid, result=method)
- else:
- raise Exception("unknown method %s" % method)
-
- def _handle_notification(self, m):
- e = self._server_endpoint
- method, params = m
- if method == 'notify2':
- e.send_notification(params[0], params[1])
-
- def _handle_response(self, m):
- e = self._server_endpoint
- msgid, error, result = m
- assert error is None
- self._requests.remove(msgid)
- omsgid, n, cb, v = result
- assert n >= 0
- if n == 0:
- e.send_response(omsgid, result=v)
- else:
- self._requests.add(e.send_request(cb, [omsgid, n, cb, v]))
-
- def setUp(self):
- self._server_sock, self._client_sock = socket.socketpair()
- table = {
- rpc.MessageType.REQUEST: self._handle_request,
- rpc.MessageType.RESPONSE: self._handle_response,
- rpc.MessageType.NOTIFY: self._handle_notification
- }
- self._requests = set()
- self._server_sock.setblocking(0)
- self._server_endpoint = rpc.EndPoint(self._server_sock,
- disp_table=table)
- self._server_thread = hub.spawn(self._server_endpoint.serve)
-
- def tearDown(self):
- hub.kill(self._server_thread)
- hub.joinall([self._server_thread])
-
- def test_0_call_str(self):
- c = rpc.Client(self._client_sock)
- obj = 'hoge'
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, str)
-
- def test_0_call_int(self):
- c = rpc.Client(self._client_sock)
- obj = 12345
- assert isinstance(obj, int)
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, numbers.Integral)
-
- def test_0_call_int2(self):
- c = rpc.Client(self._client_sock)
- obj = six.MAXSIZE
- assert isinstance(obj, int)
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, numbers.Integral)
-
- def test_0_call_int3(self):
- c = rpc.Client(self._client_sock)
- obj = - six.MAXSIZE - 1
- assert isinstance(obj, int)
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, numbers.Integral)
-
- def test_0_call_long(self):
- c = rpc.Client(self._client_sock)
- obj = 0xffffffffffffffff # max value for msgpack
- assert isinstance(obj, numbers.Integral)
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, numbers.Integral)
-
- def test_0_call_long2(self):
- c = rpc.Client(self._client_sock)
- # Note: the python type of this value is int for 64-bit arch
- obj = -0x8000000000000000 # min value for msgpack
- assert isinstance(obj, numbers.Integral)
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, numbers.Integral)
-
- @raises(TypeError)
- def test_0_call_bytearray(self):
- c = rpc.Client(self._client_sock)
- obj = bytearray(b'foo')
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, str)
-
- def test_1_shutdown_wr(self):
- # test if the server shutdown on disconnect
- self._client_sock.shutdown(socket.SHUT_WR)
- hub.joinall([self._server_thread])
-
- @raises(EOFError)
- def test_1_client_shutdown_wr(self):
- c = rpc.Client(self._client_sock)
- c.call('shutdown', ['SHUT_WR'])
-
- def test_1_call_True(self):
- c = rpc.Client(self._client_sock)
- obj = True
- assert c.call('resp', [obj]) == obj
-
- def test_2_call_None(self):
- c = rpc.Client(self._client_sock)
- obj = None
- assert c.call('resp', [obj]) is None
-
- def test_2_call_False(self):
- c = rpc.Client(self._client_sock)
- obj = False
- assert c.call('resp', [obj]) == obj
-
- def test_2_call_dict(self):
- c = rpc.Client(self._client_sock)
- obj = {'hoge': 1, 'fuga': 2}
- assert c.call('resp', [obj]) == obj
-
- def test_2_call_empty_dict(self):
- c = rpc.Client(self._client_sock)
- obj = {}
- assert c.call('resp', [obj]) == obj
-
- def test_2_call_array(self):
- c = rpc.Client(self._client_sock)
- obj = [1, 2, 3, 4]
- assert c.call('resp', [obj]) == obj
-
- def test_2_call_empty_array(self):
- c = rpc.Client(self._client_sock)
- obj = []
- assert c.call('resp', [obj]) == obj
-
- def test_2_call_tuple(self):
- c = rpc.Client(self._client_sock)
- # Note: msgpack library implicitly convert a tuple into a list
- obj = (1, 2, 3)
- assert c.call('resp', [obj]) == list(obj)
-
- def test_2_call_unicode(self):
- c = rpc.Client(self._client_sock)
- # Note: We use encoding='utf-8' option in msgpack.Packer/Unpacker
- # in order to support Python 3.
- # With this option, utf-8 encoded bytes will be decoded into unicode
- # type in Python 2 and str type in Python 3.
- obj = u"hoge"
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, six.text_type)
-
- def test_2_call_small_binary(self):
- c = rpc.Client(self._client_sock)
- obj = struct.pack("100x")
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, six.binary_type)
-
- def test_3_call_complex(self):
- c = rpc.Client(self._client_sock)
- obj = [1, 'hoge', {'foo': 1, 3: 'bar'}]
- assert c.call('resp', [obj]) == obj
-
- @unittest.skip("doesn't work with eventlet 0.18 and later")
- def test_4_call_large_binary(self):
- c = rpc.Client(self._client_sock)
- obj = struct.pack("10000000x")
- result = c.call('resp', [obj])
- assert result == obj
- assert isinstance(result, six.binary_type)
-
- def test_0_notification1(self):
- l = []
-
- def callback(n):
- l.append(n)
- c = rpc.Client(self._client_sock, notification_callback=callback)
- obj = 'hogehoge'
- robj = 'fugafuga'
- assert c.call('notify1', [robj, 'notify_hoge', [obj]]) == robj
- c.receive_notification()
- assert len(l) == 1
- n = l.pop(0)
- assert n is not None
- method, params = n
- assert method == 'notify_hoge'
- assert params[0] == obj
-
- def test_0_notification2(self):
- l = []
-
- def callback(n):
- l.append(n)
- c = rpc.Client(self._client_sock, notification_callback=callback)
- obj = 'hogehogehoge'
- c.send_notification('notify2', ['notify_hoge', [obj]])
- c.receive_notification()
- assert len(l) == 1
- n = l.pop(0)
- assert n is not None
- method, params = n
- assert method == 'notify_hoge'
- assert params[0] == obj
-
- def test_0_call_error(self):
- c = rpc.Client(self._client_sock)
- obj = 'hoge'
- try:
- c.call('err', [obj])
- raise Exception("unexpected")
- except rpc.RPCError as e:
- assert e.get_value() == obj
-
- def test_0_call_error_notification(self):
- l = []
-
- def callback(n):
- l.append(n)
- c = rpc.Client(self._client_sock, notification_callback=callback)
- c.send_notification('notify2', ['notify_foo', []])
- hub.sleep(0.5) # give the peer a chance to run
- obj = 'hoge'
- try:
- c.call('err', [obj])
- raise Exception("unexpected")
- except rpc.RPCError as e:
- assert e.get_value() == obj
- assert len(l) == 1
- n = l.pop(0)
- method, params = n
- assert method == 'notify_foo'
- assert params == []
-
- def test_4_async_call(self):
- """send a bunch of requests and then wait for responses
- """
- num_calls = 9999
- old_blocking = self._client_sock.setblocking(0)
- try:
- e = rpc.EndPoint(self._client_sock)
- s = set()
- for i in range(1, num_calls + 1):
- s.add(e.send_request('resp', [i]))
- sum = 0
- while s:
- e.block()
- e.process()
- done = set()
- for x in s:
- r = e.get_response(x)
- if r is None:
- continue
- res, error = r
- assert error is None
- sum += res
- done.add(x)
- assert done.issubset(s)
- s -= done
- assert sum == (1 + num_calls) * num_calls / 2
- finally:
- self._client_sock.setblocking(old_blocking)
-
- def test_4_async_call2(self):
- """both sides act as rpc client and server
- """
- assert not self._requests
- num_calls = 100
- old_blocking = self._client_sock.setblocking(0)
- try:
- e = rpc.EndPoint(self._client_sock)
- s = set()
- for i in range(1, num_calls + 1):
- s.add(e.send_request('callback', [i, 'ourcallback', 0]))
- sum = 0
- while s:
- e.block()
- e.process()
- done = set()
- for x in s:
- r = e.get_response(x)
- if r is None:
- continue
- res, error = r
- assert error is None
- sum += res
- done.add(x)
- assert done.issubset(s)
- s -= done
- r = e.get_request()
- if r is not None:
- msgid, method, params = r
- assert method == 'ourcallback'
- omsgid, n, cb, v = params
- assert omsgid in s
- assert cb == 'ourcallback'
- assert n > 0
- e.send_response(msgid, result=[omsgid, n - 1, cb, v + 1])
- assert sum == (1 + num_calls) * num_calls / 2
- finally:
- self._client_sock.setblocking(old_blocking)
- assert not self._requests
diff --git a/tests/unit/lib/test_stringify.py b/tests/unit/lib/test_stringify.py
deleted file mode 100644
index 46fb21f0..00000000
--- a/tests/unit/lib/test_stringify.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (C) 2013-2015 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013-2015 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import base64
-import six
-import unittest
-from nose.tools import eq_
-
-from ryu.lib import stringify
-
-
-class C1(stringify.StringifyMixin):
- def __init__(self, a, c):
- print("init %s %s" % (a, c))
- self.a = a
- self._b = 'B'
- self.c = c
-
-
-class Test_stringify(unittest.TestCase):
- """ Test case for ryu.lib.stringify
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_jsondict(self):
- if six.PY3:
- def b64encode(s):
- return base64.b64encode(s).decode('ascii')
- else:
- b64encode = base64.b64encode
- j = {'C1': {'a': 'QUFB', 'c': 'Q0ND'}}
- eq_(j['C1']['a'], b64encode(b'AAA'))
- eq_(j['C1']['c'], b64encode(b'CCC'))
- c = C1(a=b'AAA', c=b'CCC')
- c2 = C1.from_jsondict(j['C1'])
- eq_(c.__class__, c2.__class__)
- eq_(c.__dict__, c2.__dict__)
- eq_(j, c.to_jsondict())
-
- def test_jsondict2(self):
-
- def my_encode(x):
- return x.lower()
-
- def my_decode(x):
- return x.upper()
-
- j = {'C1': {'a': 'aaa', 'c': 'ccc'}}
- eq_(j['C1']['a'], my_encode('AAA'))
- eq_(j['C1']['c'], my_encode('CCC'))
- c = C1(a='AAA', c='CCC')
- c2 = C1.from_jsondict(j['C1'], decode_string=my_decode)
- eq_(c.__class__, c2.__class__)
- eq_(c.__dict__, c2.__dict__)
- eq_(j, c.to_jsondict(encode_string=my_encode))
diff --git a/tests/unit/ofproto/__init__.py b/tests/unit/ofproto/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/ofproto/__init__.py
+++ /dev/null
diff --git a/tests/unit/ofproto/json/of10/1-1-ofp_packet_out.packet.json b/tests/unit/ofproto/json/of10/1-1-ofp_packet_out.packet.json
deleted file mode 100644
index 0dc98f49..00000000
--- a/tests/unit/ofproto/json/of10/1-1-ofp_packet_out.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "max_len": 65535,
- "port": 65532
- }
- }
- ],
- "buffer_id": 4294967295,
- "data": "8guk0D9w8gukffjqCABFAABU+BoAAP8Br4sKAAABCgAAAggAAgj3YAAAMdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "in_port": 65533
- }
-}
diff --git a/tests/unit/ofproto/json/of10/1-2-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of10/1-2-ofp_flow_mod.packet.json
deleted file mode 100644
index 4a63685e..00000000
--- a/tests/unit/ofproto/json/of10/1-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "OFPActionOutput": {
- "max_len": 65535,
- "port": 6
- }
- }
- ],
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "f2:0b:a4:7d:f8:ea",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 0,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 4194295
- }
- },
- "out_port": 65532,
- "priority": 123
- }
-}
diff --git a/tests/unit/ofproto/json/of10/1-4-ofp_packet_in.packet.json b/tests/unit/ofproto/json/of10/1-4-ofp_packet_in.packet.json
deleted file mode 100644
index 6ccd2fb8..00000000
--- a/tests/unit/ofproto/json/of10/1-4-ofp_packet_in.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 2,
- "data": "////////8gukffjqCAYAAQgABgQAAfILpH346goAAAEAAAAAAAAKAAAD",
- "in_port": 99,
- "reason": 1,
- "total_len": 42
- }
-}
diff --git a/tests/unit/ofproto/json/of10/1-5-features_request.packet.json b/tests/unit/ofproto/json/of10/1-5-features_request.packet.json
deleted file mode 100644
index 8f48ad5a..00000000
--- a/tests/unit/ofproto/json/of10/1-5-features_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPFeaturesRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of10/1-6-ofp_switch_features.packet.json b/tests/unit/ofproto/json/of10/1-6-ofp_switch_features.packet.json
deleted file mode 100644
index 208431f7..00000000
--- a/tests/unit/ofproto/json/of10/1-6-ofp_switch_features.packet.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "OFPSwitchFeatures": {
- "actions": 2115,
- "capabilities": 169,
- "datapath_id": 1095522080376,
- "n_buffers": 0,
- "n_tables": 255,
- "ports": {
- "6": {
- "OFPPhyPort": {
- "advertised": 640,
- "config": 0,
- "curr": 648,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "name": "Port6",
- "peer": 648,
- "port_no": 6,
- "state": 2,
- "supported": 648
- }
- },
- "7": {
- "OFPPhyPort": {
- "advertised": 640,
- "config": 0,
- "curr": 648,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "name": "Port7",
- "peer": 648,
- "port_no": 7,
- "state": 16,
- "supported": 648
- }
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of10/libofproto-OFP10-ofp_packet_out_packet_library.packet.json b/tests/unit/ofproto/json/of10/libofproto-OFP10-ofp_packet_out_packet_library.packet.json
deleted file mode 100644
index f8e38d71..00000000
--- a/tests/unit/ofproto/json/of10/libofproto-OFP10-ofp_packet_out_packet_library.packet.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "max_len": 65535,
- "port": 65532
- }
- }
- ],
- "buffer_id": 4294967295,
- "data": {
- "Packet": {
- "protocols": [
- {
- "ethernet": {
- "dst": "f2:0b:a4:d0:3f:70",
- "ethertype": 2048,
- "src": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "ipv4": {
- "csum": 44939,
- "dst": "10.0.0.2",
- "flags": 0,
- "header_length": 5,
- "identification": 63514,
- "offset": 0,
- "option": null,
- "proto": 1,
- "src": "10.0.0.1",
- "tos": 0,
- "total_length": 84,
- "ttl": 255,
- "version": 4
- }
- },
- {
- "icmp": {
- "code": 0,
- "csum": 520,
- "data": {
- "echo": {
- "data": "MdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "id": 63328,
- "seq": 0
- }
- },
- "type": 8
- }
- }
- ]
- }
- },
- "in_port": 65533
- }
-}
diff --git a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_mpls_ttl.packet.json b/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_mpls_ttl.packet.json
deleted file mode 100644
index a41c2b64..00000000
--- a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_mpls_ttl.packet.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "NXActionDecMplsTtl": {
- "subtype": 26,
- "vendor": 8992
- }
- }
- ],
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "00:00:00:00:00:00",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 34887,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 3678447
- }
- },
- "out_port": 65535,
- "priority": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_nw_ttl.packet.json b/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_nw_ttl.packet.json
deleted file mode 100644
index 3f6806c8..00000000
--- a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_dec_nw_ttl.packet.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "NXActionDecTtl": {
- "subtype": 18,
- "vendor": 8992
- }
- }
- ],
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "00:00:00:00:00:00",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 34887,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 3678447
- }
- },
- "out_port": 65535,
- "priority": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_pop_mpls.packet.json b/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_pop_mpls.packet.json
deleted file mode 100644
index 69c0d70b..00000000
--- a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_pop_mpls.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "NXActionPopMpls": {
- "ethertype": 2048,
- "subtype": 24,
- "vendor": 8992
- }
- }
- ],
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "00:00:00:00:00:00",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 34887,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 3678447
- }
- },
- "out_port": 65535,
- "priority": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_push_mpls.packet.json b/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_push_mpls.packet.json
deleted file mode 100644
index 9e7853cb..00000000
--- a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_push_mpls.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "NXActionPushMpls": {
- "ethertype": 34887,
- "subtype": 23,
- "vendor": 8992
- }
- }
- ],
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "00:00:00:00:00:00",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 2048,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 3678447
- }
- },
- "out_port": 65535,
- "priority": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_label.packet.json b/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_label.packet.json
deleted file mode 100644
index 4cc001b2..00000000
--- a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_label.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "NXActionSetMplsLabel": {
- "label": 10,
- "subtype": 30,
- "vendor": 8992
- }
- }
- ],
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "00:00:00:00:00:00",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 34887,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 3678447
- }
- },
- "out_port": 65535,
- "priority": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_tc.packet.json b/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_tc.packet.json
deleted file mode 100644
index 864fd7e7..00000000
--- a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_tc.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "NXActionSetMplsTc": {
- "subtype": 31,
- "tc": 10,
- "vendor": 8992
- }
- }
- ],
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "00:00:00:00:00:00",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 34887,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 3678447
- }
- },
- "out_port": 65535,
- "priority": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_ttl.packet.json b/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_ttl.packet.json
deleted file mode 100644
index da6e86f9..00000000
--- a/tests/unit/ofproto/json/of10/ovs-ofctl-of10-action_set_mpls_ttl.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPFlowMod": {
- "actions": [
- {
- "NXActionSetMplsTtl": {
- "subtype": 25,
- "ttl": 127,
- "vendor": 8992
- }
- }
- ],
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "match": {
- "OFPMatch": {
- "dl_dst": "00:00:00:00:00:00",
- "dl_src": "00:00:00:00:00:00",
- "dl_type": 34887,
- "dl_vlan": 0,
- "dl_vlan_pcp": 0,
- "in_port": 0,
- "nw_dst": "0.0.0.0",
- "nw_proto": 0,
- "nw_src": "0.0.0.0",
- "nw_tos": 0,
- "tp_dst": 0,
- "tp_src": 0,
- "wildcards": 3678447
- }
- },
- "out_port": 65535,
- "priority": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-0-ofp_desc_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-0-ofp_desc_stats_reply.packet.json
deleted file mode 100644
index 4d5181ca..00000000
--- a/tests/unit/ofproto/json/of12/3-0-ofp_desc_stats_reply.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPStatsReply": {
- "body": {
- "OFPDescStats": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
- },
- "flags": 0,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-1-ofp_packet_out.packet.json b/tests/unit/ofproto/json/of12/3-1-ofp_packet_out.packet.json
deleted file mode 100644
index efb39e2d..00000000
--- a/tests/unit/ofproto/json/of12/3-1-ofp_packet_out.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967292,
- "type": 0
- }
- }
- ],
- "actions_len": 16,
- "buffer_id": 4294967295,
- "data": "8guk0D9w8gukffjqCABFAABU+BoAAP8Br4sKAAABCgAAAggAAgj3YAAAMdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "in_port": 4294967293
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-10-ofp_hello.packet.json b/tests/unit/ofproto/json/of12/3-10-ofp_hello.packet.json
deleted file mode 100644
index ce07cebd..00000000
--- a/tests/unit/ofproto/json/of12/3-10-ofp_hello.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPHello": {}
-}
diff --git a/tests/unit/ofproto/json/of12/3-11-ofp_flow_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-11-ofp_flow_stats_request.packet.json
deleted file mode 100644
index d12cac71..00000000
--- a/tests/unit/ofproto/json/of12/3-11-ofp_flow_stats_request.packet.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "OFPFlowStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-12-ofp_flow_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-12-ofp_flow_stats_reply.packet.json
deleted file mode 100644
index 5f802b45..00000000
--- a/tests/unit/ofproto/json/of12/3-12-ofp_flow_stats_reply.packet.json
+++ /dev/null
@@ -1,161 +0,0 @@
-{
- "OFPStatsReply": {
- "body": [
- {
- "OFPFlowStats": {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115277000,
- "duration_sec": 358,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [],
- "length": 56,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "packet_count": 0,
- "priority": 65535,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115055000,
- "duration_sec": 358,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 0,
- "port": 4294967290,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "length": 88,
- "match": {
- "OFPMatch": {
- "length": 10,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 0,
- "priority": 65534,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 238,
- "cookie": 0,
- "duration_nsec": 511582000,
- "duration_sec": 316220,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 1,
- "type": 1
- }
- }
- ],
- "length": 80,
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 3,
- "priority": 123,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 98,
- "cookie": 0,
- "duration_nsec": 980901000,
- "duration_sec": 313499,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967293,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 3
- }
- }
- ],
- "length": 80,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "packet_count": 1,
- "priority": 0,
- "table_id": 0
- }
- }
- ],
- "flags": 0,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-13-ofp_echo_request.packet.json b/tests/unit/ofproto/json/of12/3-13-ofp_echo_request.packet.json
deleted file mode 100644
index e1f2af42..00000000
--- a/tests/unit/ofproto/json/of12/3-13-ofp_echo_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoRequest": {
- "data": "aG9nZQ=="
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-14-ofp_echo_reply.packet.json b/tests/unit/ofproto/json/of12/3-14-ofp_echo_reply.packet.json
deleted file mode 100644
index 2a573634..00000000
--- a/tests/unit/ofproto/json/of12/3-14-ofp_echo_reply.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoReply": {
- "data": "aG9nZQ=="
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-15-ofp_error_msg.packet.json b/tests/unit/ofproto/json/of12/3-15-ofp_error_msg.packet.json
deleted file mode 100644
index e9ab2b5e..00000000
--- a/tests/unit/ofproto/json/of12/3-15-ofp_error_msg.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPErrorMsg": {
- "code": 11,
- "data": "ZnVnYWZ1Z2E=",
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-16-ofp_experimenter.packet.json b/tests/unit/ofproto/json/of12/3-16-ofp_experimenter.packet.json
deleted file mode 100644
index 4ad13c73..00000000
--- a/tests/unit/ofproto/json/of12/3-16-ofp_experimenter.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPExperimenter": {
- "data": "bmF6bw==",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-17-ofp_barrier_request.packet.json b/tests/unit/ofproto/json/of12/3-17-ofp_barrier_request.packet.json
deleted file mode 100644
index 2aae9ec3..00000000
--- a/tests/unit/ofproto/json/of12/3-17-ofp_barrier_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of12/3-18-ofp_barrier_reply.packet.json b/tests/unit/ofproto/json/of12/3-18-ofp_barrier_reply.packet.json
deleted file mode 100644
index 11f8cfcc..00000000
--- a/tests/unit/ofproto/json/of12/3-18-ofp_barrier_reply.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierReply": {}
-}
diff --git a/tests/unit/ofproto/json/of12/3-19-ofp_role_request.packet.json b/tests/unit/ofproto/json/of12/3-19-ofp_role_request.packet.json
deleted file mode 100644
index 5cdbc2f1..00000000
--- a/tests/unit/ofproto/json/of12/3-19-ofp_role_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPRoleRequest": {
- "generation_id": 17294086455919964160,
- "role": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-2-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of12/3-2-ofp_flow_mod.packet.json
deleted file mode 100644
index 43e0e3c9..00000000
--- a/tests/unit/ofproto/json/of12/3-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 258
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- }
- ],
- "len": 40,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "01:02:03:04:05:06"
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-20-ofp_role_reply.packet.json b/tests/unit/ofproto/json/of12/3-20-ofp_role_reply.packet.json
deleted file mode 100644
index 3fd9a13f..00000000
--- a/tests/unit/ofproto/json/of12/3-20-ofp_role_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPRoleReply": {
- "generation_id": 17294086455919964160,
- "role": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-21-ofp_group_mod.packet.json b/tests/unit/ofproto/json/of12/3-21-ofp_group_mod.packet.json
deleted file mode 100644
index 1a3767da..00000000
--- a/tests/unit/ofproto/json/of12/3-21-ofp_group_mod.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPGroupMod": {
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 2,
- "type": 0
- }
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- }
- ],
- "command": 0,
- "group_id": 1,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-22-ofp_port_mod.packet.json b/tests/unit/ofproto/json/of12/3-22-ofp_port_mod.packet.json
deleted file mode 100644
index e334f5d8..00000000
--- a/tests/unit/ofproto/json/of12/3-22-ofp_port_mod.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPPortMod": {
- "advertise": 4096,
- "config": 0,
- "hw_addr": "00-11-00-00-11-11",
- "mask": 0,
- "port_no": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-23-ofp_table_mod.packet.json b/tests/unit/ofproto/json/of12/3-23-ofp_table_mod.packet.json
deleted file mode 100644
index 5019c29b..00000000
--- a/tests/unit/ofproto/json/of12/3-23-ofp_table_mod.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableMod": {
- "config": 0,
- "table_id": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-24-ofp_desc_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-24-ofp_desc_stats_request.packet.json
deleted file mode 100644
index 6129d409..00000000
--- a/tests/unit/ofproto/json/of12/3-24-ofp_desc_stats_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPDescStatsRequest": {
- "flags": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-25-ofp_aggregate_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-25-ofp_aggregate_stats_request.packet.json
deleted file mode 100644
index cc3d76fd..00000000
--- a/tests/unit/ofproto/json/of12/3-25-ofp_aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "OFPAggregateStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-26-ofp_aggregate_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-26-ofp_aggregate_stats_reply.packet.json
deleted file mode 100644
index ed1473aa..00000000
--- a/tests/unit/ofproto/json/of12/3-26-ofp_aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "OFPStatsReply": {
- "body": {
- "OFPAggregateStatsReply": {
- "byte_count": 574,
- "flow_count": 6,
- "packet_count": 7
- }
- },
- "flags": 0,
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-27-ofp_table_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-27-ofp_table_stats_request.packet.json
deleted file mode 100644
index 03adedd1..00000000
--- a/tests/unit/ofproto/json/of12/3-27-ofp_table_stats_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPTableStatsRequest": {
- "flags": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-28-ofp_table_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-28-ofp_table_stats_reply.packet.json
deleted file mode 100644
index 7480fde4..00000000
--- a/tests/unit/ofproto/json/of12/3-28-ofp_table_stats_reply.packet.json
+++ /dev/null
@@ -1,5108 +0,0 @@
-{
- "OFPStatsReply": {
- "body": [
- {
- "OFPTableStats": {
- "active_count": 4,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 4,
- "match": 68719476733,
- "matched_count": 4,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "\u79c1\u306e\u30c6\u30fc\u30d6\u30eb",
- "table_id": 0,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 2,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 3,
- "match": 68719476733,
- "matched_count": 3,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x01",
- "table_id": 1,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x02",
- "table_id": 2,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x03",
- "table_id": 3,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x04",
- "table_id": 4,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x05",
- "table_id": 5,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x06",
- "table_id": 6,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x07",
- "table_id": 7,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x08",
- "table_id": 8,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x09",
- "table_id": 9,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x0a",
- "table_id": 10,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x0b",
- "table_id": 11,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x0c",
- "table_id": 12,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x0d",
- "table_id": 13,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x0e",
- "table_id": 14,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x0f",
- "table_id": 15,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x10",
- "table_id": 16,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x11",
- "table_id": 17,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x12",
- "table_id": 18,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x13",
- "table_id": 19,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x14",
- "table_id": 20,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x15",
- "table_id": 21,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x16",
- "table_id": 22,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x17",
- "table_id": 23,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x18",
- "table_id": 24,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x19",
- "table_id": 25,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x1a",
- "table_id": 26,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x1b",
- "table_id": 27,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x1c",
- "table_id": 28,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x1d",
- "table_id": 29,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x1e",
- "table_id": 30,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x1f",
- "table_id": 31,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x20",
- "table_id": 32,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x21",
- "table_id": 33,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x22",
- "table_id": 34,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x23",
- "table_id": 35,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x24",
- "table_id": 36,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x25",
- "table_id": 37,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x26",
- "table_id": 38,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x27",
- "table_id": 39,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x28",
- "table_id": 40,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x29",
- "table_id": 41,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x2a",
- "table_id": 42,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x2b",
- "table_id": 43,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x2c",
- "table_id": 44,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x2d",
- "table_id": 45,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x2e",
- "table_id": 46,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x2f",
- "table_id": 47,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x30",
- "table_id": 48,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x31",
- "table_id": 49,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x32",
- "table_id": 50,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x33",
- "table_id": 51,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x34",
- "table_id": 52,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x35",
- "table_id": 53,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x36",
- "table_id": 54,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x37",
- "table_id": 55,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x38",
- "table_id": 56,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x39",
- "table_id": 57,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x3a",
- "table_id": 58,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x3b",
- "table_id": 59,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x3c",
- "table_id": 60,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x3d",
- "table_id": 61,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x3e",
- "table_id": 62,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x3f",
- "table_id": 63,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x40",
- "table_id": 64,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x41",
- "table_id": 65,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x42",
- "table_id": 66,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x43",
- "table_id": 67,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x44",
- "table_id": 68,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x45",
- "table_id": 69,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x46",
- "table_id": 70,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x47",
- "table_id": 71,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x48",
- "table_id": 72,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x49",
- "table_id": 73,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x4a",
- "table_id": 74,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x4b",
- "table_id": 75,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x4c",
- "table_id": 76,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x4d",
- "table_id": 77,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x4e",
- "table_id": 78,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x4f",
- "table_id": 79,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x50",
- "table_id": 80,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x51",
- "table_id": 81,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x52",
- "table_id": 82,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x53",
- "table_id": 83,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x54",
- "table_id": 84,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x55",
- "table_id": 85,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x56",
- "table_id": 86,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x57",
- "table_id": 87,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x58",
- "table_id": 88,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x59",
- "table_id": 89,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x5a",
- "table_id": 90,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x5b",
- "table_id": 91,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x5c",
- "table_id": 92,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x5d",
- "table_id": 93,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x5e",
- "table_id": 94,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x5f",
- "table_id": 95,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x60",
- "table_id": 96,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x61",
- "table_id": 97,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x62",
- "table_id": 98,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x63",
- "table_id": 99,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x64",
- "table_id": 100,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x65",
- "table_id": 101,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x66",
- "table_id": 102,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x67",
- "table_id": 103,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x68",
- "table_id": 104,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x69",
- "table_id": 105,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x6a",
- "table_id": 106,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x6b",
- "table_id": 107,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x6c",
- "table_id": 108,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x6d",
- "table_id": 109,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x6e",
- "table_id": 110,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x6f",
- "table_id": 111,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x70",
- "table_id": 112,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x71",
- "table_id": 113,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x72",
- "table_id": 114,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x73",
- "table_id": 115,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x74",
- "table_id": 116,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x75",
- "table_id": 117,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x76",
- "table_id": 118,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x77",
- "table_id": 119,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x78",
- "table_id": 120,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x79",
- "table_id": 121,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x7a",
- "table_id": 122,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x7b",
- "table_id": 123,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x7c",
- "table_id": 124,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x7d",
- "table_id": 125,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x7e",
- "table_id": 126,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x7f",
- "table_id": 127,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x80",
- "table_id": 128,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x81",
- "table_id": 129,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x82",
- "table_id": 130,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x83",
- "table_id": 131,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x84",
- "table_id": 132,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x85",
- "table_id": 133,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x86",
- "table_id": 134,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x87",
- "table_id": 135,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x88",
- "table_id": 136,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x89",
- "table_id": 137,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x8a",
- "table_id": 138,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x8b",
- "table_id": 139,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x8c",
- "table_id": 140,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x8d",
- "table_id": 141,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x8e",
- "table_id": 142,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x8f",
- "table_id": 143,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x90",
- "table_id": 144,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x91",
- "table_id": 145,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x92",
- "table_id": 146,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x93",
- "table_id": 147,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x94",
- "table_id": 148,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x95",
- "table_id": 149,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x96",
- "table_id": 150,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x97",
- "table_id": 151,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x98",
- "table_id": 152,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x99",
- "table_id": 153,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x9a",
- "table_id": 154,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x9b",
- "table_id": 155,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x9c",
- "table_id": 156,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x9d",
- "table_id": 157,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x9e",
- "table_id": 158,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x9f",
- "table_id": 159,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa0",
- "table_id": 160,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa1",
- "table_id": 161,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa2",
- "table_id": 162,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa3",
- "table_id": 163,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa4",
- "table_id": 164,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa5",
- "table_id": 165,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa6",
- "table_id": 166,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa7",
- "table_id": 167,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa8",
- "table_id": 168,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xa9",
- "table_id": 169,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xaa",
- "table_id": 170,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xab",
- "table_id": 171,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xac",
- "table_id": 172,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xad",
- "table_id": 173,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xae",
- "table_id": 174,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xaf",
- "table_id": 175,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb0",
- "table_id": 176,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb1",
- "table_id": 177,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb2",
- "table_id": 178,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb3",
- "table_id": 179,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb4",
- "table_id": 180,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb5",
- "table_id": 181,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb6",
- "table_id": 182,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb7",
- "table_id": 183,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb8",
- "table_id": 184,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xb9",
- "table_id": 185,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xba",
- "table_id": 186,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xbb",
- "table_id": 187,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xbc",
- "table_id": 188,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xbd",
- "table_id": 189,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xbe",
- "table_id": 190,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xbf",
- "table_id": 191,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc0",
- "table_id": 192,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc1",
- "table_id": 193,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc2",
- "table_id": 194,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc3",
- "table_id": 195,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc4",
- "table_id": 196,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc5",
- "table_id": 197,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc6",
- "table_id": 198,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc7",
- "table_id": 199,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc8",
- "table_id": 200,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xc9",
- "table_id": 201,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xca",
- "table_id": 202,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xcb",
- "table_id": 203,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xcc",
- "table_id": 204,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xcd",
- "table_id": 205,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xce",
- "table_id": 206,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xcf",
- "table_id": 207,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd0",
- "table_id": 208,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd1",
- "table_id": 209,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd2",
- "table_id": 210,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd3",
- "table_id": 211,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd4",
- "table_id": 212,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd5",
- "table_id": 213,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd6",
- "table_id": 214,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd7",
- "table_id": 215,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd8",
- "table_id": 216,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xd9",
- "table_id": 217,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xda",
- "table_id": 218,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xdb",
- "table_id": 219,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xdc",
- "table_id": 220,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xdd",
- "table_id": 221,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xde",
- "table_id": 222,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xdf",
- "table_id": 223,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe0",
- "table_id": 224,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe1",
- "table_id": 225,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe2",
- "table_id": 226,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe3",
- "table_id": 227,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe4",
- "table_id": 228,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe5",
- "table_id": 229,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe6",
- "table_id": 230,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe7",
- "table_id": 231,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe8",
- "table_id": 232,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xe9",
- "table_id": 233,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xea",
- "table_id": 234,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xeb",
- "table_id": 235,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xec",
- "table_id": 236,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xed",
- "table_id": 237,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xee",
- "table_id": 238,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xef",
- "table_id": 239,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf0",
- "table_id": 240,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf1",
- "table_id": 241,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf2",
- "table_id": 242,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf3",
- "table_id": 243,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf4",
- "table_id": 244,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf5",
- "table_id": 245,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf6",
- "table_id": 246,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf7",
- "table_id": 247,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf8",
- "table_id": 248,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xf9",
- "table_id": 249,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xfa",
- "table_id": 250,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xfb",
- "table_id": 251,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xfc",
- "table_id": 252,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xfd",
- "table_id": 253,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 0,
- "apply_actions": 67082241,
- "apply_setfields": 0,
- "config": 0,
- "instructions": 62,
- "lookup_count": 0,
- "match": 68719476733,
- "matched_count": 0,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0xfe",
- "table_id": 254,
- "wildcards": 68719476733,
- "write_actions": 67082241,
- "write_setfields": 0
- }
- }
- ],
- "flags": 0,
- "type": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-29-ofp_port_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-29-ofp_port_stats_request.packet.json
deleted file mode 100644
index 9a94ed8b..00000000
--- a/tests/unit/ofproto/json/of12/3-29-ofp_port_stats_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPPortStatsRequest": {
- "flags": 0,
- "port_no": 4294967295
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-3-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of12/3-3-ofp_flow_mod.packet.json
deleted file mode 100644
index cd68b51f..00000000
--- a/tests/unit/ofproto/json/of12/3-3-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 1,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-30-ofp_port_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-30-ofp_port_stats_reply.packet.json
deleted file mode 100644
index 9afd8cd4..00000000
--- a/tests/unit/ofproto/json/of12/3-30-ofp_port_stats_reply.packet.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "OFPStatsReply": {
- "body": [
- {
- "OFPPortStats": {
- "collisions": 0,
- "port_no": 7,
- "rx_bytes": 0,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- },
- {
- "OFPPortStats": {
- "collisions": 0,
- "port_no": 6,
- "rx_bytes": 336,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- }
- ],
- "flags": 0,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-31-ofp_group_features_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-31-ofp_group_features_stats_request.packet.json
deleted file mode 100644
index 03974d3e..00000000
--- a/tests/unit/ofproto/json/of12/3-31-ofp_group_features_stats_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPGroupFeaturesStatsRequest": {
- "flags": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-32-ofp_group_features_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-32-ofp_group_features_stats_reply.packet.json
deleted file mode 100644
index 7e867868..00000000
--- a/tests/unit/ofproto/json/of12/3-32-ofp_group_features_stats_reply.packet.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "OFPStatsReply": {
- "body": {
- "OFPGroupFeaturesStats": {
- "actions": [
- 67082241,
- 67082241,
- 67082241,
- 67082241
- ],
- "capabilities": 5,
- "length": 40,
- "max_groups": [
- 16777216,
- 16777216,
- 16777216,
- 16777216
- ],
- "types": 15
- }
- },
- "flags": 0,
- "type": 8
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-33-ofp_group_desc_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-33-ofp_group_desc_stats_request.packet.json
deleted file mode 100644
index e62fe9a0..00000000
--- a/tests/unit/ofproto/json/of12/3-33-ofp_group_desc_stats_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPGroupDescStatsRequest": {
- "flags": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-34-ofp_group_desc_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-34-ofp_group_desc_stats_reply.packet.json
deleted file mode 100644
index 5166d1ce..00000000
--- a/tests/unit/ofproto/json/of12/3-34-ofp_group_desc_stats_reply.packet.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "OFPStatsReply": {
- "body": [
- {
- "OFPGroupDescStats": {
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 2,
- "type": 0
- }
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- }
- ],
- "group_id": 1,
- "length": 40,
- "type": 0
- }
- }
- ],
- "flags": 0,
- "type": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-35-ofp_queue_get_config_request.packet.json b/tests/unit/ofproto/json/of12/3-35-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index a50308c0..00000000
--- a/tests/unit/ofproto/json/of12/3-35-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPQueueGetConfigRequest": {
- "port": 4294967295
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-36-ofp_queue_get_config_reply.packet.json b/tests/unit/ofproto/json/of12/3-36-ofp_queue_get_config_reply.packet.json
deleted file mode 100644
index 7d0a7bbe..00000000
--- a/tests/unit/ofproto/json/of12/3-36-ofp_queue_get_config_reply.packet.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "OFPQueueGetConfigReply": {
- "port": 4294967295,
- "queues": [
- {
- "OFPPacketQueue": {
- "len": 48,
- "port": 77,
- "properties": [
- {
- "OFPQueuePropMinRate": {
- "len": 16,
- "property": 1,
- "rate": 10
- }
- },
- {
- "OFPQueuePropMaxRate": {
- "len": 16,
- "property": 2,
- "rate": 900
- }
- }
- ],
- "queue_id": 99
- }
- },
- {
- "OFPPacketQueue": {
- "len": 48,
- "port": 77,
- "properties": [
- {
- "OFPQueuePropMinRate": {
- "len": 16,
- "property": 1,
- "rate": 100
- }
- },
- {
- "OFPQueuePropMaxRate": {
- "len": 16,
- "property": 2,
- "rate": 200
- }
- }
- ],
- "queue_id": 88
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-37-ofp_queue_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-37-ofp_queue_stats_request.packet.json
deleted file mode 100644
index 5c7479d3..00000000
--- a/tests/unit/ofproto/json/of12/3-37-ofp_queue_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "queue_id": 4294967295
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-38-ofp_queue_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-38-ofp_queue_stats_reply.packet.json
deleted file mode 100644
index fb21c96a..00000000
--- a/tests/unit/ofproto/json/of12/3-38-ofp_queue_stats_reply.packet.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "OFPStatsReply": {
- "body": [
- {
- "OFPQueueStats": {
- "port_no": 7,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "port_no": 6,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "port_no": 7,
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- }
- ],
- "flags": 0,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-39-ofp_port_status.packet.json b/tests/unit/ofproto/json/of12/3-39-ofp_port_status.packet.json
deleted file mode 100644
index a842932e..00000000
--- a/tests/unit/ofproto/json/of12/3-39-ofp_port_status.packet.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "OFPPortStatus": {
- "desc": {
- "OFPPort": {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "max_speed": 5000,
- "name": "\u79c1\u306e\u30dd\u30fc\u30c8",
- "peer": 10248,
- "port_no": 7,
- "state": 4,
- "supported": 10248
- }
- },
- "reason": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-4-ofp_packet_in.packet.json b/tests/unit/ofproto/json/of12/3-4-ofp_packet_in.packet.json
deleted file mode 100644
index b211934e..00000000
--- a/tests/unit/ofproto/json/of12/3-4-ofp_packet_in.packet.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 2,
- "data": "////////8gukffjqCAYAAQgABgQAAfILpH346goAAAEAAAAAAAAKAAAD",
- "match": {
- "OFPMatch": {
- "length": 80,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 1,
- "table_id": 1,
- "total_len": 42
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-40-ofp_flow_removed.packet.json b/tests/unit/ofproto/json/of12/3-40-ofp_flow_removed.packet.json
deleted file mode 100644
index 994953e6..00000000
--- a/tests/unit/ofproto/json/of12/3-40-ofp_flow_removed.packet.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "OFPFlowRemoved": {
- "byte_count": 86,
- "cookie": 0,
- "duration_nsec": 48825000,
- "duration_sec": 3,
- "hard_timeout": 0,
- "idle_timeout": 3,
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 1,
- "priority": 65535,
- "reason": 0,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-41-ofp_error_msg_experimenter.packet.json b/tests/unit/ofproto/json/of12/3-41-ofp_error_msg_experimenter.packet.json
deleted file mode 100644
index 37bfb6a9..00000000
--- a/tests/unit/ofproto/json/of12/3-41-ofp_error_msg_experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPErrorExperimenterMsg": {
- "data": "amlra2VuIGRhdGE=",
- "exp_type": 60000,
- "experimenter": 999999,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-5-ofp_features_request.packet.json b/tests/unit/ofproto/json/of12/3-5-ofp_features_request.packet.json
deleted file mode 100644
index 8f48ad5a..00000000
--- a/tests/unit/ofproto/json/of12/3-5-ofp_features_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPFeaturesRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of12/3-59-ofp_packet_in.packet.json b/tests/unit/ofproto/json/of12/3-59-ofp_packet_in.packet.json
deleted file mode 100644
index 5b365a22..00000000
--- a/tests/unit/ofproto/json/of12/3-59-ofp_packet_in.packet.json
+++ /dev/null
@@ -1,262 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 4026531840,
- "data": "",
- "match": {
- "OFPMatch": {
- "length": 294,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 84281096
- }
- },
- {
- "OXMTlv": {
- "field": "in_phy_port",
- "mask": null,
- "value": 16909060
- }
- },
- {
- "OXMTlv": {
- "field": "metadata",
- "mask": null,
- "value": 283686952306183
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 999
- }
- },
- {
- "OXMTlv": {
- "field": "ip_dscp",
- "mask": null,
- "value": 9
- }
- },
- {
- "OXMTlv": {
- "field": "ip_ecn",
- "mask": null,
- "value": 3
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 99
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_src",
- "mask": null,
- "value": 8080
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_dst",
- "mask": null,
- "value": 18080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_src",
- "mask": null,
- "value": 28080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_dst",
- "mask": null,
- "value": 55936
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_src",
- "mask": null,
- "value": 48080
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_dst",
- "mask": null,
- "value": 59328
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_type",
- "mask": null,
- "value": 100
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_code",
- "mask": null,
- "value": 101
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_src",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe48:28a5"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_dst",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe05:b7dc"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_flabel",
- "mask": null,
- "value": 541473
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_type",
- "mask": null,
- "value": 200
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_code",
- "mask": null,
- "value": 201
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_target",
- "mask": null,
- "value": "fe80::a60:6eff:fe7f:74e7"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_sll",
- "mask": null,
- "value": "00:00:00:00:02:9a"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_tll",
- "mask": null,
- "value": "00:00:00:00:02:2b"
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_label",
- "mask": null,
- "value": 624485
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_tc",
- "mask": null,
- "value": 5
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 0,
- "table_id": 200,
- "total_len": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-6-ofp_features_reply.packet.json b/tests/unit/ofproto/json/of12/3-6-ofp_features_reply.packet.json
deleted file mode 100644
index 7b9233ac..00000000
--- a/tests/unit/ofproto/json/of12/3-6-ofp_features_reply.packet.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "OFPSwitchFeatures": {
- "capabilities": 79,
- "datapath_id": 9210263729383,
- "n_buffers": 0,
- "n_tables": 255,
- "ports": {
- "6": {
- "OFPPort": {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "max_speed": 5000,
- "name": "Port6",
- "peer": 10248,
- "port_no": 6,
- "state": 4,
- "supported": 10248
- }
- },
- "7": {
- "OFPPort": {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "max_speed": 5000,
- "name": "Port7",
- "peer": 10248,
- "port_no": 7,
- "state": 4,
- "supported": 10248
- }
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-60-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of12/3-60-ofp_flow_mod.packet.json
deleted file mode 100644
index f5de7cef..00000000
--- a/tests/unit/ofproto/json/of12/3-60-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,269 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [],
- "match": {
- "OFPMatch": {
- "length": 294,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 84281096
- }
- },
- {
- "OXMTlv": {
- "field": "in_phy_port",
- "mask": null,
- "value": 16909060
- }
- },
- {
- "OXMTlv": {
- "field": "metadata",
- "mask": null,
- "value": 283686952306183
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 999
- }
- },
- {
- "OXMTlv": {
- "field": "ip_dscp",
- "mask": null,
- "value": 9
- }
- },
- {
- "OXMTlv": {
- "field": "ip_ecn",
- "mask": null,
- "value": 3
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 99
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_src",
- "mask": null,
- "value": 8080
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_dst",
- "mask": null,
- "value": 18080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_src",
- "mask": null,
- "value": 28080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_dst",
- "mask": null,
- "value": 55936
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_src",
- "mask": null,
- "value": 48080
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_dst",
- "mask": null,
- "value": 59328
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_type",
- "mask": null,
- "value": 100
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_code",
- "mask": null,
- "value": 101
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_src",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe48:28a5"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_dst",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe05:b7dc"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_flabel",
- "mask": null,
- "value": 541473
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_type",
- "mask": null,
- "value": 200
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_code",
- "mask": null,
- "value": 201
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_target",
- "mask": null,
- "value": "fe80::a60:6eff:fe7f:74e7"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_sll",
- "mask": null,
- "value": "00:00:00:00:02:9a"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_tll",
- "mask": null,
- "value": "00:00:00:00:02:2b"
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_label",
- "mask": null,
- "value": 624485
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_tc",
- "mask": null,
- "value": 5
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-61-ofp_group_stats_request.packet.json b/tests/unit/ofproto/json/of12/3-61-ofp_group_stats_request.packet.json
deleted file mode 100644
index 2d1afdc0..00000000
--- a/tests/unit/ofproto/json/of12/3-61-ofp_group_stats_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGroupStatsRequest": {
- "flags": 0,
- "group_id": 4294967292
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-62-ofp_group_stats_reply.packet.json b/tests/unit/ofproto/json/of12/3-62-ofp_group_stats_reply.packet.json
deleted file mode 100644
index 8cb8f8ce..00000000
--- a/tests/unit/ofproto/json/of12/3-62-ofp_group_stats_reply.packet.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "OFPStatsReply": {
- "body": [
- {
- "OFPGroupStats": {
- "bucket_counters": [
- {
- "OFPBucketCounter": {
- "byte_count": 2345,
- "packet_count": 234
- }
- }
- ],
- "byte_count": 12345,
- "group_id": 1,
- "length": 48,
- "packet_count": 123,
- "ref_count": 2
- }
- }
- ],
- "flags": 0,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-7-ofp_set_config.packet.json b/tests/unit/ofproto/json/of12/3-7-ofp_set_config.packet.json
deleted file mode 100644
index cd5398b7..00000000
--- a/tests/unit/ofproto/json/of12/3-7-ofp_set_config.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPSetConfig": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of12/3-8-ofp_get_config_request.packet.json b/tests/unit/ofproto/json/of12/3-8-ofp_get_config_request.packet.json
deleted file mode 100644
index 06fe51f4..00000000
--- a/tests/unit/ofproto/json/of12/3-8-ofp_get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPGetConfigRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of12/3-9-ofp_get_config_reply.packet.json b/tests/unit/ofproto/json/of12/3-9-ofp_get_config_reply.packet.json
deleted file mode 100644
index 62b37b4d..00000000
--- a/tests/unit/ofproto/json/of12/3-9-ofp_get_config_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGetConfigReply": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_group_stats_request.packet.json b/tests/unit/ofproto/json/of12/lib-ofctl-ofp_group_stats_request.packet.json
deleted file mode 100644
index 542ae726..00000000
--- a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_group_stats_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGroupStatsRequest": {
- "flags": 0,
- "group_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_port_stats_request.packet.json b/tests/unit/ofproto/json/of12/lib-ofctl-ofp_port_stats_request.packet.json
deleted file mode 100644
index 884c5fd2..00000000
--- a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_port_stats_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPPortStatsRequest": {
- "flags": 0,
- "port_no": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json b/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index a50308c0..00000000
--- a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPQueueGetConfigRequest": {
- "port": 4294967295
- }
-}
diff --git a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json b/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json
deleted file mode 100644
index 77535806..00000000
--- a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet1.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 7,
- "queue_id": 4294967295
- }
-}
diff --git a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json b/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json
deleted file mode 100644
index 66127d31..00000000
--- a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet2.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 7,
- "queue_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json b/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json
deleted file mode 100644
index 1a798837..00000000
--- a/tests/unit/ofproto/json/of12/lib-ofctl-ofp_queue_stats_request.packet3.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "queue_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of12/libofproto-OFP12-ofp_packet_out_packet_library.packet.json b/tests/unit/ofproto/json/of12/libofproto-OFP12-ofp_packet_out_packet_library.packet.json
deleted file mode 100644
index b859650d..00000000
--- a/tests/unit/ofproto/json/of12/libofproto-OFP12-ofp_packet_out_packet_library.packet.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967292,
- "type": 0
- }
- }
- ],
- "actions_len": 16,
- "buffer_id": 4294967295,
- "data": {
- "Packet": {
- "protocols": [
- {
- "ethernet": {
- "dst": "f2:0b:a4:d0:3f:70",
- "ethertype": 2048,
- "src": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "ipv4": {
- "csum": 44939,
- "dst": "10.0.0.2",
- "flags": 0,
- "header_length": 5,
- "identification": 63514,
- "offset": 0,
- "option": null,
- "proto": 1,
- "src": "10.0.0.1",
- "tos": 0,
- "total_length": 84,
- "ttl": 255,
- "version": 4
- }
- },
- {
- "icmp": {
- "code": 0,
- "csum": 520,
- "data": {
- "echo": {
- "data": "MdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "id": 63328,
- "seq": 0
- }
- },
- "type": 8
- }
- }
- ]
- }
- },
- "in_port": 4294967293
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-0-ofp_desc_reply.packet.json b/tests/unit/ofproto/json/of13/4-0-ofp_desc_reply.packet.json
deleted file mode 100644
index 26e5dc2d..00000000
--- a/tests/unit/ofproto/json/of13/4-0-ofp_desc_reply.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPDescStatsReply": {
- "body": {
- "OFPDescStats": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
- },
- "flags": 0,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-1-ofp_packet_out.packet.json b/tests/unit/ofproto/json/of13/4-1-ofp_packet_out.packet.json
deleted file mode 100644
index efb39e2d..00000000
--- a/tests/unit/ofproto/json/of13/4-1-ofp_packet_out.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967292,
- "type": 0
- }
- }
- ],
- "actions_len": 16,
- "buffer_id": 4294967295,
- "data": "8guk0D9w8gukffjqCABFAABU+BoAAP8Br4sKAAABCgAAAggAAgj3YAAAMdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "in_port": 4294967293
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-10-ofp_hello.packet.json b/tests/unit/ofproto/json/of13/4-10-ofp_hello.packet.json
deleted file mode 100644
index d03ff84b..00000000
--- a/tests/unit/ofproto/json/of13/4-10-ofp_hello.packet.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "OFPHello": {
- "elements": [
- {
- "OFPHelloElemVersionBitmap": {
- "length": 8,
- "type": 1,
- "versions": [
- 1,
- 2,
- 3,
- 9,
- 10,
- 30
- ]
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-11-ofp_flow_stats_request.packet.json b/tests/unit/ofproto/json/of13/4-11-ofp_flow_stats_request.packet.json
deleted file mode 100644
index 2baccad4..00000000
--- a/tests/unit/ofproto/json/of13/4-11-ofp_flow_stats_request.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPFlowStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-12-ofp_flow_stats_reply.packet.json b/tests/unit/ofproto/json/of13/4-12-ofp_flow_stats_reply.packet.json
deleted file mode 100644
index 04339dc3..00000000
--- a/tests/unit/ofproto/json/of13/4-12-ofp_flow_stats_reply.packet.json
+++ /dev/null
@@ -1,343 +0,0 @@
-{
- "OFPFlowStatsReply": {
- "body": [
- {
- "OFPFlowStats": {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115277000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [],
- "length": 56,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "packet_count": 0,
- "priority": 65535,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115055000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 0,
- "port": 4294967290,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "length": 88,
- "match": {
- "OFPMatch": {
- "length": 10,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 0,
- "priority": 65534,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 238,
- "cookie": 0,
- "duration_nsec": 511582000,
- "duration_sec": 316220,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 1,
- "type": 1
- }
- }
- ],
- "length": 80,
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 3,
- "priority": 123,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 98,
- "cookie": 0,
- "duration_nsec": 980901000,
- "duration_sec": 313499,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 258
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionCopyTtlOut": {
- "len": 8,
- "type": 11
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionPopPbb": {
- "len": 8,
- "type": 27
- }
- },
- {
- "OFPActionPushPbb": {
- "ethertype": 4660,
- "len": 8,
- "type": 26
- }
- },
- {
- "OFPActionPopMpls": {
- "ethertype": 39030,
- "len": 8,
- "type": 20
- }
- },
- {
- "OFPActionPushMpls": {
- "ethertype": 34887,
- "len": 8,
- "type": 19
- }
- },
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionPushVlan": {
- "ethertype": 33024,
- "len": 8,
- "type": 17
- }
- },
- {
- "OFPActionDecMplsTtl": {
- "len": 8,
- "type": 16
- }
- },
- {
- "OFPActionSetMplsTtl": {
- "len": 8,
- "mpls_ttl": 10,
- "type": 15
- }
- },
- {
- "OFPActionDecNwTtl": {
- "len": 8,
- "type": 24
- }
- },
- {
- "OFPActionSetNwTtl": {
- "len": 8,
- "nw_ttl": 10,
- "type": 23
- }
- },
- {
- "OFPActionSetQueue": {
- "len": 8,
- "queue_id": 3,
- "type": 21
- }
- },
- {
- "OFPActionGroup": {
- "group_id": 99,
- "len": 8,
- "type": 22
- }
- },
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- },
- {
- "OFPActionExperimenterUnknown": {
- "len": 16,
- "data": "ZXhwX2RhdGE=",
- "experimenter": 98765432,
- "type": 65535
- }
- },
- {
- "NXActionUnknown": {
- "len": 16,
- "data": "cF9kYXRh",
- "experimenter": 8992,
- "type": 65535,
- "subtype": 25976
- }
- }
- ],
- "len": 192,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "01:02:03:04:05:06"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 40,
- "type": 4
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967293,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 3
- }
- }
- ],
- "length": 312,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "packet_count": 1,
- "priority": 0,
- "table_id": 0
- }
- }
- ],
- "flags": 0,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-13-ofp_echo_request.packet.json b/tests/unit/ofproto/json/of13/4-13-ofp_echo_request.packet.json
deleted file mode 100644
index e1f2af42..00000000
--- a/tests/unit/ofproto/json/of13/4-13-ofp_echo_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoRequest": {
- "data": "aG9nZQ=="
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-14-ofp_echo_reply.packet.json b/tests/unit/ofproto/json/of13/4-14-ofp_echo_reply.packet.json
deleted file mode 100644
index 2a573634..00000000
--- a/tests/unit/ofproto/json/of13/4-14-ofp_echo_reply.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoReply": {
- "data": "aG9nZQ=="
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-15-ofp_error_msg.packet.json b/tests/unit/ofproto/json/of13/4-15-ofp_error_msg.packet.json
deleted file mode 100644
index e9ab2b5e..00000000
--- a/tests/unit/ofproto/json/of13/4-15-ofp_error_msg.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPErrorMsg": {
- "code": 11,
- "data": "ZnVnYWZ1Z2E=",
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-16-ofp_experimenter.packet.json b/tests/unit/ofproto/json/of13/4-16-ofp_experimenter.packet.json
deleted file mode 100644
index 4ad13c73..00000000
--- a/tests/unit/ofproto/json/of13/4-16-ofp_experimenter.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPExperimenter": {
- "data": "bmF6bw==",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-17-ofp_barrier_request.packet.json b/tests/unit/ofproto/json/of13/4-17-ofp_barrier_request.packet.json
deleted file mode 100644
index 2aae9ec3..00000000
--- a/tests/unit/ofproto/json/of13/4-17-ofp_barrier_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of13/4-18-ofp_barrier_reply.packet.json b/tests/unit/ofproto/json/of13/4-18-ofp_barrier_reply.packet.json
deleted file mode 100644
index 11f8cfcc..00000000
--- a/tests/unit/ofproto/json/of13/4-18-ofp_barrier_reply.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierReply": {}
-}
diff --git a/tests/unit/ofproto/json/of13/4-19-ofp_role_request.packet.json b/tests/unit/ofproto/json/of13/4-19-ofp_role_request.packet.json
deleted file mode 100644
index 5cdbc2f1..00000000
--- a/tests/unit/ofproto/json/of13/4-19-ofp_role_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPRoleRequest": {
- "generation_id": 17294086455919964160,
- "role": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-2-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of13/4-2-ofp_flow_mod.packet.json
deleted file mode 100644
index 0e3a2cc3..00000000
--- a/tests/unit/ofproto/json/of13/4-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,201 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 258
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionCopyTtlOut": {
- "len": 8,
- "type": 11
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionPopPbb": {
- "len": 8,
- "type": 27
- }
- },
- {
- "OFPActionPushPbb": {
- "ethertype": 4660,
- "len": 8,
- "type": 26
- }
- },
- {
- "OFPActionPopMpls": {
- "ethertype": 39030,
- "len": 8,
- "type": 20
- }
- },
- {
- "OFPActionPushMpls": {
- "ethertype": 34887,
- "len": 8,
- "type": 19
- }
- },
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionPushVlan": {
- "ethertype": 33024,
- "len": 8,
- "type": 17
- }
- },
- {
- "OFPActionDecMplsTtl": {
- "len": 8,
- "type": 16
- }
- },
- {
- "OFPActionSetMplsTtl": {
- "len": 8,
- "mpls_ttl": 10,
- "type": 15
- }
- },
- {
- "OFPActionDecNwTtl": {
- "len": 8,
- "type": 24
- }
- },
- {
- "OFPActionSetNwTtl": {
- "len": 8,
- "nw_ttl": 10,
- "type": 23
- }
- },
- {
- "OFPActionExperimenterUnknown": {
- "data": "AAECAwQFBgc=",
- "experimenter": 101,
- "len": 16,
- "type": 65535
- }
- },
- {
- "OFPActionSetQueue": {
- "len": 8,
- "queue_id": 3,
- "type": 21
- }
- },
- {
- "OFPActionGroup": {
- "group_id": 99,
- "len": 8,
- "type": 22
- }
- },
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- }
- ],
- "len": 176,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "01:02:03:04:05:06"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 40,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-20-ofp_role_reply.packet.json b/tests/unit/ofproto/json/of13/4-20-ofp_role_reply.packet.json
deleted file mode 100644
index 3fd9a13f..00000000
--- a/tests/unit/ofproto/json/of13/4-20-ofp_role_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPRoleReply": {
- "generation_id": 17294086455919964160,
- "role": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-21-ofp_group_mod.packet.json b/tests/unit/ofproto/json/of13/4-21-ofp_group_mod.packet.json
deleted file mode 100644
index 1a3767da..00000000
--- a/tests/unit/ofproto/json/of13/4-21-ofp_group_mod.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPGroupMod": {
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 2,
- "type": 0
- }
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- }
- ],
- "command": 0,
- "group_id": 1,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-22-ofp_port_mod.packet.json b/tests/unit/ofproto/json/of13/4-22-ofp_port_mod.packet.json
deleted file mode 100644
index ecb8d66f..00000000
--- a/tests/unit/ofproto/json/of13/4-22-ofp_port_mod.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPPortMod": {
- "advertise": 4096,
- "config": 0,
- "hw_addr": "00:11:00:00:11:11",
- "mask": 0,
- "port_no": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-23-ofp_table_mod.packet.json b/tests/unit/ofproto/json/of13/4-23-ofp_table_mod.packet.json
deleted file mode 100644
index 5019c29b..00000000
--- a/tests/unit/ofproto/json/of13/4-23-ofp_table_mod.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableMod": {
- "config": 0,
- "table_id": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-24-ofp_desc_request.packet.json b/tests/unit/ofproto/json/of13/4-24-ofp_desc_request.packet.json
deleted file mode 100644
index 5b23f8bc..00000000
--- a/tests/unit/ofproto/json/of13/4-24-ofp_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPDescStatsRequest": {
- "flags": 0,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-25-ofp_aggregate_stats_request.packet.json b/tests/unit/ofproto/json/of13/4-25-ofp_aggregate_stats_request.packet.json
deleted file mode 100644
index 248131fd..00000000
--- a/tests/unit/ofproto/json/of13/4-25-ofp_aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPAggregateStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255,
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-26-ofp_aggregate_stats_reply.packet.json b/tests/unit/ofproto/json/of13/4-26-ofp_aggregate_stats_reply.packet.json
deleted file mode 100644
index 153ad4f0..00000000
--- a/tests/unit/ofproto/json/of13/4-26-ofp_aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "OFPAggregateStatsReply": {
- "body": {
- "OFPAggregateStats": {
- "byte_count": 574,
- "flow_count": 6,
- "packet_count": 7
- }
- },
- "flags": 0,
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-27-ofp_table_stats_request.packet.json b/tests/unit/ofproto/json/of13/4-27-ofp_table_stats_request.packet.json
deleted file mode 100644
index 1f965d77..00000000
--- a/tests/unit/ofproto/json/of13/4-27-ofp_table_stats_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableStatsRequest": {
- "flags": 0,
- "type": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-28-ofp_table_stats_reply.packet.json b/tests/unit/ofproto/json/of13/4-28-ofp_table_stats_reply.packet.json
deleted file mode 100644
index 94801adb..00000000
--- a/tests/unit/ofproto/json/of13/4-28-ofp_table_stats_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "OFPTableStatsReply": {
- "body": [
- {
- "OFPTableStats": {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-29-ofp_port_stats_request.packet.json b/tests/unit/ofproto/json/of13/4-29-ofp_port_stats_request.packet.json
deleted file mode 100644
index 5228710d..00000000
--- a/tests/unit/ofproto/json/of13/4-29-ofp_port_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPPortStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-3-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of13/4-3-ofp_flow_mod.packet.json
deleted file mode 100644
index cd68b51f..00000000
--- a/tests/unit/ofproto/json/of13/4-3-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 1,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-30-ofp_port_stats_reply.packet.json b/tests/unit/ofproto/json/of13/4-30-ofp_port_stats_reply.packet.json
deleted file mode 100644
index 01157449..00000000
--- a/tests/unit/ofproto/json/of13/4-30-ofp_port_stats_reply.packet.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "OFPPortStatsReply": {
- "body": [
- {
- "OFPPortStats": {
- "collisions": 0,
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 7,
- "rx_bytes": 0,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- },
- {
- "OFPPortStats": {
- "collisions": 0,
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 6,
- "rx_bytes": 336,
- "rx_crc_err": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- }
- ],
- "flags": 0,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-31-ofp_group_features_request.packet.json b/tests/unit/ofproto/json/of13/4-31-ofp_group_features_request.packet.json
deleted file mode 100644
index edba5dc5..00000000
--- a/tests/unit/ofproto/json/of13/4-31-ofp_group_features_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGroupFeaturesStatsRequest": {
- "flags": 0,
- "type": 8
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-32-ofp_group_features_reply.packet.json b/tests/unit/ofproto/json/of13/4-32-ofp_group_features_reply.packet.json
deleted file mode 100644
index f059f994..00000000
--- a/tests/unit/ofproto/json/of13/4-32-ofp_group_features_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "OFPGroupFeaturesStatsReply": {
- "body": {
- "OFPGroupFeaturesStats": {
- "actions": [
- 67082241,
- 67082241,
- 67082241,
- 67082241
- ],
- "capabilities": 5,
- "max_groups": [
- 16777216,
- 16777216,
- 16777216,
- 16777216
- ],
- "types": 15
- }
- },
- "flags": 0,
- "type": 8
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-33-ofp_group_desc_request.packet.json b/tests/unit/ofproto/json/of13/4-33-ofp_group_desc_request.packet.json
deleted file mode 100644
index bea140c2..00000000
--- a/tests/unit/ofproto/json/of13/4-33-ofp_group_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGroupDescStatsRequest": {
- "flags": 0,
- "type": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-34-ofp_group_desc_reply.packet.json b/tests/unit/ofproto/json/of13/4-34-ofp_group_desc_reply.packet.json
deleted file mode 100644
index c30d7da6..00000000
--- a/tests/unit/ofproto/json/of13/4-34-ofp_group_desc_reply.packet.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "OFPGroupDescStatsReply": {
- "body": [
- {
- "OFPGroupDescStats": {
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 2,
- "type": 0
- }
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- }
- ],
- "group_id": 1,
- "length": 40,
- "type": 0
- }
- }
- ],
- "flags": 0,
- "type": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-35-ofp_queue_get_config_request.packet.json b/tests/unit/ofproto/json/of13/4-35-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index a50308c0..00000000
--- a/tests/unit/ofproto/json/of13/4-35-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPQueueGetConfigRequest": {
- "port": 4294967295
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-36-ofp_queue_get_config_reply.packet.json b/tests/unit/ofproto/json/of13/4-36-ofp_queue_get_config_reply.packet.json
deleted file mode 100644
index ce1f4123..00000000
--- a/tests/unit/ofproto/json/of13/4-36-ofp_queue_get_config_reply.packet.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- "OFPQueueGetConfigReply": {
- "port": 4294967295,
- "queues": [
- {
- "OFPPacketQueue": {
- "len": 64,
- "port": 77,
- "properties": [
- {
- "OFPQueuePropMinRate": {
- "len": 16,
- "property": 1,
- "rate": 10
- }
- },
- {
- "OFPQueuePropMaxRate": {
- "len": 16,
- "property": 2,
- "rate": 900
- }
- },
- {
- "OFPQueuePropExperimenter": {
- "data": [],
- "experimenter": 999,
- "len": 16,
- "property": 65535
- }
- }
- ],
- "queue_id": 99
- }
- },
- {
- "OFPPacketQueue": {
- "len": 65,
- "port": 77,
- "properties": [
- {
- "OFPQueuePropMinRate": {
- "len": 16,
- "property": 1,
- "rate": 100
- }
- },
- {
- "OFPQueuePropMaxRate": {
- "len": 16,
- "property": 2,
- "rate": 200
- }
- },
- {
- "OFPQueuePropExperimenter": {
- "experimenter": 999,
- "data": [
- 1
- ],
- "len": 17,
- "property": 65535
- }
- }
- ],
- "queue_id": 88
- }
- },
- {
- "OFPPacketQueue": {
- "len": 66,
- "port": 77,
- "properties": [
- {
- "OFPQueuePropMinRate": {
- "len": 16,
- "property": 1,
- "rate": 200
- }
- },
- {
- "OFPQueuePropMaxRate": {
- "len": 16,
- "property": 2,
- "rate": 400
- }
- },
- {
- "OFPQueuePropExperimenter": {
- "experimenter": 999,
- "data": [
- 1,
- 2
- ],
- "len": 18,
- "property": 65535
- }
- }
- ],
- "queue_id": 77
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-37-ofp_queue_stats_request.packet.json b/tests/unit/ofproto/json/of13/4-37-ofp_queue_stats_request.packet.json
deleted file mode 100644
index 7a12acc3..00000000
--- a/tests/unit/ofproto/json/of13/4-37-ofp_queue_stats_request.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "queue_id": 4294967295,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-38-ofp_queue_stats_reply.packet.json b/tests/unit/ofproto/json/of13/4-38-ofp_queue_stats_reply.packet.json
deleted file mode 100644
index 80b59cf2..00000000
--- a/tests/unit/ofproto/json/of13/4-38-ofp_queue_stats_reply.packet.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "OFPQueueStatsReply": {
- "body": [
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 7,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 6,
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "port_no": 7,
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- }
- ],
- "flags": 0,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-39-ofp_port_status.packet.json b/tests/unit/ofproto/json/of13/4-39-ofp_port_status.packet.json
deleted file mode 100644
index a842932e..00000000
--- a/tests/unit/ofproto/json/of13/4-39-ofp_port_status.packet.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "OFPPortStatus": {
- "desc": {
- "OFPPort": {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "max_speed": 5000,
- "name": "\u79c1\u306e\u30dd\u30fc\u30c8",
- "peer": 10248,
- "port_no": 7,
- "state": 4,
- "supported": 10248
- }
- },
- "reason": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-4-ofp_packet_in.packet.json b/tests/unit/ofproto/json/of13/4-4-ofp_packet_in.packet.json
deleted file mode 100644
index b3051d1c..00000000
--- a/tests/unit/ofproto/json/of13/4-4-ofp_packet_in.packet.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 2,
- "cookie": 283686884868096,
- "data": "////////8gukffjqCAYAAQgABgQAAfILpH346goAAAEAAAAAAAAKAAAD",
- "match": {
- "OFPMatch": {
- "length": 80,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 1,
- "table_id": 1,
- "total_len": 42
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-40-ofp_flow_removed.packet.json b/tests/unit/ofproto/json/of13/4-40-ofp_flow_removed.packet.json
deleted file mode 100644
index 994953e6..00000000
--- a/tests/unit/ofproto/json/of13/4-40-ofp_flow_removed.packet.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "OFPFlowRemoved": {
- "byte_count": 86,
- "cookie": 0,
- "duration_nsec": 48825000,
- "duration_sec": 3,
- "hard_timeout": 0,
- "idle_timeout": 3,
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 1,
- "priority": 65535,
- "reason": 0,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-41-ofp_error_msg_experimenter.packet.json b/tests/unit/ofproto/json/of13/4-41-ofp_error_msg_experimenter.packet.json
deleted file mode 100644
index 37bfb6a9..00000000
--- a/tests/unit/ofproto/json/of13/4-41-ofp_error_msg_experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPErrorExperimenterMsg": {
- "data": "amlra2VuIGRhdGE=",
- "exp_type": 60000,
- "experimenter": 999999,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-42-ofp_get_async_request.packet.json b/tests/unit/ofproto/json/of13/4-42-ofp_get_async_request.packet.json
deleted file mode 100644
index 7daa5a0f..00000000
--- a/tests/unit/ofproto/json/of13/4-42-ofp_get_async_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPGetAsyncRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of13/4-43-ofp_get_async_reply.packet.json b/tests/unit/ofproto/json/of13/4-43-ofp_get_async_reply.packet.json
deleted file mode 100644
index abccf043..00000000
--- a/tests/unit/ofproto/json/of13/4-43-ofp_get_async_reply.packet.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "OFPGetAsyncReply": {
- "flow_removed_mask": [
- 15,
- 3
- ],
- "packet_in_mask": [
- 5,
- 1
- ],
- "port_status_mask": [
- 7,
- 3
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-44-ofp_set_async.packet.json b/tests/unit/ofproto/json/of13/4-44-ofp_set_async.packet.json
deleted file mode 100644
index da85b880..00000000
--- a/tests/unit/ofproto/json/of13/4-44-ofp_set_async.packet.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "OFPSetAsync": {
- "flow_removed_mask": [
- 15,
- 3
- ],
- "packet_in_mask": [
- 5,
- 1
- ],
- "port_status_mask": [
- 7,
- 3
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-45-ofp_meter_mod.packet.json b/tests/unit/ofproto/json/of13/4-45-ofp_meter_mod.packet.json
deleted file mode 100644
index eba4540a..00000000
--- a/tests/unit/ofproto/json/of13/4-45-ofp_meter_mod.packet.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "OFPMeterMod": {
- "bands": [
- {
- "OFPMeterBandDrop": {
- "burst_size": 10,
- "len": 16,
- "rate": 1000,
- "type": 1
- }
- },
- {
- "OFPMeterBandDscpRemark": {
- "burst_size": 10,
- "len": 16,
- "prec_level": 1,
- "rate": 1000,
- "type": 2
- }
- },
- {
- "OFPMeterBandExperimenter": {
- "burst_size": 10,
- "experimenter": 999,
- "len": 16,
- "rate": 1000,
- "type": 65535
- }
- }
- ],
- "command": 0,
- "flags": 14,
- "meter_id": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-46-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of13/4-46-ofp_flow_mod.packet.json
deleted file mode 100644
index f4e59c76..00000000
--- a/tests/unit/ofproto/json/of13/4-46-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionMeter": {
- "len": 8,
- "meter_id": 1,
- "type": 6
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 3
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-47-ofp_meter_config_request.packet.json b/tests/unit/ofproto/json/of13/4-47-ofp_meter_config_request.packet.json
deleted file mode 100644
index 4703588e..00000000
--- a/tests/unit/ofproto/json/of13/4-47-ofp_meter_config_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterConfigStatsRequest": {
- "flags": 0,
- "meter_id": 4294967295,
- "type": 10
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-48-ofp_meter_config_reply.packet.json b/tests/unit/ofproto/json/of13/4-48-ofp_meter_config_reply.packet.json
deleted file mode 100644
index 08cc97e6..00000000
--- a/tests/unit/ofproto/json/of13/4-48-ofp_meter_config_reply.packet.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "OFPMeterConfigStatsReply": {
- "body": [
- {
- "OFPMeterConfigStats": {
- "bands": [
- {
- "OFPMeterBandDrop": {
- "burst_size": 10,
- "len": 16,
- "rate": 1000,
- "type": 1
- }
- }
- ],
- "flags": 14,
- "length": 24,
- "meter_id": 100
- }
- }
- ],
- "flags": 0,
- "type": 10
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-49-ofp_meter_stats_request.packet.json b/tests/unit/ofproto/json/of13/4-49-ofp_meter_stats_request.packet.json
deleted file mode 100644
index 8d45799b..00000000
--- a/tests/unit/ofproto/json/of13/4-49-ofp_meter_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterStatsRequest": {
- "flags": 0,
- "meter_id": 4294967295,
- "type": 9
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-5-ofp_features_request.packet.json b/tests/unit/ofproto/json/of13/4-5-ofp_features_request.packet.json
deleted file mode 100644
index 8f48ad5a..00000000
--- a/tests/unit/ofproto/json/of13/4-5-ofp_features_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPFeaturesRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of13/4-50-ofp_meter_stats_reply.packet.json b/tests/unit/ofproto/json/of13/4-50-ofp_meter_stats_reply.packet.json
deleted file mode 100644
index b4fd8226..00000000
--- a/tests/unit/ofproto/json/of13/4-50-ofp_meter_stats_reply.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPMeterStatsReply": {
- "body": [
- {
- "OFPMeterStats": {
- "band_stats": [
- {
- "OFPMeterBandStats": {
- "byte_band_count": 0,
- "packet_band_count": 0
- }
- }
- ],
- "byte_in_count": 0,
- "duration_nsec": 480000,
- "duration_sec": 0,
- "flow_count": 0,
- "len": 56,
- "meter_id": 100,
- "packet_in_count": 0
- }
- }
- ],
- "flags": 0,
- "type": 9
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-51-ofp_meter_features_request.packet.json b/tests/unit/ofproto/json/of13/4-51-ofp_meter_features_request.packet.json
deleted file mode 100644
index 7363a342..00000000
--- a/tests/unit/ofproto/json/of13/4-51-ofp_meter_features_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPMeterFeaturesStatsRequest": {
- "flags": 0,
- "type": 11
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-52-ofp_meter_features_reply.packet.json b/tests/unit/ofproto/json/of13/4-52-ofp_meter_features_reply.packet.json
deleted file mode 100644
index e3f6918f..00000000
--- a/tests/unit/ofproto/json/of13/4-52-ofp_meter_features_reply.packet.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "OFPMeterFeaturesStatsReply": {
- "body": [
- {
- "OFPMeterFeaturesStats": {
- "band_types": 2147483654,
- "capabilities": 15,
- "max_bands": 255,
- "max_color": 0,
- "max_meter": 16777216
- }
- }
- ],
- "flags": 0,
- "type": 11
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-53-ofp_port_desc_request.packet.json b/tests/unit/ofproto/json/of13/4-53-ofp_port_desc_request.packet.json
deleted file mode 100644
index f166c34a..00000000
--- a/tests/unit/ofproto/json/of13/4-53-ofp_port_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPPortDescStatsRequest": {
- "flags": 0,
- "type": 13
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-54-ofp_port_desc_reply.packet.json b/tests/unit/ofproto/json/of13/4-54-ofp_port_desc_reply.packet.json
deleted file mode 100644
index 5da460a0..00000000
--- a/tests/unit/ofproto/json/of13/4-54-ofp_port_desc_reply.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPPortDescStatsReply": {
- "body": [
- {
- "OFPPort": {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "max_speed": 5000,
- "name": "Port7",
- "peer": 10248,
- "port_no": 7,
- "state": 4,
- "supported": 10248
- }
- },
- {
- "OFPPort": {
- "advertised": 10240,
- "config": 0,
- "curr": 10248,
- "curr_speed": 5000,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "max_speed": 5000,
- "name": "Port6",
- "peer": 10248,
- "port_no": 6,
- "state": 4,
- "supported": 10248
- }
- }
- ],
- "flags": 0,
- "type": 13
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json b/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json
deleted file mode 100644
index 2a1a4308..00000000
--- a/tests/unit/ofproto/json/of13/4-55-ofp_table_features_request.packet.json
+++ /dev/null
@@ -1,15945 +0,0 @@
-{
- "OFPTableFeaturesStatsRequest": {
- "body": [
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1168,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x00",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 258,
- "table_ids": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65534
- }
- }
- ],
- "table_id": 0
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1112,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x01",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 257,
- "table_ids": [
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 1
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x02",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 256,
- "table_ids": [
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 2
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x03",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 255,
- "table_ids": [
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 3
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x04",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 254,
- "table_ids": [
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 4
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x05",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 253,
- "table_ids": [
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 5
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x06",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 252,
- "table_ids": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 6
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x07",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 251,
- "table_ids": [
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 7
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x08",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 250,
- "table_ids": [
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 8
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x09",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 249,
- "table_ids": [
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 9
- }
- }
- ],
- "flags": 1,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-56-ofp_table_features_reply.packet.json b/tests/unit/ofproto/json/of13/4-56-ofp_table_features_reply.packet.json
deleted file mode 100644
index ea056e8f..00000000
--- a/tests/unit/ofproto/json/of13/4-56-ofp_table_features_reply.packet.json
+++ /dev/null
@@ -1,15945 +0,0 @@
-{
- "OFPTableFeaturesStatsReply": {
- "body": [
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1168,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "\u79c1\u306e\u30c6\u30fc\u30d6\u30eb",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 258,
- "table_ids": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65534
- }
- }
- ],
- "table_id": 0
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1112,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x01",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 257,
- "table_ids": [
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 1
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x02",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 256,
- "table_ids": [
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 2
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x03",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 255,
- "table_ids": [
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 3
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x04",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 254,
- "table_ids": [
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 4
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x05",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 253,
- "table_ids": [
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 5
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x06",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 252,
- "table_ids": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 6
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x07",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 251,
- "table_ids": [
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 7
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x08",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 250,
- "table_ids": [
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 8
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x09",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 249,
- "table_ids": [
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 9
- }
- }
- ],
- "flags": 1,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-57-ofp_group_stats_request.packet.json b/tests/unit/ofproto/json/of13/4-57-ofp_group_stats_request.packet.json
deleted file mode 100644
index b200a81c..00000000
--- a/tests/unit/ofproto/json/of13/4-57-ofp_group_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPGroupStatsRequest": {
- "flags": 0,
- "group_id": 4294967292,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-58-ofp_group_stats_reply.packet.json b/tests/unit/ofproto/json/of13/4-58-ofp_group_stats_reply.packet.json
deleted file mode 100644
index cb979e54..00000000
--- a/tests/unit/ofproto/json/of13/4-58-ofp_group_stats_reply.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPGroupStatsReply": {
- "body": [
- {
- "OFPGroupStats": {
- "bucket_stats": [
- {
- "OFPBucketCounter": {
- "byte_count": 2345,
- "packet_count": 234
- }
- }
- ],
- "byte_count": 12345,
- "duration_nsec": 609036000,
- "duration_sec": 9,
- "group_id": 1,
- "length": 56,
- "packet_count": 123,
- "ref_count": 2
- }
- }
- ],
- "flags": 0,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-59-ofp_packet_in.packet.json b/tests/unit/ofproto/json/of13/4-59-ofp_packet_in.packet.json
deleted file mode 100644
index c5837d26..00000000
--- a/tests/unit/ofproto/json/of13/4-59-ofp_packet_in.packet.json
+++ /dev/null
@@ -1,312 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 4026531840,
- "cookie": 283686884868096,
- "data": "",
- "match": {
- "OFPMatch": {
- "length": 351,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 84281096
- }
- },
- {
- "OXMTlv": {
- "field": "in_phy_port",
- "mask": null,
- "value": 16909060
- }
- },
- {
- "OXMTlv": {
- "field": "metadata",
- "mask": null,
- "value": 283686952306183
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 999
- }
- },
- {
- "OXMTlv": {
- "field": "ip_dscp",
- "mask": null,
- "value": 9
- }
- },
- {
- "OXMTlv": {
- "field": "ip_ecn",
- "mask": null,
- "value": 3
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 99
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_src",
- "mask": null,
- "value": 8080
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_dst",
- "mask": null,
- "value": 18080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_src",
- "mask": null,
- "value": 28080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_dst",
- "mask": null,
- "value": 55936
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_src",
- "mask": null,
- "value": 48080
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_dst",
- "mask": null,
- "value": 59328
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_type",
- "mask": null,
- "value": 100
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_code",
- "mask": null,
- "value": 101
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_src",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe48:28a5"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_dst",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe05:b7dc"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_flabel",
- "mask": null,
- "value": 541473
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_type",
- "mask": null,
- "value": 200
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_code",
- "mask": null,
- "value": 201
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_target",
- "mask": null,
- "value": "fe80::a60:6eff:fe7f:74e7"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_sll",
- "mask": null,
- "value": "00:00:00:00:02:9a"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_tll",
- "mask": null,
- "value": "00:00:00:00:02:2b"
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_label",
- "mask": null,
- "value": 624485
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_tc",
- "mask": null,
- "value": 5
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_bos",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_isid",
- "mask": null,
- "value": 11259375
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 651061555542690057
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_exthdr",
- "mask": null,
- "value": 500
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 0,
- "table_id": 200,
- "total_len": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-6-ofp_features_reply.packet.json b/tests/unit/ofproto/json/of13/4-6-ofp_features_reply.packet.json
deleted file mode 100644
index 12e8744a..00000000
--- a/tests/unit/ofproto/json/of13/4-6-ofp_features_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPSwitchFeatures": {
- "auxiliary_id": 99,
- "capabilities": 79,
- "datapath_id": 9210263729383,
- "n_buffers": 0,
- "n_tables": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-60-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of13/4-60-ofp_flow_mod.packet.json
deleted file mode 100644
index 1c594e8f..00000000
--- a/tests/unit/ofproto/json/of13/4-60-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,318 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [],
- "match": {
- "OFPMatch": {
- "length": 351,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 84281096
- }
- },
- {
- "OXMTlv": {
- "field": "in_phy_port",
- "mask": null,
- "value": 16909060
- }
- },
- {
- "OXMTlv": {
- "field": "metadata",
- "mask": null,
- "value": 283686952306183
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 999
- }
- },
- {
- "OXMTlv": {
- "field": "ip_dscp",
- "mask": null,
- "value": 9
- }
- },
- {
- "OXMTlv": {
- "field": "ip_ecn",
- "mask": null,
- "value": 3
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 99
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_src",
- "mask": null,
- "value": 8080
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_dst",
- "mask": null,
- "value": 18080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_src",
- "mask": null,
- "value": 28080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_dst",
- "mask": null,
- "value": 55936
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_src",
- "mask": null,
- "value": 48080
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_dst",
- "mask": null,
- "value": 59328
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_type",
- "mask": null,
- "value": 100
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_code",
- "mask": null,
- "value": 101
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_src",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe48:28a5"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_dst",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe05:b7dc"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_flabel",
- "mask": null,
- "value": 541473
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_type",
- "mask": null,
- "value": 200
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_code",
- "mask": null,
- "value": 201
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_target",
- "mask": null,
- "value": "fe80::a60:6eff:fe7f:74e7"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_sll",
- "mask": null,
- "value": "00:00:00:00:02:9a"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_tll",
- "mask": null,
- "value": "00:00:00:00:02:2b"
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_label",
- "mask": null,
- "value": 624485
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_tc",
- "mask": null,
- "value": 5
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_bos",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_isid",
- "mask": null,
- "value": 11259375
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 651061555542690057
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_exthdr",
- "mask": null,
- "value": 500
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-61-ofp_experimenter_request.packet.json b/tests/unit/ofproto/json/of13/4-61-ofp_experimenter_request.packet.json
deleted file mode 100644
index 93af3039..00000000
--- a/tests/unit/ofproto/json/of13/4-61-ofp_experimenter_request.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPExperimenterStatsRequest": {
- "data": "aG9nZWhvZ2U=",
- "exp_type": 3405678728,
- "experimenter": 3735928495,
- "flags": 0,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-62-ofp_experimenter_reply.packet.json b/tests/unit/ofproto/json/of13/4-62-ofp_experimenter_reply.packet.json
deleted file mode 100644
index 1eb06b84..00000000
--- a/tests/unit/ofproto/json/of13/4-62-ofp_experimenter_reply.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "OFPExperimenterStatsReply": {
- "body": {
- "OFPExperimenterMultipart": {
- "data": "dGVzdGRhdGE5OTk5OTk5OQ==",
- "exp_type": 3405674359,
- "experimenter": 3735928495
- }
- },
- "flags": 0,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-63-onf_flow_monitor_request.packet.json b/tests/unit/ofproto/json/of13/4-63-onf_flow_monitor_request.packet.json
deleted file mode 100644
index c5e166d8..00000000
--- a/tests/unit/ofproto/json/of13/4-63-onf_flow_monitor_request.packet.json
+++ /dev/null
@@ -1,337 +0,0 @@
-{
- "ONFFlowMonitorStatsRequest": {
- "body": [
- {
- "ONFFlowMonitorRequest": {
- "flags": 15,
- "id": 100000000,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "match_len": 0,
- "out_port": 22,
- "table_id": 33
- }
- },
- {
- "ONFFlowMonitorRequest": {
- "flags": 49,
- "id": 999,
- "match": {
- "OFPMatch": {
- "length": 351,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 84281096
- }
- },
- {
- "OXMTlv": {
- "field": "in_phy_port",
- "mask": null,
- "value": 16909060
- }
- },
- {
- "OXMTlv": {
- "field": "metadata",
- "mask": null,
- "value": 283686952306183
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 999
- }
- },
- {
- "OXMTlv": {
- "field": "ip_dscp",
- "mask": null,
- "value": 9
- }
- },
- {
- "OXMTlv": {
- "field": "ip_ecn",
- "mask": null,
- "value": 3
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 99
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_src",
- "mask": null,
- "value": 8080
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_dst",
- "mask": null,
- "value": 18080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_src",
- "mask": null,
- "value": 28080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_dst",
- "mask": null,
- "value": 55936
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_src",
- "mask": null,
- "value": 48080
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_dst",
- "mask": null,
- "value": 59328
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_type",
- "mask": null,
- "value": 100
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_code",
- "mask": null,
- "value": 101
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_src",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe48:28a5"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_dst",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe05:b7dc"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_flabel",
- "mask": null,
- "value": 541473
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_type",
- "mask": null,
- "value": 200
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_code",
- "mask": null,
- "value": 201
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_target",
- "mask": null,
- "value": "fe80::a60:6eff:fe7f:74e7"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_sll",
- "mask": null,
- "value": "00:00:00:00:02:9a"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_tll",
- "mask": null,
- "value": "00:00:00:00:02:2b"
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_label",
- "mask": null,
- "value": 624485
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_tc",
- "mask": null,
- "value": 5
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_bos",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_isid",
- "mask": null,
- "value": 11259375
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 651061555542690057
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_exthdr",
- "mask": null,
- "value": 500
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- }
- ],
- "type": 1
- }
- },
- "match_len": 347,
- "out_port": 4294967295,
- "table_id": 255
- }
- }
- ],
- "exp_type": 1870,
- "experimenter": 1330529792,
- "flags": 0,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-7-ofp_set_config.packet.json b/tests/unit/ofproto/json/of13/4-7-ofp_set_config.packet.json
deleted file mode 100644
index cd5398b7..00000000
--- a/tests/unit/ofproto/json/of13/4-7-ofp_set_config.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPSetConfig": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of13/4-8-ofp_get_config_request.packet.json b/tests/unit/ofproto/json/of13/4-8-ofp_get_config_request.packet.json
deleted file mode 100644
index 06fe51f4..00000000
--- a/tests/unit/ofproto/json/of13/4-8-ofp_get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPGetConfigRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of13/4-9-ofp_get_config_reply.packet.json b/tests/unit/ofproto/json/of13/4-9-ofp_get_config_reply.packet.json
deleted file mode 100644
index 62b37b4d..00000000
--- a/tests/unit/ofproto/json/of13/4-9-ofp_get_config_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGetConfigReply": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_group_stats_request.packet.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_group_stats_request.packet.json
deleted file mode 100644
index 311b0381..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_group_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPGroupStatsRequest": {
- "flags": 0,
- "group_id": 1,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_config_request.packet.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_config_request.packet.json
deleted file mode 100644
index 9967bd29..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_config_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterConfigStatsRequest": {
- "flags": 0,
- "meter_id": 1,
- "type": 10
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_stats_request.packet.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_stats_request.packet.json
deleted file mode 100644
index 570c2b6d..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_meter_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterStatsRequest": {
- "flags": 0,
- "meter_id": 1,
- "type": 9
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_port_stats_request.packet.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_port_stats_request.packet.json
deleted file mode 100644
index f1258076..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_port_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPPortStatsRequest": {
- "flags": 0,
- "port_no": 7,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json
deleted file mode 100644
index a50308c0..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_get_config_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPQueueGetConfigRequest": {
- "port": 4294967295
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json
deleted file mode 100644
index b216fe97..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet1.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 7,
- "queue_id": 4294967295,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json
deleted file mode 100644
index cc00e1ea..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet2.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 7,
- "queue_id": 1,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json
deleted file mode 100644
index 5f6579be..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_queue_stats_request.packet3.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "queue_id": 1,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_table_features_request.packet.json b/tests/unit/ofproto/json/of13/lib-ofctl-ofp_table_features_request.packet.json
deleted file mode 100644
index 6501de15..00000000
--- a/tests/unit/ofproto/json/of13/lib-ofctl-ofp_table_features_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPTableFeaturesStatsRequest": {
- "body": [],
- "flags": 0,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-echo_reply.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-echo_reply.packet.json
deleted file mode 100644
index 011bd6de..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-echo_reply.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoReply": {
- "data": ""
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-echo_request.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-echo_request.packet.json
deleted file mode 100644
index 501a8479..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-echo_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoRequest": {
- "data": ""
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-error_msg.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-error_msg.packet.json
deleted file mode 100644
index b12d0d9a..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-error_msg.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPErrorMsg": {
- "code": 6,
- "data": "BA4ACAAAAAA=",
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-features_reply.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-features_reply.packet.json
deleted file mode 100644
index 3d828093..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-features_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPSwitchFeatures": {
- "auxiliary_id": 0,
- "capabilities": 79,
- "datapath_id": 1,
- "n_buffers": 255,
- "n_tables": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.json
deleted file mode 100644
index 7de40ef3..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.json
+++ /dev/null
@@ -1,192 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "NXActionLearn": {
- "cookie": 0,
- "experimenter": 8992,
- "fin_hard_timeout": 0,
- "fin_idle_timeout": 0,
- "flags": 0,
- "hard_timeout": 300,
- "idle_timeout": 0,
- "len": 96,
- "priority": 1,
- "specs": [
- {
- "NXFlowSpecMatch": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": [
- "vlan_vid",
- 0
- ]
- }
- },
- {
- "NXFlowSpecMatch": {
- "dst": [
- "eth_dst_nxm",
- 0
- ],
- "n_bits": 48,
- "src": [
- "eth_src_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": 0
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "tunnel_id_nxm",
- 0
- ],
- "n_bits": 64,
- "src": [
- "tunnel_id_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecOutput": {
- "dst": "",
- "n_bits": 32,
- "src": [
- "in_port",
- 0
- ]
- }
- }
- ],
- "subtype": 16,
- "table_id": 99,
- "type": 65535
- }
- }
- ],
- "len": 128,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.truncated64.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.truncated64.json
deleted file mode 100644
index 707e3096..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod.packet.truncated64.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "OFPTruncatedMessage": {
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 2
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_conjunction.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_conjunction.packet.json
deleted file mode 100644
index 209067e8..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_conjunction.packet.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionConjunction": {
- "clause": 1,
- "experimenter": 8992,
- "id": 11259375,
- "len": 16,
- "n_clauses": 2,
- "subtype": 34,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_match_conj.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_match_conj.packet.json
deleted file mode 100644
index 4fd8c4d4..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_mod_match_conj.packet.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "conj_id",
- "mask": null,
- "value": 11259375
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_removed.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_removed.packet.json
deleted file mode 100644
index 63ec9424..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-flow_removed.packet.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "OFPFlowRemoved": {
- "byte_count": 100,
- "cookie": 1311768467463790320,
- "duration_nsec": 500,
- "duration_sec": 600,
- "hard_timeout": 300,
- "idle_timeout": 400,
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 200,
- "priority": 100,
- "reason": 0,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-get_config_reply.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-get_config_reply.packet.json
deleted file mode 100644
index 62b37b4d..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-get_config_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGetConfigReply": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-hello.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-hello.packet.json
deleted file mode 100644
index 5a116313..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-hello.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPHello": {
- "elements": [
- {
- "OFPHelloElemVersionBitmap": {
- "length": 8,
- "type": 1,
- "versions": [
- 4
- ]
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-meter_mod.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-meter_mod.packet.json
deleted file mode 100644
index 5bb43719..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-meter_mod.packet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "OFPMeterMod": {
- "bands": [
- {
- "OFPMeterBandDrop": {
- "burst_size": 10,
- "len": 16,
- "rate": 1000,
- "type": 1
- }
- },
- {
- "OFPMeterBandDscpRemark": {
- "burst_size": 10,
- "len": 16,
- "prec_level": 1,
- "rate": 1000,
- "type": 2
- }
- }
- ],
- "command": 0,
- "flags": 14,
- "meter_id": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-ofp_packet_out_packet_library.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-ofp_packet_out_packet_library.packet.json
deleted file mode 100644
index 4e8ad336..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-ofp_packet_out_packet_library.packet.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967292,
- "type": 0
- }
- }
- ],
- "actions_len": 16,
- "buffer_id": 4294967295,
- "data": {
- "Packet": {
- "protocols": [
- {
- "ethernet": {
- "dst": "f2:0b:a4:d0:3f:70",
- "ethertype": 2048,
- "src": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "ipv4": {
- "csum": 44939,
- "dst": "10.0.0.2",
- "flags": 0,
- "header_length": 5,
- "identification": 63514,
- "offset": 0,
- "option": null,
- "proto": 1,
- "src": "10.0.0.1",
- "tos": 0,
- "total_length": 84,
- "ttl": 255,
- "version": 4
- }
- },
- {
- "icmp": {
- "code": 0,
- "csum": 520,
- "data": {
- "echo": {
- "data": "MdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "id": 63328,
- "seq": 0
- }
- },
- "type": 8
- }
- }
- ]
- }
- },
- "in_port": 4294967293
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-packet_in.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-packet_in.packet.json
deleted file mode 100644
index e5fd0bd9..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-packet_in.packet.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 200,
- "cookie": 0,
- "data": "aG9nZQ==",
- "match": {
- "OFPMatch": {
- "length": 40,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 0,
- "table_id": 100,
- "total_len": 1000
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-port_mod.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-port_mod.packet.json
deleted file mode 100644
index 5c6c29a0..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-port_mod.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPPortMod": {
- "advertise": 10248,
- "config": 1,
- "hw_addr": "aa:bb:cc:99:88:77",
- "mask": 1,
- "port_no": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-port_status.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-port_status.packet.json
deleted file mode 100644
index b82d10ee..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-port_status.packet.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "OFPPortStatus": {
- "desc": {
- "OFPPort": {
- "advertised": 10248,
- "config": 0,
- "curr": 10248,
- "curr_speed": 50000,
- "hw_addr": "ff:ff:ff:ff:ff:ff",
- "max_speed": 100000,
- "name": "eth0",
- "peer": 10248,
- "port_no": 1,
- "state": 4,
- "supported": 10248
- }
- },
- "reason": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-set_config.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-set_config.packet.json
deleted file mode 100644
index cd5398b7..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-set_config.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPSetConfig": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of13/libofproto-OFP13-table_mod.packet.json b/tests/unit/ofproto/json/of13/libofproto-OFP13-table_mod.packet.json
deleted file mode 100644
index 5019c29b..00000000
--- a/tests/unit/ofproto/json/of13/libofproto-OFP13-table_mod.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableMod": {
- "config": 0,
- "table_id": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_conjunction.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_conjunction.packet.json
deleted file mode 100644
index edc10939..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_conjunction.packet.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 1,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionConjunction": {
- "clause": 0,
- "experimenter": 8992,
- "id": 11259375,
- "len": 16,
- "n_clauses": 2,
- "subtype": 34,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller.packet.json
deleted file mode 100644
index 95bc3f51..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller.packet.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionController": {
- "controller_id": 1,
- "experimenter": 8992,
- "len": 16,
- "max_len": 1024,
- "reason": 5,
- "subtype": 20,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller2.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller2.packet.json
deleted file mode 100644
index f5e57f3d..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_controller2.packet.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionController2": {
- "controller_id": 10,
- "experimenter": 8992,
- "len": 64,
- "max_len": 1024,
- "pause": true,
- "reason": 5,
- "subtype": 37,
- "type": 65535,
- "userdata": [
- 1,
- 2,
- 3,
- 4,
- 5
- ]
- }
- }
- ],
- "len": 72,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json
deleted file mode 100644
index b1157e9a..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionCT": {
- "actions": [],
- "alg": 0,
- "experimenter": 8992,
- "flags": 0,
- "len": 24,
- "recirc_table": 4,
- "subtype": 35,
- "type": 65535,
- "zone_ofs_nbits": 283,
- "zone_src": "reg0"
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "ct_state",
- "mask": 32,
- "value": 0
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json
deleted file mode 100644
index e3fcd3bc..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionCT": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ct_mark",
- "mask": null,
- "value": 6636321
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "alg": 0,
- "experimenter": 8992,
- "flags": 1,
- "len": 40,
- "recirc_table": 255,
- "subtype": 35,
- "type": 65535,
- "zone_ofs_nbits": 0,
- "zone_src": ""
- }
- }
- ],
- "len": 48,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "ct_state",
- "mask": 34,
- "value": 34
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json
deleted file mode 100644
index 5a38d8f7..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionCT": {
- "actions": [
- {
- "NXActionNAT": {
- "experimenter": 8992,
- "flags": 1,
- "len": 32,
- "range_ipv4_max": "10.1.13.255",
- "range_ipv4_min": "10.1.12.0",
- "range_ipv6_max": "",
- "range_ipv6_min": "",
- "range_proto_max": 1023,
- "range_proto_min": 1,
- "subtype": 36,
- "type": 65535
- }
- }
- ],
- "alg": 0,
- "experimenter": 8992,
- "flags": 1,
- "len": 56,
- "recirc_table": 255,
- "subtype": 35,
- "type": 65535,
- "zone_ofs_nbits": 0,
- "zone_src": ""
- }
- }
- ],
- "len": 64,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 10,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json
deleted file mode 100644
index 5c1c8c07..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionCT": {
- "actions": [
- {
- "NXActionNAT": {
- "experimenter": 8992,
- "flags": 2,
- "len": 48,
- "range_ipv4_max": "",
- "range_ipv4_min": "",
- "range_ipv6_max": "2001:1::ffff",
- "range_ipv6_min": "2001:1::1",
- "range_proto_max": null,
- "range_proto_min": null,
- "subtype": 36,
- "type": 65535
- }
- }
- ],
- "alg": 0,
- "experimenter": 8992,
- "flags": 1,
- "len": 72,
- "recirc_table": 255,
- "subtype": 35,
- "type": 65535,
- "zone_ofs_nbits": 0,
- "zone_src": ""
- }
- }
- ],
- "len": 80,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 10,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 34525
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_dec_ttl_cnt_ids.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_dec_ttl_cnt_ids.packet.json
deleted file mode 100644
index c5e44d07..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_dec_ttl_cnt_ids.packet.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionDecTtlCntIds": {
- "cnt_ids": [
- 1,
- 2,
- 3,
- 4,
- 5
- ],
- "experimenter": 8992,
- "len": 32,
- "subtype": 21,
- "type": 65535
- }
- }
- ],
- "len": 40,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 15,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 6
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_fintimeout.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_fintimeout.packet.json
deleted file mode 100644
index c0e02de9..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_fintimeout.packet.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionFinTimeout": {
- "experimenter": 8992,
- "fin_hard_timeout": 60,
- "fin_idle_timeout": 30,
- "len": 16,
- "subtype": 19,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 15,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 6
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_learn.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_learn.packet.json
deleted file mode 100644
index c874c2e9..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_learn.packet.json
+++ /dev/null
@@ -1,192 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "NXActionLearn": {
- "cookie": 0,
- "experimenter": 8992,
- "fin_hard_timeout": 0,
- "fin_idle_timeout": 0,
- "flags": 0,
- "hard_timeout": 300,
- "idle_timeout": 0,
- "len": 96,
- "priority": 1,
- "specs": [
- {
- "NXFlowSpecMatch": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": [
- "vlan_vid",
- 0
- ]
- }
- },
- {
- "NXFlowSpecMatch": {
- "dst": [
- "eth_dst_nxm",
- 0
- ],
- "n_bits": 48,
- "src": [
- "eth_src_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": 0
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "tunnel_id_nxm",
- 0
- ],
- "n_bits": 64,
- "src": [
- "tunnel_id_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecOutput": {
- "dst": "",
- "n_bits": 32,
- "src": [
- "in_port",
- 0
- ]
- }
- }
- ],
- "subtype": 16,
- "table_id": 99,
- "type": 65535
- }
- }
- ],
- "len": 128,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_note.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_note.packet.json
deleted file mode 100644
index 330000da..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_note.packet.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionNote": {
- "experimenter": 8992,
- "len": 16,
- "note": [
- 4,
- 5,
- 6,
- 7,
- 0,
- 0
- ],
- "subtype": 8,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_output_trunc.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_output_trunc.packet.json
deleted file mode 100644
index 84657335..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_output_trunc.packet.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionOutputTrunc": {
- "experimenter": 8992,
- "len": 16,
- "max_len": 1024,
- "port": 8080,
- "subtype": 39,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_resubmit.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_resubmit.packet.json
deleted file mode 100644
index 1fdedc55..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_resubmit.packet.json
+++ /dev/null
@@ -1,99 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionResubmitTable": {
- "experimenter": 8992,
- "in_port": 1234,
- "len": 16,
- "subtype": 14,
- "table_id": 99,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample.packet.json
deleted file mode 100644
index a5a374ad..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample.packet.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionSample": {
- "collector_set_id": 1,
- "experimenter": 8992,
- "len": 24,
- "obs_domain_id": 2,
- "obs_point_id": 3,
- "probability": 3,
- "subtype": 29,
- "type": 65535
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample2.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample2.packet.json
deleted file mode 100644
index c767bff3..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_sample2.packet.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionSample2": {
- "collector_set_id": 1,
- "experimenter": 8992,
- "len": 32,
- "obs_domain_id": 2,
- "obs_point_id": 3,
- "probability": 3,
- "sampling_port": 8080,
- "subtype": 38,
- "type": 65535
- }
- }
- ],
- "len": 40,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_pop.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_pop.packet.json
deleted file mode 100644
index 0322a36a..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_pop.packet.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionStackPop": {
- "end": 5,
- "experimenter": 8992,
- "field": "reg2",
- "len": 24,
- "start": 1,
- "subtype": 28,
- "type": 65535
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_push.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_push.packet.json
deleted file mode 100644
index 86d29e74..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_stack_push.packet.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionStackPush": {
- "end": 5,
- "experimenter": 8992,
- "field": "reg2",
- "len": 24,
- "start": 1,
- "subtype": 27,
- "type": 65535
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 100,
- "table_id": 0
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_conj.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_conj.packet.json
deleted file mode 100644
index 6b1c2864..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_conj.packet.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 1,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- }
- ],
- "len": 16,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 18,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "conj_id",
- "mask": null,
- "value": 11259375
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5330
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json
deleted file mode 100644
index c60851a0..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 1,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionRegLoad": {
- "dst": "reg0",
- "experimenter": 8992,
- "len": 24,
- "ofs_nbits": 283,
- "subtype": 7,
- "type": 65535,
- "value": 233495534
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 24,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "reg0",
- "mask": null,
- "value": 4660
- }
- },
- {
- "OXMTlv": {
- "field": "reg5",
- "mask": 65535,
- "value": 43981
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_move_nx_register.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_move_nx_register.packet.json
deleted file mode 100644
index 7457278b..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_move_nx_register.packet.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 1,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionRegMove": {
- "dst_field": "reg1",
- "dst_ofs": 0,
- "experimenter": 8992,
- "len": 24,
- "n_bits": 6,
- "src_field": "reg0",
- "src_ofs": 10,
- "subtype": 6,
- "type": 65535
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 24,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "reg0",
- "mask": null,
- "value": 4660
- }
- },
- {
- "OXMTlv": {
- "field": "reg5",
- "mask": 65535,
- "value": 43981
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-} \ No newline at end of file
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark.packet.json
deleted file mode 100644
index 61aee954..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark.packet.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 1,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- }
- ],
- "len": 16,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 18,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5330
- }
- },
- {
- "OXMTlv": {
- "field": "pkt_mark",
- "mask": null,
- "value": 54321
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark_masked.packet.json b/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark_masked.packet.json
deleted file mode 100644
index a7bd2367..00000000
--- a/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_pkt_mark_masked.packet.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 4294967295,
- "command": 1,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- }
- ],
- "len": 16,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5330
- }
- },
- {
- "OXMTlv": {
- "field": "pkt_mark",
- "mask": 65535,
- "value": 54321
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 32768,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-0-ofp_desc_reply.packet.json b/tests/unit/ofproto/json/of14/5-0-ofp_desc_reply.packet.json
deleted file mode 100644
index 26e5dc2d..00000000
--- a/tests/unit/ofproto/json/of14/5-0-ofp_desc_reply.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPDescStatsReply": {
- "body": {
- "OFPDescStats": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
- },
- "flags": 0,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-1-ofp_packet_out.packet.json b/tests/unit/ofproto/json/of14/5-1-ofp_packet_out.packet.json
deleted file mode 100644
index efb39e2d..00000000
--- a/tests/unit/ofproto/json/of14/5-1-ofp_packet_out.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967292,
- "type": 0
- }
- }
- ],
- "actions_len": 16,
- "buffer_id": 4294967295,
- "data": "8guk0D9w8gukffjqCABFAABU+BoAAP8Br4sKAAABCgAAAggAAgj3YAAAMdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "in_port": 4294967293
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-10-ofp_hello.packet.json b/tests/unit/ofproto/json/of14/5-10-ofp_hello.packet.json
deleted file mode 100644
index d03ff84b..00000000
--- a/tests/unit/ofproto/json/of14/5-10-ofp_hello.packet.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "OFPHello": {
- "elements": [
- {
- "OFPHelloElemVersionBitmap": {
- "length": 8,
- "type": 1,
- "versions": [
- 1,
- 2,
- 3,
- 9,
- 10,
- 30
- ]
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-11-ofp_flow_stats_request.packet.json b/tests/unit/ofproto/json/of14/5-11-ofp_flow_stats_request.packet.json
deleted file mode 100644
index 2baccad4..00000000
--- a/tests/unit/ofproto/json/of14/5-11-ofp_flow_stats_request.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPFlowStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-12-ofp_flow_stats_reply.packet.json b/tests/unit/ofproto/json/of14/5-12-ofp_flow_stats_reply.packet.json
deleted file mode 100644
index 42eacf37..00000000
--- a/tests/unit/ofproto/json/of14/5-12-ofp_flow_stats_reply.packet.json
+++ /dev/null
@@ -1,347 +0,0 @@
-{
- "OFPFlowStatsReply": {
- "body": [
- {
- "OFPFlowStats": {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115277000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [],
- "length": 56,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "packet_count": 0,
- "priority": 65535,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 0,
- "cookie": 0,
- "duration_nsec": 115055000,
- "duration_sec": 358,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 0,
- "port": 4294967290,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "length": 88,
- "match": {
- "OFPMatch": {
- "length": 10,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 0,
- "priority": 65534,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 238,
- "cookie": 0,
- "duration_nsec": 511582000,
- "duration_sec": 316220,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 1,
- "type": 1
- }
- }
- ],
- "length": 80,
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 3,
- "priority": 123,
- "table_id": 0
- }
- },
- {
- "OFPFlowStats": {
- "byte_count": 98,
- "cookie": 0,
- "duration_nsec": 980901000,
- "duration_sec": 313499,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 258
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionCopyTtlOut": {
- "len": 8,
- "type": 11
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionPopPbb": {
- "len": 8,
- "type": 27
- }
- },
- {
- "OFPActionPushPbb": {
- "ethertype": 4660,
- "len": 8,
- "type": 26
- }
- },
- {
- "OFPActionPopMpls": {
- "ethertype": 39030,
- "len": 8,
- "type": 20
- }
- },
- {
- "OFPActionPushMpls": {
- "ethertype": 34887,
- "len": 8,
- "type": 19
- }
- },
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionPushVlan": {
- "ethertype": 33024,
- "len": 8,
- "type": 17
- }
- },
- {
- "OFPActionDecMplsTtl": {
- "len": 8,
- "type": 16
- }
- },
- {
- "OFPActionSetMplsTtl": {
- "len": 8,
- "mpls_ttl": 10,
- "type": 15
- }
- },
- {
- "OFPActionDecNwTtl": {
- "len": 8,
- "type": 24
- }
- },
- {
- "OFPActionSetNwTtl": {
- "len": 8,
- "nw_ttl": 10,
- "type": 23
- }
- },
- {
- "OFPActionSetQueue": {
- "len": 8,
- "queue_id": 3,
- "type": 21
- }
- },
- {
- "OFPActionGroup": {
- "group_id": 99,
- "len": 8,
- "type": 22
- }
- },
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- },
- {
- "OFPActionExperimenterUnknown": {
- "len": 16,
- "data": "ZXhwX2RhdGE=",
- "experimenter": 98765432,
- "type": 65535
- }
- },
- {
- "NXActionUnknown": {
- "len": 16,
- "data": "cF9kYXRh",
- "experimenter": 8992,
- "type": 65535,
- "subtype": 25976
- }
- }
- ],
- "len": 192,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "01:02:03:04:05:06"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 40,
- "type": 4
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967293,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 3
- }
- }
- ],
- "length": 312,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "packet_count": 1,
- "priority": 0,
- "table_id": 0
- }
- }
- ],
- "flags": 0,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-13-ofp_echo_request.packet.json b/tests/unit/ofproto/json/of14/5-13-ofp_echo_request.packet.json
deleted file mode 100644
index e1f2af42..00000000
--- a/tests/unit/ofproto/json/of14/5-13-ofp_echo_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoRequest": {
- "data": "aG9nZQ=="
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-14-ofp_echo_reply.packet.json b/tests/unit/ofproto/json/of14/5-14-ofp_echo_reply.packet.json
deleted file mode 100644
index 2a573634..00000000
--- a/tests/unit/ofproto/json/of14/5-14-ofp_echo_reply.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoReply": {
- "data": "aG9nZQ=="
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-15-ofp_error_msg.packet.json b/tests/unit/ofproto/json/of14/5-15-ofp_error_msg.packet.json
deleted file mode 100644
index e9ab2b5e..00000000
--- a/tests/unit/ofproto/json/of14/5-15-ofp_error_msg.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPErrorMsg": {
- "code": 11,
- "data": "ZnVnYWZ1Z2E=",
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-16-ofp_experimenter.packet.json b/tests/unit/ofproto/json/of14/5-16-ofp_experimenter.packet.json
deleted file mode 100644
index 4ad13c73..00000000
--- a/tests/unit/ofproto/json/of14/5-16-ofp_experimenter.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPExperimenter": {
- "data": "bmF6bw==",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-17-ofp_barrier_request.packet.json b/tests/unit/ofproto/json/of14/5-17-ofp_barrier_request.packet.json
deleted file mode 100644
index 2aae9ec3..00000000
--- a/tests/unit/ofproto/json/of14/5-17-ofp_barrier_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of14/5-18-ofp_barrier_reply.packet.json b/tests/unit/ofproto/json/of14/5-18-ofp_barrier_reply.packet.json
deleted file mode 100644
index 11f8cfcc..00000000
--- a/tests/unit/ofproto/json/of14/5-18-ofp_barrier_reply.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierReply": {}
-}
diff --git a/tests/unit/ofproto/json/of14/5-19-ofp_role_request.packet.json b/tests/unit/ofproto/json/of14/5-19-ofp_role_request.packet.json
deleted file mode 100644
index 5cdbc2f1..00000000
--- a/tests/unit/ofproto/json/of14/5-19-ofp_role_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPRoleRequest": {
- "generation_id": 17294086455919964160,
- "role": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-2-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of14/5-2-ofp_flow_mod.packet.json
deleted file mode 100644
index 5f789d52..00000000
--- a/tests/unit/ofproto/json/of14/5-2-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,202 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 258
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionCopyTtlOut": {
- "len": 8,
- "type": 11
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionPopPbb": {
- "len": 8,
- "type": 27
- }
- },
- {
- "OFPActionPushPbb": {
- "ethertype": 4660,
- "len": 8,
- "type": 26
- }
- },
- {
- "OFPActionPopMpls": {
- "ethertype": 39030,
- "len": 8,
- "type": 20
- }
- },
- {
- "OFPActionPushMpls": {
- "ethertype": 34887,
- "len": 8,
- "type": 19
- }
- },
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionPushVlan": {
- "ethertype": 33024,
- "len": 8,
- "type": 17
- }
- },
- {
- "OFPActionDecMplsTtl": {
- "len": 8,
- "type": 16
- }
- },
- {
- "OFPActionSetMplsTtl": {
- "len": 8,
- "mpls_ttl": 10,
- "type": 15
- }
- },
- {
- "OFPActionDecNwTtl": {
- "len": 8,
- "type": 24
- }
- },
- {
- "OFPActionSetNwTtl": {
- "len": 8,
- "nw_ttl": 10,
- "type": 23
- }
- },
- {
- "OFPActionExperimenterUnknown": {
- "data": "AAECAwQFBgc=",
- "experimenter": 101,
- "len": 16,
- "type": 65535
- }
- },
- {
- "OFPActionSetQueue": {
- "len": 8,
- "queue_id": 3,
- "type": 21
- }
- },
- {
- "OFPActionGroup": {
- "group_id": 99,
- "len": 8,
- "type": 22
- }
- },
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- }
- ],
- "len": 176,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "01:02:03:04:05:06"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 40,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-20-ofp_role_reply.packet.json b/tests/unit/ofproto/json/of14/5-20-ofp_role_reply.packet.json
deleted file mode 100644
index 3fd9a13f..00000000
--- a/tests/unit/ofproto/json/of14/5-20-ofp_role_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPRoleReply": {
- "generation_id": 17294086455919964160,
- "role": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-21-ofp_group_mod.packet.json b/tests/unit/ofproto/json/of14/5-21-ofp_group_mod.packet.json
deleted file mode 100644
index 1a3767da..00000000
--- a/tests/unit/ofproto/json/of14/5-21-ofp_group_mod.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPGroupMod": {
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 2,
- "type": 0
- }
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- }
- ],
- "command": 0,
- "group_id": 1,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-22-ofp_port_mod.packet.json b/tests/unit/ofproto/json/of14/5-22-ofp_port_mod.packet.json
deleted file mode 100644
index a255b9dd..00000000
--- a/tests/unit/ofproto/json/of14/5-22-ofp_port_mod.packet.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "OFPPortMod": {
- "config": 0,
- "hw_addr": "00:11:00:00:11:11",
- "mask": 0,
- "port_no": 1,
- "properties": [
- {
- "OFPPortModPropEthernet": {
- "advertise": 4096,
- "length": 8,
- "type": 0
- }
- },
- {
- "OFPPortModPropOptical": {
- "configure": 3,
- "fl_offset": 2000,
- "freq_lmda": 1500,
- "grid_span": 3000,
- "length": 24,
- "tx_pwr": 300,
- "type": 1
- }
- },
- {
- "OFPPortModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortModPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortModPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-23-ofp_table_mod.packet.json b/tests/unit/ofproto/json/of14/5-23-ofp_table_mod.packet.json
deleted file mode 100644
index 97acd144..00000000
--- a/tests/unit/ofproto/json/of14/5-23-ofp_table_mod.packet.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "OFPTableMod": {
- "config": 0,
- "properties": [
- {
- "OFPTableModPropEviction": {
- "flags": 0,
- "length": 8,
- "type": 2
- }
- },
- {
- "OFPTableModPropVacancy": {
- "length": 8,
- "type": 3,
- "vacancy": 0,
- "vacancy_down": 0,
- "vacancy_up": 0
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "table_id": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-24-ofp_desc_request.packet.json b/tests/unit/ofproto/json/of14/5-24-ofp_desc_request.packet.json
deleted file mode 100644
index 5b23f8bc..00000000
--- a/tests/unit/ofproto/json/of14/5-24-ofp_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPDescStatsRequest": {
- "flags": 0,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-25-ofp_aggregate_stats_request.packet.json b/tests/unit/ofproto/json/of14/5-25-ofp_aggregate_stats_request.packet.json
deleted file mode 100644
index 248131fd..00000000
--- a/tests/unit/ofproto/json/of14/5-25-ofp_aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPAggregateStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255,
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-26-ofp_aggregate_stats_reply.packet.json b/tests/unit/ofproto/json/of14/5-26-ofp_aggregate_stats_reply.packet.json
deleted file mode 100644
index 153ad4f0..00000000
--- a/tests/unit/ofproto/json/of14/5-26-ofp_aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "OFPAggregateStatsReply": {
- "body": {
- "OFPAggregateStats": {
- "byte_count": 574,
- "flow_count": 6,
- "packet_count": 7
- }
- },
- "flags": 0,
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-27-ofp_table_stats_request.packet.json b/tests/unit/ofproto/json/of14/5-27-ofp_table_stats_request.packet.json
deleted file mode 100644
index 1f965d77..00000000
--- a/tests/unit/ofproto/json/of14/5-27-ofp_table_stats_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableStatsRequest": {
- "flags": 0,
- "type": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-28-ofp_table_stats_reply.packet.json b/tests/unit/ofproto/json/of14/5-28-ofp_table_stats_reply.packet.json
deleted file mode 100644
index 94801adb..00000000
--- a/tests/unit/ofproto/json/of14/5-28-ofp_table_stats_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "OFPTableStatsReply": {
- "body": [
- {
- "OFPTableStats": {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-29-ofp_port_stats_request.packet.json b/tests/unit/ofproto/json/of14/5-29-ofp_port_stats_request.packet.json
deleted file mode 100644
index 5228710d..00000000
--- a/tests/unit/ofproto/json/of14/5-29-ofp_port_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPPortStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-3-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of14/5-3-ofp_flow_mod.packet.json
deleted file mode 100644
index 061e3cd0..00000000
--- a/tests/unit/ofproto/json/of14/5-3-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 1,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 22,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-30-ofp_port_stats_reply.packet.json b/tests/unit/ofproto/json/of14/5-30-ofp_port_stats_reply.packet.json
deleted file mode 100644
index 4ea41742..00000000
--- a/tests/unit/ofproto/json/of14/5-30-ofp_port_stats_reply.packet.json
+++ /dev/null
@@ -1,113 +0,0 @@
-{
- "OFPPortStatsReply": {
- "body": [
- {
- "OFPPortStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 224,
- "port_no": 7,
- "properties": [
- {
- "OFPPortStatsPropEthernet": {
- "collisions": 0,
- "length": 40,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": 0
- }
- },
- {
- "OFPPortStatsPropOptical": {
- "bias_current": 300,
- "flags": 3,
- "length": 44,
- "rx_freq_lmda": 1500,
- "rx_grid_span": 500,
- "rx_offset": 700,
- "rx_pwr": 2000,
- "temperature": 273,
- "tx_freq_lmda": 1500,
- "tx_grid_span": 500,
- "tx_offset": 700,
- "tx_pwr": 2000,
- "type": 1
- }
- },
- {
- "OFPPortStatsPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortStatsPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortStatsPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "rx_bytes": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- },
- {
- "OFPPortStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 120,
- "port_no": 6,
- "properties": [
- {
- "OFPPortStatsPropEthernet": {
- "collisions": 0,
- "length": 40,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": 0
- }
- }
- ],
- "rx_bytes": 336,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- }
- ],
- "flags": 0,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-31-ofp_group_features_request.packet.json b/tests/unit/ofproto/json/of14/5-31-ofp_group_features_request.packet.json
deleted file mode 100644
index edba5dc5..00000000
--- a/tests/unit/ofproto/json/of14/5-31-ofp_group_features_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGroupFeaturesStatsRequest": {
- "flags": 0,
- "type": 8
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-32-ofp_group_features_reply.packet.json b/tests/unit/ofproto/json/of14/5-32-ofp_group_features_reply.packet.json
deleted file mode 100644
index f059f994..00000000
--- a/tests/unit/ofproto/json/of14/5-32-ofp_group_features_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "OFPGroupFeaturesStatsReply": {
- "body": {
- "OFPGroupFeaturesStats": {
- "actions": [
- 67082241,
- 67082241,
- 67082241,
- 67082241
- ],
- "capabilities": 5,
- "max_groups": [
- 16777216,
- 16777216,
- 16777216,
- 16777216
- ],
- "types": 15
- }
- },
- "flags": 0,
- "type": 8
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-33-ofp_group_desc_request.packet.json b/tests/unit/ofproto/json/of14/5-33-ofp_group_desc_request.packet.json
deleted file mode 100644
index bea140c2..00000000
--- a/tests/unit/ofproto/json/of14/5-33-ofp_group_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGroupDescStatsRequest": {
- "flags": 0,
- "type": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-34-ofp_group_desc_reply.packet.json b/tests/unit/ofproto/json/of14/5-34-ofp_group_desc_reply.packet.json
deleted file mode 100644
index c30d7da6..00000000
--- a/tests/unit/ofproto/json/of14/5-34-ofp_group_desc_reply.packet.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "OFPGroupDescStatsReply": {
- "body": [
- {
- "OFPGroupDescStats": {
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 2,
- "type": 0
- }
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- }
- ],
- "group_id": 1,
- "length": 40,
- "type": 0
- }
- }
- ],
- "flags": 0,
- "type": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-35-ofp_queue_stats_request.packet.json b/tests/unit/ofproto/json/of14/5-35-ofp_queue_stats_request.packet.json
deleted file mode 100644
index 7a12acc3..00000000
--- a/tests/unit/ofproto/json/of14/5-35-ofp_queue_stats_request.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "queue_id": 4294967295,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-36-ofp_queue_stats_reply.packet.json b/tests/unit/ofproto/json/of14/5-36-ofp_queue_stats_reply.packet.json
deleted file mode 100644
index 2c190977..00000000
--- a/tests/unit/ofproto/json/of14/5-36-ofp_queue_stats_reply.packet.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "OFPQueueStatsReply": {
- "body": [
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 104,
- "port_no": 7,
- "properties": [
- {
- "OFPQueueStatsPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPQueueStatsPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPQueueStatsPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 6,
- "properties": [],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 7,
- "properties": [],
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- }
- ],
- "flags": 0,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-37-ofp_port_status.packet.json b/tests/unit/ofproto/json/of14/5-37-ofp_port_status.packet.json
deleted file mode 100644
index b273ac22..00000000
--- a/tests/unit/ofproto/json/of14/5-37-ofp_port_status.packet.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "OFPPortStatus": {
- "desc": {
- "OFPPort": {
- "config": 0,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "length": 168,
- "name": "\u79c1\u306e\u30dd\u30fc\u30c8",
- "port_no": 7,
- "properties": [
- {
- "OFPPortDescPropEthernet": {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": 0
- }
- },
- {
- "OFPPortDescPropOptical": {
- "length": 40,
- "rx_grid_freq_lmda": 1500,
- "rx_max_freq_lmda": 2000,
- "rx_min_freq_lmda": 1000,
- "supported": 1,
- "tx_grid_freq_lmda": 1500,
- "tx_max_freq_lmda": 2000,
- "tx_min_freq_lmda": 1000,
- "tx_pwr_max": 2000,
- "tx_pwr_min": 1000,
- "type": 1
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "state": 4
- }
- },
- "reason": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-38-ofp_flow_removed.packet.json b/tests/unit/ofproto/json/of14/5-38-ofp_flow_removed.packet.json
deleted file mode 100644
index 994953e6..00000000
--- a/tests/unit/ofproto/json/of14/5-38-ofp_flow_removed.packet.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "OFPFlowRemoved": {
- "byte_count": 86,
- "cookie": 0,
- "duration_nsec": 48825000,
- "duration_sec": 3,
- "hard_timeout": 0,
- "idle_timeout": 3,
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "packet_count": 1,
- "priority": 65535,
- "reason": 0,
- "table_id": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-39-ofp_error_msg_experimenter.packet.json b/tests/unit/ofproto/json/of14/5-39-ofp_error_msg_experimenter.packet.json
deleted file mode 100644
index 37bfb6a9..00000000
--- a/tests/unit/ofproto/json/of14/5-39-ofp_error_msg_experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPErrorExperimenterMsg": {
- "data": "amlra2VuIGRhdGE=",
- "exp_type": 60000,
- "experimenter": 999999,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-4-ofp_packet_in.packet.json b/tests/unit/ofproto/json/of14/5-4-ofp_packet_in.packet.json
deleted file mode 100644
index b281edd7..00000000
--- a/tests/unit/ofproto/json/of14/5-4-ofp_packet_in.packet.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 2,
- "cookie": 283686884868096,
- "data": "////////8gukffjqCAYAAQgABgQAAfILpH346goAAAEAAAAAAAAKAAAD",
- "match": {
- "OFPMatch": {
- "length": 80,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 6
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 3,
- "table_id": 1,
- "total_len": 42
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-40-ofp_get_async_request.packet.json b/tests/unit/ofproto/json/of14/5-40-ofp_get_async_request.packet.json
deleted file mode 100644
index 7daa5a0f..00000000
--- a/tests/unit/ofproto/json/of14/5-40-ofp_get_async_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPGetAsyncRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of14/5-41-ofp_get_async_reply.packet.json b/tests/unit/ofproto/json/of14/5-41-ofp_get_async_reply.packet.json
deleted file mode 100644
index 82c9e794..00000000
--- a/tests/unit/ofproto/json/of14/5-41-ofp_get_async_reply.packet.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "OFPGetAsyncReply": {
- "properties": [
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 0
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 1
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 2
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 3
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 4
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 5
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 6
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 7
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 8
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 9
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 10
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 11
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-42-ofp_set_async.packet.json b/tests/unit/ofproto/json/of14/5-42-ofp_set_async.packet.json
deleted file mode 100644
index 0802c14e..00000000
--- a/tests/unit/ofproto/json/of14/5-42-ofp_set_async.packet.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "OFPSetAsync": {
- "properties": [
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 0
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 1
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 2
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 3
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 4
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 5
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 6
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 7
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 8
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 9
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 10
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 11
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-43-ofp_meter_mod.packet.json b/tests/unit/ofproto/json/of14/5-43-ofp_meter_mod.packet.json
deleted file mode 100644
index eba4540a..00000000
--- a/tests/unit/ofproto/json/of14/5-43-ofp_meter_mod.packet.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "OFPMeterMod": {
- "bands": [
- {
- "OFPMeterBandDrop": {
- "burst_size": 10,
- "len": 16,
- "rate": 1000,
- "type": 1
- }
- },
- {
- "OFPMeterBandDscpRemark": {
- "burst_size": 10,
- "len": 16,
- "prec_level": 1,
- "rate": 1000,
- "type": 2
- }
- },
- {
- "OFPMeterBandExperimenter": {
- "burst_size": 10,
- "experimenter": 999,
- "len": 16,
- "rate": 1000,
- "type": 65535
- }
- }
- ],
- "command": 0,
- "flags": 14,
- "meter_id": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-44-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of14/5-44-ofp_flow_mod.packet.json
deleted file mode 100644
index b8c28362..00000000
--- a/tests/unit/ofproto/json/of14/5-44-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionMeter": {
- "len": 8,
- "meter_id": 1,
- "type": 6
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 3
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-45-ofp_meter_config_request.packet.json b/tests/unit/ofproto/json/of14/5-45-ofp_meter_config_request.packet.json
deleted file mode 100644
index 4703588e..00000000
--- a/tests/unit/ofproto/json/of14/5-45-ofp_meter_config_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterConfigStatsRequest": {
- "flags": 0,
- "meter_id": 4294967295,
- "type": 10
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-46-ofp_meter_config_reply.packet.json b/tests/unit/ofproto/json/of14/5-46-ofp_meter_config_reply.packet.json
deleted file mode 100644
index 08cc97e6..00000000
--- a/tests/unit/ofproto/json/of14/5-46-ofp_meter_config_reply.packet.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "OFPMeterConfigStatsReply": {
- "body": [
- {
- "OFPMeterConfigStats": {
- "bands": [
- {
- "OFPMeterBandDrop": {
- "burst_size": 10,
- "len": 16,
- "rate": 1000,
- "type": 1
- }
- }
- ],
- "flags": 14,
- "length": 24,
- "meter_id": 100
- }
- }
- ],
- "flags": 0,
- "type": 10
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-47-ofp_meter_stats_request.packet.json b/tests/unit/ofproto/json/of14/5-47-ofp_meter_stats_request.packet.json
deleted file mode 100644
index 8d45799b..00000000
--- a/tests/unit/ofproto/json/of14/5-47-ofp_meter_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterStatsRequest": {
- "flags": 0,
- "meter_id": 4294967295,
- "type": 9
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-48-ofp_meter_stats_reply.packet.json b/tests/unit/ofproto/json/of14/5-48-ofp_meter_stats_reply.packet.json
deleted file mode 100644
index b4fd8226..00000000
--- a/tests/unit/ofproto/json/of14/5-48-ofp_meter_stats_reply.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPMeterStatsReply": {
- "body": [
- {
- "OFPMeterStats": {
- "band_stats": [
- {
- "OFPMeterBandStats": {
- "byte_band_count": 0,
- "packet_band_count": 0
- }
- }
- ],
- "byte_in_count": 0,
- "duration_nsec": 480000,
- "duration_sec": 0,
- "flow_count": 0,
- "len": 56,
- "meter_id": 100,
- "packet_in_count": 0
- }
- }
- ],
- "flags": 0,
- "type": 9
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-49-ofp_meter_features_request.packet.json b/tests/unit/ofproto/json/of14/5-49-ofp_meter_features_request.packet.json
deleted file mode 100644
index 7363a342..00000000
--- a/tests/unit/ofproto/json/of14/5-49-ofp_meter_features_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPMeterFeaturesStatsRequest": {
- "flags": 0,
- "type": 11
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-5-ofp_features_request.packet.json b/tests/unit/ofproto/json/of14/5-5-ofp_features_request.packet.json
deleted file mode 100644
index 8f48ad5a..00000000
--- a/tests/unit/ofproto/json/of14/5-5-ofp_features_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPFeaturesRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of14/5-50-ofp_meter_features_reply.packet.json b/tests/unit/ofproto/json/of14/5-50-ofp_meter_features_reply.packet.json
deleted file mode 100644
index e3f6918f..00000000
--- a/tests/unit/ofproto/json/of14/5-50-ofp_meter_features_reply.packet.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "OFPMeterFeaturesStatsReply": {
- "body": [
- {
- "OFPMeterFeaturesStats": {
- "band_types": 2147483654,
- "capabilities": 15,
- "max_bands": 255,
- "max_color": 0,
- "max_meter": 16777216
- }
- }
- ],
- "flags": 0,
- "type": 11
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-51-ofp_port_desc_request.packet.json b/tests/unit/ofproto/json/of14/5-51-ofp_port_desc_request.packet.json
deleted file mode 100644
index f166c34a..00000000
--- a/tests/unit/ofproto/json/of14/5-51-ofp_port_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPPortDescStatsRequest": {
- "flags": 0,
- "type": 13
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-52-ofp_port_desc_reply.packet.json b/tests/unit/ofproto/json/of14/5-52-ofp_port_desc_reply.packet.json
deleted file mode 100644
index c281c0f8..00000000
--- a/tests/unit/ofproto/json/of14/5-52-ofp_port_desc_reply.packet.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "OFPPortDescStatsReply": {
- "body": [
- {
- "OFPPort": {
- "config": 0,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "length": 168,
- "name": "Port7",
- "port_no": 7,
- "properties": [
- {
- "OFPPortDescPropEthernet": {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": 0
- }
- },
- {
- "OFPPortDescPropOptical": {
- "length": 40,
- "rx_grid_freq_lmda": 1500,
- "rx_max_freq_lmda": 2000,
- "rx_min_freq_lmda": 1000,
- "supported": 1,
- "tx_grid_freq_lmda": 1500,
- "tx_max_freq_lmda": 2000,
- "tx_min_freq_lmda": 1000,
- "tx_pwr_max": 2000,
- "tx_pwr_min": 1000,
- "type": 1
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "state": 4
- }
- },
- {
- "OFPPort": {
- "config": 0,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "length": 72,
- "name": "Port6",
- "port_no": 6,
- "properties": [
- {
- "OFPPortDescPropEthernet": {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": 0
- }
- }
- ],
- "state": 4
- }
- }
- ],
- "flags": 0,
- "type": 13
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-53-ofp_table_features_request.packet.json b/tests/unit/ofproto/json/of14/5-53-ofp_table_features_request.packet.json
deleted file mode 100644
index 2a1a4308..00000000
--- a/tests/unit/ofproto/json/of14/5-53-ofp_table_features_request.packet.json
+++ /dev/null
@@ -1,15945 +0,0 @@
-{
- "OFPTableFeaturesStatsRequest": {
- "body": [
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1168,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x00",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 258,
- "table_ids": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65534
- }
- }
- ],
- "table_id": 0
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1112,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x01",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 257,
- "table_ids": [
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 1
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x02",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 256,
- "table_ids": [
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 2
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x03",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 255,
- "table_ids": [
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 3
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x04",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 254,
- "table_ids": [
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 4
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x05",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 253,
- "table_ids": [
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 5
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x06",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 252,
- "table_ids": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 6
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x07",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 251,
- "table_ids": [
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 7
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x08",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 250,
- "table_ids": [
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 8
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x09",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 249,
- "table_ids": [
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 9
- }
- }
- ],
- "flags": 1,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-54-ofp_table_features_reply.packet.json b/tests/unit/ofproto/json/of14/5-54-ofp_table_features_reply.packet.json
deleted file mode 100644
index ea056e8f..00000000
--- a/tests/unit/ofproto/json/of14/5-54-ofp_table_features_reply.packet.json
+++ /dev/null
@@ -1,15945 +0,0 @@
-{
- "OFPTableFeaturesStatsReply": {
- "body": [
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1168,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "\u79c1\u306e\u30c6\u30fc\u30d6\u30eb",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 258,
- "table_ids": [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65534
- }
- },
- {
- "OFPTableFeaturePropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65534
- }
- }
- ],
- "table_id": 0
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1112,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x01",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 257,
- "table_ids": [
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 1
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x02",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 256,
- "table_ids": [
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 2
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x03",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 255,
- "table_ids": [
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 3
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x04",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 254,
- "table_ids": [
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 4
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x05",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 253,
- "table_ids": [
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 5
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x06",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 252,
- "table_ids": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 6
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x07",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 251,
- "table_ids": [
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 7
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x08",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 250,
- "table_ids": [
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 8
- }
- },
- {
- "OFPTableFeaturesStats": {
- "config": 0,
- "length": 1104,
- "max_entries": 16777216,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "Flow Table 0x09",
- "properties": [
- {
- "OFPTableFeaturePropInstructions": {
- "instruction_ids": [
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 1
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 2
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 3
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 4
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 5
- }
- },
- {
- "OFPInstructionId": {
- "len": 4,
- "type": 6
- }
- }
- ],
- "length": 28,
- "type": 0
- }
- },
- {
- "OFPTableFeaturePropNextTables": {
- "length": 249,
- "table_ids": [
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30,
- 31,
- 32,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 57,
- 58,
- 59,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 120,
- 121,
- 122,
- 123,
- 124,
- 125,
- 126,
- 127,
- 128,
- 129,
- 130,
- 131,
- 132,
- 133,
- 134,
- 135,
- 136,
- 137,
- 138,
- 139,
- 140,
- 141,
- 142,
- 143,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 151,
- 152,
- 153,
- 154,
- 155,
- 156,
- 157,
- 158,
- 159,
- 160,
- 161,
- 162,
- 163,
- 164,
- 165,
- 166,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 174,
- 175,
- 176,
- 177,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 192,
- 193,
- 194,
- 195,
- 196,
- 197,
- 198,
- 199,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 207,
- 208,
- 209,
- 210,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 223,
- 224,
- 225,
- 226,
- 227,
- 228,
- 229,
- 230,
- 231,
- 232,
- 233,
- 234,
- 235,
- 236,
- 237,
- 238,
- 239,
- 240,
- 241,
- 242,
- 243,
- 244,
- 245,
- 246,
- 247,
- 248,
- 249,
- 250,
- 251,
- 252,
- 253,
- 254
- ],
- "type": 2
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 4
- }
- },
- {
- "OFPTableFeaturePropActions": {
- "action_ids": [
- {
- "OFPActionId": {
- "len": 4,
- "type": 0
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 22
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 21
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 15
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 16
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 23
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 24
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 11
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 12
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 17
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 18
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 19
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 20
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 26
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 27
- }
- },
- {
- "OFPActionId": {
- "len": 4,
- "type": 25
- }
- }
- ],
- "length": 68,
- "type": 6
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 8
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 10
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 12
- }
- },
- {
- "OFPTableFeaturePropOxm": {
- "length": 152,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "in_port"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "metadata"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "eth_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_vid"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "vlan_pcp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_dscp"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_ecn"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ip_proto"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv4_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "tcp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "udp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "sctp_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv4_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_op"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_spa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tpa"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_sha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "arp_tha"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_dst"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_flabel"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_type"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "icmpv6_code"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_target"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_sll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "ipv6_nd_tll"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_label"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_tc"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "mpls_bos"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": 0,
- "length": 0,
- "type": "pbb_isid"
- }
- }
- ],
- "type": 14
- }
- }
- ],
- "table_id": 9
- }
- }
- ],
- "flags": 1,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-55-ofp_group_stats_request.packet.json b/tests/unit/ofproto/json/of14/5-55-ofp_group_stats_request.packet.json
deleted file mode 100644
index b200a81c..00000000
--- a/tests/unit/ofproto/json/of14/5-55-ofp_group_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPGroupStatsRequest": {
- "flags": 0,
- "group_id": 4294967292,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-56-ofp_group_stats_reply.packet.json b/tests/unit/ofproto/json/of14/5-56-ofp_group_stats_reply.packet.json
deleted file mode 100644
index cb979e54..00000000
--- a/tests/unit/ofproto/json/of14/5-56-ofp_group_stats_reply.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPGroupStatsReply": {
- "body": [
- {
- "OFPGroupStats": {
- "bucket_stats": [
- {
- "OFPBucketCounter": {
- "byte_count": 2345,
- "packet_count": 234
- }
- }
- ],
- "byte_count": 12345,
- "duration_nsec": 609036000,
- "duration_sec": 9,
- "group_id": 1,
- "length": 56,
- "packet_count": 123,
- "ref_count": 2
- }
- }
- ],
- "flags": 0,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-57-ofp_packet_in.packet.json b/tests/unit/ofproto/json/of14/5-57-ofp_packet_in.packet.json
deleted file mode 100644
index d326b907..00000000
--- a/tests/unit/ofproto/json/of14/5-57-ofp_packet_in.packet.json
+++ /dev/null
@@ -1,298 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 4026531840,
- "cookie": 283686884868096,
- "data": "",
- "match": {
- "OFPMatch": {
- "length": 329,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 84281096
- }
- },
- {
- "OXMTlv": {
- "field": "in_phy_port",
- "mask": null,
- "value": 16909060
- }
- },
- {
- "OXMTlv": {
- "field": "metadata",
- "mask": null,
- "value": 283686952306183
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 999
- }
- },
- {
- "OXMTlv": {
- "field": "ip_dscp",
- "mask": null,
- "value": 9
- }
- },
- {
- "OXMTlv": {
- "field": "ip_ecn",
- "mask": null,
- "value": 3
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 99
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_src",
- "mask": null,
- "value": 8080
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_dst",
- "mask": null,
- "value": 18080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_src",
- "mask": null,
- "value": 28080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_dst",
- "mask": null,
- "value": 55936
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_src",
- "mask": null,
- "value": 48080
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_dst",
- "mask": null,
- "value": 59328
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_type",
- "mask": null,
- "value": 100
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_code",
- "mask": null,
- "value": 101
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_src",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe48:28a5"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_dst",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe05:b7dc"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_flabel",
- "mask": null,
- "value": 541473
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_type",
- "mask": null,
- "value": 200
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_code",
- "mask": null,
- "value": 201
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_target",
- "mask": null,
- "value": "fe80::a60:6eff:fe7f:74e7"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_sll",
- "mask": null,
- "value": "00:00:00:00:02:9a"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_tll",
- "mask": null,
- "value": "00:00:00:00:02:2b"
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_label",
- "mask": null,
- "value": 624485
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_tc",
- "mask": null,
- "value": 5
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_bos",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_isid",
- "mask": null,
- "value": 11259375
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 651061555542690057
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_exthdr",
- "mask": null,
- "value": 500
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 0,
- "table_id": 200,
- "total_len": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-58-ofp_flow_mod.packet.json b/tests/unit/ofproto/json/of14/5-58-ofp_flow_mod.packet.json
deleted file mode 100644
index 7095f751..00000000
--- a/tests/unit/ofproto/json/of14/5-58-ofp_flow_mod.packet.json
+++ /dev/null
@@ -1,305 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [],
- "match": {
- "OFPMatch": {
- "length": 329,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 84281096
- }
- },
- {
- "OXMTlv": {
- "field": "in_phy_port",
- "mask": null,
- "value": 16909060
- }
- },
- {
- "OXMTlv": {
- "field": "metadata",
- "mask": null,
- "value": 283686952306183
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "ff:ff:ff:ff:ff:ff"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 999
- }
- },
- {
- "OXMTlv": {
- "field": "ip_dscp",
- "mask": null,
- "value": 9
- }
- },
- {
- "OXMTlv": {
- "field": "ip_ecn",
- "mask": null,
- "value": 3
- }
- },
- {
- "OXMTlv": {
- "field": "ip_proto",
- "mask": null,
- "value": 99
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_src",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "1.2.3.4"
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_src",
- "mask": null,
- "value": 8080
- }
- },
- {
- "OXMTlv": {
- "field": "tcp_dst",
- "mask": null,
- "value": 18080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_src",
- "mask": null,
- "value": 28080
- }
- },
- {
- "OXMTlv": {
- "field": "udp_dst",
- "mask": null,
- "value": 55936
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_src",
- "mask": null,
- "value": 48080
- }
- },
- {
- "OXMTlv": {
- "field": "sctp_dst",
- "mask": null,
- "value": 59328
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_type",
- "mask": null,
- "value": 100
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv4_code",
- "mask": null,
- "value": 101
- }
- },
- {
- "OXMTlv": {
- "field": "arp_op",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "arp_spa",
- "mask": null,
- "value": "10.0.0.1"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tpa",
- "mask": null,
- "value": "10.0.0.3"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_sha",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "OXMTlv": {
- "field": "arp_tha",
- "mask": null,
- "value": "00:00:00:00:00:00"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_src",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe48:28a5"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_dst",
- "mask": null,
- "value": "fe80::f00b:a4ff:fe05:b7dc"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_flabel",
- "mask": null,
- "value": 541473
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_type",
- "mask": null,
- "value": 200
- }
- },
- {
- "OXMTlv": {
- "field": "icmpv6_code",
- "mask": null,
- "value": 201
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_target",
- "mask": null,
- "value": "fe80::a60:6eff:fe7f:74e7"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_sll",
- "mask": null,
- "value": "00:00:00:00:02:9a"
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_nd_tll",
- "mask": null,
- "value": "00:00:00:00:02:2b"
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_label",
- "mask": null,
- "value": 624485
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_tc",
- "mask": null,
- "value": 5
- }
- },
- {
- "OXMTlv": {
- "field": "mpls_bos",
- "mask": null,
- "value": 1
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_isid",
- "mask": null,
- "value": 11259375
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 651061555542690057
- }
- },
- {
- "OXMTlv": {
- "field": "ipv6_exthdr",
- "mask": null,
- "value": 500
- }
- },
- {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-59-ofp_experimenter_request.packet.json b/tests/unit/ofproto/json/of14/5-59-ofp_experimenter_request.packet.json
deleted file mode 100644
index 93af3039..00000000
--- a/tests/unit/ofproto/json/of14/5-59-ofp_experimenter_request.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPExperimenterStatsRequest": {
- "data": "aG9nZWhvZ2U=",
- "exp_type": 3405678728,
- "experimenter": 3735928495,
- "flags": 0,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-6-ofp_features_reply.packet.json b/tests/unit/ofproto/json/of14/5-6-ofp_features_reply.packet.json
deleted file mode 100644
index 12e8744a..00000000
--- a/tests/unit/ofproto/json/of14/5-6-ofp_features_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPSwitchFeatures": {
- "auxiliary_id": 99,
- "capabilities": 79,
- "datapath_id": 9210263729383,
- "n_buffers": 0,
- "n_tables": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-60-ofp_experimenter_reply.packet.json b/tests/unit/ofproto/json/of14/5-60-ofp_experimenter_reply.packet.json
deleted file mode 100644
index 1eb06b84..00000000
--- a/tests/unit/ofproto/json/of14/5-60-ofp_experimenter_reply.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "OFPExperimenterStatsReply": {
- "body": {
- "OFPExperimenterMultipart": {
- "data": "dGVzdGRhdGE5OTk5OTk5OQ==",
- "exp_type": 3405674359,
- "experimenter": 3735928495
- }
- },
- "flags": 0,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-61-ofp_table_desc_request.packet.json b/tests/unit/ofproto/json/of14/5-61-ofp_table_desc_request.packet.json
deleted file mode 100644
index f5a4cde0..00000000
--- a/tests/unit/ofproto/json/of14/5-61-ofp_table_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableDescStatsRequest": {
- "flags": 0,
- "type": 14
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-62-ofp_table_desc_reply.packet.json b/tests/unit/ofproto/json/of14/5-62-ofp_table_desc_reply.packet.json
deleted file mode 100644
index 1f3d7142..00000000
--- a/tests/unit/ofproto/json/of14/5-62-ofp_table_desc_reply.packet.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "OFPTableDescStatsReply": {
- "body": [
- {
- "OFPTableDesc": {
- "config": 0,
- "length": 24,
- "properties": [
- {
- "OFPTableModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- }
- ],
- "table_id": 7
- }
- },
- {
- "OFPTableDesc": {
- "config": 0,
- "length": 80,
- "properties": [
- {
- "OFPTableModPropEviction": {
- "flags": 0,
- "length": 8,
- "type": 2
- }
- },
- {
- "OFPTableModPropVacancy": {
- "length": 8,
- "type": 3,
- "vacancy": 0,
- "vacancy_down": 0,
- "vacancy_up": 0
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "table_id": 8
- }
- }
- ],
- "flags": 0,
- "type": 14
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-63-ofp_queue_desc_request.packet.json b/tests/unit/ofproto/json/of14/5-63-ofp_queue_desc_request.packet.json
deleted file mode 100644
index d58a2b05..00000000
--- a/tests/unit/ofproto/json/of14/5-63-ofp_queue_desc_request.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueDescStatsRequest": {
- "flags": 0,
- "port_no": 7,
- "queue_id": 4294967295,
- "type": 15
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-64-ofp_queue_desc_reply.packet.json b/tests/unit/ofproto/json/of14/5-64-ofp_queue_desc_reply.packet.json
deleted file mode 100644
index 26c8f7d5..00000000
--- a/tests/unit/ofproto/json/of14/5-64-ofp_queue_desc_reply.packet.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "OFPQueueDescStatsReply": {
- "body": [
- {
- "OFPQueueDesc": {
- "len": 32,
- "port_no": 7,
- "properties": [
- {
- "OFPQueueDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- }
- ],
- "queue_id": 0
- }
- },
- {
- "OFPQueueDesc": {
- "len": 88,
- "port_no": 8,
- "properties": [
- {
- "OFPQueueDescPropMinRate": {
- "length": 8,
- "rate": 300,
- "type": 1
- }
- },
- {
- "OFPQueueDescPropMaxRate": {
- "length": 8,
- "rate": 900,
- "type": 2
- }
- },
- {
- "OFPQueueDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPQueueDescPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPQueueDescPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "queue_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 15
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-65-ofp_role_status.packet.json b/tests/unit/ofproto/json/of14/5-65-ofp_role_status.packet.json
deleted file mode 100644
index 08e46df3..00000000
--- a/tests/unit/ofproto/json/of14/5-65-ofp_role_status.packet.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "OFPRoleStatus": {
- "generation_id": 7,
- "properties": [
- {
- "OFPRolePropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPRolePropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPRolePropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "reason": 0,
- "role": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-66-ofp_flow_monitor_request.packet.json b/tests/unit/ofproto/json/of14/5-66-ofp_flow_monitor_request.packet.json
deleted file mode 100644
index aed7ddaa..00000000
--- a/tests/unit/ofproto/json/of14/5-66-ofp_flow_monitor_request.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPFlowMonitorRequest": {
- "command": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "monitor_flags": 15,
- "monitor_id": 100000000,
- "out_group": 4294967295,
- "out_port": 22,
- "table_id": 33,
- "type": 16
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-67-ofp_flow_monitor_reply.packet.json b/tests/unit/ofproto/json/of14/5-67-ofp_flow_monitor_reply.packet.json
deleted file mode 100644
index 8c028877..00000000
--- a/tests/unit/ofproto/json/of14/5-67-ofp_flow_monitor_reply.packet.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "OFPFlowMonitorReply": {
- "body": [
- {
- "OFPFlowUpdateFull": {
- "cookie": 0,
- "event": 0,
- "hard_timeout": 700,
- "idle_timeout": 600,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 0,
- "port": 4294967290,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "length": 64,
- "match": {
- "OFPMatch": {
- "length": 10,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- }
- ],
- "type": 1
- }
- },
- "priority": 3,
- "reason": 0,
- "table_id": 0
- }
- },
- {
- "OFPFlowUpdateAbbrev": {
- "event": 4,
- "length": 8,
- "xid": 1234
- }
- },
- {
- "OFPFlowUpdatePaused": {
- "event": 5,
- "length": 8
- }
- }
- ],
- "flags": 0,
- "type": 16
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-68-ofp_table_status.packet.json b/tests/unit/ofproto/json/of14/5-68-ofp_table_status.packet.json
deleted file mode 100644
index fde5fb77..00000000
--- a/tests/unit/ofproto/json/of14/5-68-ofp_table_status.packet.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "OFPTableStatus": {
- "reason": 3,
- "table": {
- "OFPTableDesc": {
- "config": 0,
- "length": 80,
- "properties": [
- {
- "OFPTableModPropEviction": {
- "flags": 0,
- "length": 8,
- "type": 2
- }
- },
- {
- "OFPTableModPropVacancy": {
- "length": 8,
- "type": 3,
- "vacancy": 0,
- "vacancy_down": 0,
- "vacancy_up": 0
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "table_id": 8
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-69-ofp_bundle_ctrl_msg.packet.json b/tests/unit/ofproto/json/of14/5-69-ofp_bundle_ctrl_msg.packet.json
deleted file mode 100644
index 3e996eb5..00000000
--- a/tests/unit/ofproto/json/of14/5-69-ofp_bundle_ctrl_msg.packet.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "OFPBundleCtrlMsg": {
- "bundle_id": 1234,
- "flags": 1,
- "properties": [
- {
- "OFPBundlePropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPBundlePropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPBundlePropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-7-ofp_set_config.packet.json b/tests/unit/ofproto/json/of14/5-7-ofp_set_config.packet.json
deleted file mode 100644
index cd5398b7..00000000
--- a/tests/unit/ofproto/json/of14/5-7-ofp_set_config.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPSetConfig": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-70-ofp_bundle_add_msg.packet.json b/tests/unit/ofproto/json/of14/5-70-ofp_bundle_add_msg.packet.json
deleted file mode 100644
index 53e9f7ea..00000000
--- a/tests/unit/ofproto/json/of14/5-70-ofp_bundle_add_msg.packet.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "OFPBundleAddMsg": {
- "bundle_id": 1234,
- "flags": 1,
- "message": {
- "OFPEchoRequest": {
- "data": null
- }
- },
- "properties": [
- {
- "OFPBundlePropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPBundlePropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPBundlePropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-71-ofp_requestforward.packet.json b/tests/unit/ofproto/json/of14/5-71-ofp_requestforward.packet.json
deleted file mode 100644
index e2def4fc..00000000
--- a/tests/unit/ofproto/json/of14/5-71-ofp_requestforward.packet.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "OFPRequestForward": {
- "request": {
- "OFPGroupMod": {
- "buckets": [
- {
- "OFPBucket": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 2,
- "type": 0
- }
- }
- ],
- "len": 32,
- "watch_group": 1,
- "watch_port": 1,
- "weight": 1
- }
- }
- ],
- "command": 0,
- "group_id": 1,
- "type": 0
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of14/5-8-ofp_get_config_request.packet.json b/tests/unit/ofproto/json/of14/5-8-ofp_get_config_request.packet.json
deleted file mode 100644
index 06fe51f4..00000000
--- a/tests/unit/ofproto/json/of14/5-8-ofp_get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPGetConfigRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of14/5-9-ofp_get_config_reply.packet.json b/tests/unit/ofproto/json/of14/5-9-ofp_get_config_reply.packet.json
deleted file mode 100644
index 62b37b4d..00000000
--- a/tests/unit/ofproto/json/of14/5-9-ofp_get_config_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGetConfigReply": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of14/lib-ofctl-ofp_table_features_request.packet.json b/tests/unit/ofproto/json/of14/lib-ofctl-ofp_table_features_request.packet.json
deleted file mode 100644
index 6501de15..00000000
--- a/tests/unit/ofproto/json/of14/lib-ofctl-ofp_table_features_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPTableFeaturesStatsRequest": {
- "body": [],
- "flags": 0,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of14/libofproto-OFP14-ofp_packet_out_packet_library.packet.json b/tests/unit/ofproto/json/of14/libofproto-OFP14-ofp_packet_out_packet_library.packet.json
deleted file mode 100644
index b859650d..00000000
--- a/tests/unit/ofproto/json/of14/libofproto-OFP14-ofp_packet_out_packet_library.packet.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967292,
- "type": 0
- }
- }
- ],
- "actions_len": 16,
- "buffer_id": 4294967295,
- "data": {
- "Packet": {
- "protocols": [
- {
- "ethernet": {
- "dst": "f2:0b:a4:d0:3f:70",
- "ethertype": 2048,
- "src": "f2:0b:a4:7d:f8:ea"
- }
- },
- {
- "ipv4": {
- "csum": 44939,
- "dst": "10.0.0.2",
- "flags": 0,
- "header_length": 5,
- "identification": 63514,
- "offset": 0,
- "option": null,
- "proto": 1,
- "src": "10.0.0.1",
- "tos": 0,
- "total_length": 84,
- "ttl": 255,
- "version": 4
- }
- },
- {
- "icmp": {
- "code": 0,
- "csum": 520,
- "data": {
- "echo": {
- "data": "MdYCAAAAAACrjS0xAAAAABAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vAAAAAAAAAAA=",
- "id": 63328,
- "seq": 0
- }
- },
- "type": 8
- }
- }
- ]
- }
- },
- "in_port": 4294967293
- }
-}
diff --git a/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json b/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json
deleted file mode 100644
index 9626ceea..00000000
--- a/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_reply.packet.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- "OFPFlowDescStatsReply": {
- "body": [
- {
- "OFPFlowDesc": {
- "cookie": 1234605616436508552,
- "flags": 1,
- "hard_timeout": 255,
- "idle_timeout": 255,
- "importance": 43690,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 2,
- "type": 1
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionMeter": {
- "len": 8,
- "meter_id": 2,
- "type": 29
- }
- }
- ],
- "len": 8,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionCopyField": {
- "type": 28,
- "len": 20,
- "n_bits": 32,
- "src_offset": 1,
- "dst_offset": 2,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": false,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": false,
- "length": 0,
- "type": "eth_dst"
- }
- }
- ]
- }
- }
- ],
- "len": 28,
- "type": 4
- }
- }
- ],
- "length": 84,
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "priority": 5,
- "stats": {
- "OFPStats": {
- "length": 12,
- "oxs_fields": [
- {
- "OXSTlv": {
- "field": "flow_count",
- "value": 1
- }
- }
- ]
- }
- },
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json b/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json
deleted file mode 100644
index 62e46c65..00000000
--- a/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_desc_request.packet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "OFPFlowDescStatsRequest": {
- "cookie": 1234605616436508552,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 1,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_mod.packet.json b/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_mod.packet.json
deleted file mode 100644
index 7fc12ed3..00000000
--- a/tests/unit/ofproto/json/of15/lib-ofctl-OFP15-flow_mod.packet.json
+++ /dev/null
@@ -1,234 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 258
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionCopyTtlOut": {
- "len": 8,
- "type": 11
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionPopPbb": {
- "len": 8,
- "type": 27
- }
- },
- {
- "OFPActionPushPbb": {
- "ethertype": 4660,
- "len": 8,
- "type": 26
- }
- },
- {
- "OFPActionPopMpls": {
- "ethertype": 39030,
- "len": 8,
- "type": 20
- }
- },
- {
- "OFPActionPushMpls": {
- "ethertype": 34887,
- "len": 8,
- "type": 19
- }
- },
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionPushVlan": {
- "ethertype": 33024,
- "len": 8,
- "type": 17
- }
- },
- {
- "OFPActionDecMplsTtl": {
- "len": 8,
- "type": 16
- }
- },
- {
- "OFPActionSetMplsTtl": {
- "len": 8,
- "mpls_ttl": 10,
- "type": 15
- }
- },
- {
- "OFPActionDecNwTtl": {
- "len": 8,
- "type": 24
- }
- },
- {
- "OFPActionSetNwTtl": {
- "len": 8,
- "nw_ttl": 10,
- "type": 23
- }
- },
- {
- "OFPActionExperimenterUnknown": {
- "data": "AAECAwQFBgc=",
- "experimenter": 101,
- "len": 16,
- "type": 65535
- }
- },
- {
- "OFPActionSetQueue": {
- "len": 8,
- "queue_id": 3,
- "type": 21
- }
- },
- {
- "OFPActionMeter": {
- "len": 8,
- "meter_id": 2,
- "type": 29
- }
- },
- {
- "OFPActionGroup": {
- "group_id": 99,
- "len": 8,
- "type": 22
- }
- },
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- }
- ],
- "len": 176,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "01:02:03:04:05:06"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionCopyField": {
- "type": 28,
- "len": 20,
- "n_bits": 32,
- "src_offset": 1,
- "dst_offset": 2,
- "oxm_ids": [
- {
- "OFPOxmId": {
- "hasmask": false,
- "length": 0,
- "type": "eth_src"
- }
- },
- {
- "OFPOxmId": {
- "hasmask": false,
- "length": 0,
- "type": "eth_dst"
- }
- }
- ]
- }
- }
- ],
- "len": 60,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/lib-ofctl-ofp_queue_stats_request.packet.json b/tests/unit/ofproto/json/of15/lib-ofctl-ofp_queue_stats_request.packet.json
deleted file mode 100644
index 41d30f70..00000000
--- a/tests/unit/ofproto/json/of15/lib-ofctl-ofp_queue_stats_request.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "queue_id": 4294967295,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of15/lib-ofctl-ofp_table_features_request.packet.json b/tests/unit/ofproto/json/of15/lib-ofctl-ofp_table_features_request.packet.json
deleted file mode 100644
index 6501de15..00000000
--- a/tests/unit/ofproto/json/of15/lib-ofctl-ofp_table_features_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPTableFeaturesStatsRequest": {
- "body": [],
- "flags": 0,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json
deleted file mode 100644
index 07cb6c2f..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "OFPAggregateStatsReply": {
- "body": {
- "OFPAggregateStats": {
- "length": 16,
- "stats": {
- "OFPStats": {
- "length": 12,
- "oxs_fields": [
- {
- "OXSTlv": {
- "field": "flow_count",
- "value": 1
- }
- }
- ]
- }
- }
- }
- },
- "flags": 0,
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
deleted file mode 100644
index 248131fd..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPAggregateStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 255,
- "type": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json
deleted file mode 100644
index 11f8cfcc..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierReply": {}
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json
deleted file mode 100644
index 2aae9ec3..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPBarrierRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_add.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_add.packet.json
deleted file mode 100644
index 5a1ddb19..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_add.packet.json
+++ /dev/null
@@ -1,200 +0,0 @@
-{
- "OFPBundleAddMsg": {
- "bundle_id": 99999999,
- "flags": 1,
- "message": {
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 39032,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "NXActionLearn": {
- "cookie": 0,
- "experimenter": 8992,
- "fin_hard_timeout": 0,
- "fin_idle_timeout": 0,
- "flags": 0,
- "hard_timeout": 300,
- "idle_timeout": 0,
- "len": 96,
- "priority": 1,
- "specs": [
- {
- "NXFlowSpecMatch": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": [
- "vlan_vid",
- 0
- ]
- }
- },
- {
- "NXFlowSpecMatch": {
- "dst": [
- "eth_dst_nxm",
- 0
- ],
- "n_bits": 48,
- "src": [
- "eth_src_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": 0
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "tunnel_id_nxm",
- 0
- ],
- "n_bits": 64,
- "src": [
- "tunnel_id_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecOutput": {
- "dst": "",
- "n_bits": 32,
- "src": [
- "in_port",
- 0
- ]
- }
- }
- ],
- "subtype": 16,
- "table_id": 99,
- "type": 65535
- }
- }
- ],
- "len": 128,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 2
- }
- },
- "properties": []
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_ctrl.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_ctrl.packet.json
deleted file mode 100644
index d7e858fd..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_ctrl.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPBundleCtrlMsg": {
- "bundle_id": 99999999,
- "flags": 1,
- "properties": [],
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_reply.packet.json
deleted file mode 100644
index 943d7857..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_reply.packet.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "OFPBundleFeaturesStatsReply": {
- "body": {
- "OFPBundleFeaturesStats": {
- "capabilities": 7,
- "properties": [
- {
- "OFPBundleFeaturesPropTime": {
- "length": 72,
- "sched_accuracy": {
- "OFPTime": {
- "nanoseconds": 1717986918,
- "seconds": 6148914691236517205
- }
- },
- "sched_max_future": {
- "OFPTime": {
- "nanoseconds": 2290649224,
- "seconds": 8608480567731124087
- }
- },
- "sched_max_past": {
- "OFPTime": {
- "nanoseconds": 2863311530,
- "seconds": 11068046444225730969
- }
- },
- "timestamp": {
- "OFPTime": {
- "nanoseconds": 3435973836,
- "seconds": 13527612320720337851
- }
- },
- "type": 1
- }
- }
- ]
- }
- },
- "flags": 0,
- "type": 19
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_request.packet.json
deleted file mode 100644
index 325181c1..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-bundle_features_request.packet.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "OFPBundleFeaturesStatsRequest": {
- "feature_request_flags": 3,
- "flags": 0,
- "properties": [
- {
- "OFPBundleFeaturesPropTime": {
- "length": 72,
- "sched_accuracy": {
- "OFPTime": {
- "nanoseconds": 1717986918,
- "seconds": 6148914691236517205
- }
- },
- "sched_max_future": {
- "OFPTime": {
- "nanoseconds": 2290649224,
- "seconds": 8608480567731124087
- }
- },
- "sched_max_past": {
- "OFPTime": {
- "nanoseconds": 2863311530,
- "seconds": 11068046444225730969
- }
- },
- "timestamp": {
- "OFPTime": {
- "nanoseconds": 3435973836,
- "seconds": 13527612320720337851
- }
- },
- "type": 1
- }
- }
- ],
- "type": 19
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status.packet.json
deleted file mode 100644
index d9a74bfe..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status.packet.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "OFPControllerStatus": {
- "status": {
- "OFPControllerStatusStats": {
- "channel_status": 1,
- "length": 48,
- "properties": [
- {
- "OFPControllerStatusPropUri": {
- "length": 26,
- "type": 0,
- "uri": "tls:192.168.34.23:6653"
- }
- }
- ],
- "reason": 1,
- "role": 1,
- "short_id": 65535
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_reply.packet.json
deleted file mode 100644
index 002f0f1d..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_reply.packet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "OFPControllerStatusStatsReply": {
- "body": [
- {
- "OFPControllerStatusStats": {
- "channel_status": 1,
- "length": 48,
- "properties": [
- {
- "OFPControllerStatusPropUri": {
- "length": 26,
- "type": 0,
- "uri": "tls:192.168.34.23:6653"
- }
- }
- ],
- "reason": 1,
- "role": 1,
- "short_id": 65535
- }
- }
- ],
- "flags": 0,
- "type": 18
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_request.packet.json
deleted file mode 100644
index d9a8ef8b..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-controller_status_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPControllerStatusStatsRequest": {
- "flags": 0,
- "type": 18
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json
deleted file mode 100644
index 26e5dc2d..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPDescStatsReply": {
- "body": {
- "OFPDescStats": {
- "dp_desc": "dp",
- "hw_desc": "hw",
- "mfr_desc": "mfr",
- "serial_num": "serial",
- "sw_desc": "sw"
- }
- },
- "flags": 0,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json
deleted file mode 100644
index 5b23f8bc..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPDescStatsRequest": {
- "flags": 0,
- "type": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json
deleted file mode 100644
index 011bd6de..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoReply": {
- "data": ""
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json
deleted file mode 100644
index 501a8479..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "OFPEchoRequest": {
- "data": ""
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json
deleted file mode 100644
index b76f05c7..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPErrorMsg": {
- "code": 6,
- "data": "Bg4ACAAAAAA=",
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json
deleted file mode 100644
index 37bfb6a9..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPErrorExperimenterMsg": {
- "data": "amlra2VuIGRhdGE=",
- "exp_type": 60000,
- "experimenter": 999999,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter.packet.json
deleted file mode 100644
index 0e749179..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPExperimenter": {
- "data": "bmF6bw==",
- "exp_type": 123456789,
- "experimenter": 98765432
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json
deleted file mode 100644
index 1eb06b84..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "OFPExperimenterStatsReply": {
- "body": {
- "OFPExperimenterMultipart": {
- "data": "dGVzdGRhdGE5OTk5OTk5OQ==",
- "exp_type": 3405674359,
- "experimenter": 3735928495
- }
- },
- "flags": 0,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json
deleted file mode 100644
index 93af3039..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPExperimenterStatsRequest": {
- "data": "aG9nZWhvZ2U=",
- "exp_type": 3405678728,
- "experimenter": 3735928495,
- "flags": 0,
- "type": 65535
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json
deleted file mode 100644
index 3d828093..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "OFPSwitchFeatures": {
- "auxiliary_id": 0,
- "capabilities": 79,
- "datapath_id": 1,
- "n_buffers": 255,
- "n_tables": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json
deleted file mode 100644
index 8f48ad5a..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPFeaturesRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_reply.packet.json
deleted file mode 100644
index 3caab6f9..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_reply.packet.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "OFPFlowDescStatsReply": {
- "body": [
- {
- "OFPFlowDesc": {
- "cookie": 1234605616436508552,
- "flags": 1,
- "hard_timeout": 255,
- "idle_timeout": 255,
- "importance": 43690,
- "instructions": [
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 2,
- "type": 1
- }
- }
- ],
- "length": 64,
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "priority": 5,
- "stats": {
- "OFPStats": {
- "length": 12,
- "oxs_fields": [
- {
- "OXSTlv": {
- "field": "flow_count",
- "value": 1
- }
- }
- ]
- }
- },
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_request.packet.json
deleted file mode 100644
index 62e46c65..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_desc_request.packet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "OFPFlowDescStatsRequest": {
- "cookie": 1234605616436508552,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 1,
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod.packet.json
deleted file mode 100644
index ac6dce7e..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod.packet.json
+++ /dev/null
@@ -1,193 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 39032,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "NXActionLearn": {
- "cookie": 0,
- "experimenter": 8992,
- "fin_hard_timeout": 0,
- "fin_idle_timeout": 0,
- "flags": 0,
- "hard_timeout": 300,
- "idle_timeout": 0,
- "len": 96,
- "priority": 1,
- "specs": [
- {
- "NXFlowSpecMatch": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": [
- "vlan_vid",
- 0
- ]
- }
- },
- {
- "NXFlowSpecMatch": {
- "dst": [
- "eth_dst_nxm",
- 0
- ],
- "n_bits": 48,
- "src": [
- "eth_src_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "vlan_vid",
- 0
- ],
- "n_bits": 12,
- "src": 0
- }
- },
- {
- "NXFlowSpecLoad": {
- "dst": [
- "tunnel_id_nxm",
- 0
- ],
- "n_bits": 64,
- "src": [
- "tunnel_id_nxm",
- 0
- ]
- }
- },
- {
- "NXFlowSpecOutput": {
- "dst": "",
- "n_bits": 32,
- "src": [
- "in_port",
- 0
- ]
- }
- }
- ],
- "subtype": 16,
- "table_id": 99,
- "type": 65535
- }
- }
- ],
- "len": 128,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 2
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_conjunction.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_conjunction.packet.json
deleted file mode 100644
index 6ca74d51..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_conjunction.packet.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 39032,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "NXActionConjunction": {
- "clause": 1,
- "experimenter": 8992,
- "id": 11259375,
- "len": 16,
- "n_clauses": 2,
- "subtype": 34,
- "type": 65535
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 70,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "aa:bb:cc:99:88:77"
- }
- },
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2048
- }
- },
- {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 5095
- }
- },
- {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.1"
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_match_conj.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_match_conj.packet.json
deleted file mode 100644
index 2d0b9ad4..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_match_conj.packet.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 0,
- "command": 0,
- "cookie": 1311768467463790320,
- "cookie_mask": 18446744073709551615,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 39032,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 32,
- "type": 4
- }
- },
- {
- "OFPInstructionGotoTable": {
- "len": 8,
- "table_id": 100,
- "type": 1
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "conj_id",
- "mask": null,
- "value": 11259375
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 0,
- "out_port": 0,
- "priority": 0,
- "table_id": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json
deleted file mode 100644
index 5f789d52..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_mod_no_nx.packet.json
+++ /dev/null
@@ -1,202 +0,0 @@
-{
- "OFPFlowMod": {
- "buffer_id": 65535,
- "command": 0,
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "hard_timeout": 0,
- "idle_timeout": 0,
- "importance": 0,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "vlan_vid",
- "mask": null,
- "value": 258
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionCopyTtlOut": {
- "len": 8,
- "type": 11
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionCopyTtlIn": {
- "len": 8,
- "type": 12
- }
- },
- {
- "OFPActionPopPbb": {
- "len": 8,
- "type": 27
- }
- },
- {
- "OFPActionPushPbb": {
- "ethertype": 4660,
- "len": 8,
- "type": 26
- }
- },
- {
- "OFPActionPopMpls": {
- "ethertype": 39030,
- "len": 8,
- "type": 20
- }
- },
- {
- "OFPActionPushMpls": {
- "ethertype": 34887,
- "len": 8,
- "type": 19
- }
- },
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionPushVlan": {
- "ethertype": 33024,
- "len": 8,
- "type": 17
- }
- },
- {
- "OFPActionDecMplsTtl": {
- "len": 8,
- "type": 16
- }
- },
- {
- "OFPActionSetMplsTtl": {
- "len": 8,
- "mpls_ttl": 10,
- "type": 15
- }
- },
- {
- "OFPActionDecNwTtl": {
- "len": 8,
- "type": 24
- }
- },
- {
- "OFPActionSetNwTtl": {
- "len": 8,
- "nw_ttl": 10,
- "type": 23
- }
- },
- {
- "OFPActionExperimenterUnknown": {
- "data": "AAECAwQFBgc=",
- "experimenter": 101,
- "len": 16,
- "type": 65535
- }
- },
- {
- "OFPActionSetQueue": {
- "len": 8,
- "queue_id": 3,
- "type": 21
- }
- },
- {
- "OFPActionGroup": {
- "group_id": 99,
- "len": 8,
- "type": 22
- }
- },
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 6,
- "type": 0
- }
- }
- ],
- "len": 176,
- "type": 3
- }
- },
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "01:02:03:04:05:06"
- }
- },
- "len": 16,
- "type": 25
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "pbb_uca",
- "mask": null,
- "value": 1
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "len": 40,
- "type": 4
- }
- }
- ],
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "priority": 123,
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json
deleted file mode 100644
index 8c028877..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "OFPFlowMonitorReply": {
- "body": [
- {
- "OFPFlowUpdateFull": {
- "cookie": 0,
- "event": 0,
- "hard_timeout": 700,
- "idle_timeout": 600,
- "instructions": [
- {
- "OFPInstructionActions": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 0,
- "port": 4294967290,
- "type": 0
- }
- }
- ],
- "len": 24,
- "type": 4
- }
- }
- ],
- "length": 64,
- "match": {
- "OFPMatch": {
- "length": 10,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_type",
- "mask": null,
- "value": 2054
- }
- }
- ],
- "type": 1
- }
- },
- "priority": 3,
- "reason": 0,
- "table_id": 0
- }
- },
- {
- "OFPFlowUpdateAbbrev": {
- "event": 4,
- "length": 8,
- "xid": 1234
- }
- },
- {
- "OFPFlowUpdatePaused": {
- "event": 5,
- "length": 8
- }
- }
- ],
- "flags": 0,
- "type": 16
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json
deleted file mode 100644
index aed7ddaa..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPFlowMonitorRequest": {
- "command": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 14,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "eth_dst",
- "mask": null,
- "value": "f2:0b:a4:7d:f8:ea"
- }
- }
- ],
- "type": 1
- }
- },
- "monitor_flags": 15,
- "monitor_id": 100000000,
- "out_group": 4294967295,
- "out_port": 22,
- "table_id": 33,
- "type": 16
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_removed.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_removed.packet.json
deleted file mode 100644
index daf05248..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_removed.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPFlowRemoved": {
- "cookie": 1234605616436508552,
- "hard_timeout": 255,
- "idle_timeout": 255,
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "priority": 1,
- "reason": 0,
- "stats": {
- "OFPStats": {
- "length": 12,
- "oxs_fields": [
- {
- "OXSTlv": {
- "field": "flow_count",
- "value": 1
- }
- }
- ]
- }
- },
- "table_id": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_reply.packet.json
deleted file mode 100644
index e2713569..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_reply.packet.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "OFPFlowStatsReply": {
- "body": [
- {
- "OFPFlowStats": {
- "length": 40,
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 1
- }
- }
- ],
- "type": 1
- }
- },
- "priority": 1,
- "reason": 0,
- "stats": {
- "OFPStats": {
- "length": 12,
- "oxs_fields": [
- {
- "OXSTlv": {
- "field": "flow_count",
- "value": 1
- }
- }
- ]
- }
- },
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 17
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json
deleted file mode 100644
index cc9de0a6..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPFlowStatsRequest": {
- "cookie": 0,
- "cookie_mask": 0,
- "flags": 0,
- "match": {
- "OFPMatch": {
- "length": 4,
- "oxm_fields": [],
- "type": 1
- }
- },
- "out_group": 4294967295,
- "out_port": 4294967295,
- "table_id": 0,
- "type": 17
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json
deleted file mode 100644
index 82c9e794..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "OFPGetAsyncReply": {
- "properties": [
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 0
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 1
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 2
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 3
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 4
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 5
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 6
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 7
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 8
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 9
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 10
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 11
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json
deleted file mode 100644
index 7daa5a0f..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPGetAsyncRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json
deleted file mode 100644
index 62b37b4d..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGetConfigReply": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json
deleted file mode 100644
index 06fe51f4..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "OFPGetConfigRequest": {}
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_reply.packet.json
deleted file mode 100644
index 03c136d7..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_reply.packet.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "OFPGroupDescStatsReply": {
- "body": [
- {
- "OFPGroupDescStats": {
- "bucket_array_len": 32,
- "buckets": [
- {
- "OFPBucket": {
- "action_array_len": 16,
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65509,
- "port": 1,
- "type": 0
- }
- }
- ],
- "bucket_id": 65535,
- "len": 32,
- "properties": [
- {
- "OFPGroupBucketPropWeight": {
- "length": 8,
- "type": 0,
- "weight": 65535
- }
- }
- ]
- }
- }
- ],
- "group_id": 1,
- "length": 48,
- "properties": [],
- "type": 1
- }
- }
- ],
- "flags": 0,
- "type": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_request.packet.json
deleted file mode 100644
index 1589ed61..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_desc_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPGroupDescStatsRequest": {
- "flags": 0,
- "group_id": 52651,
- "type": 7
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json
deleted file mode 100644
index f059f994..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "OFPGroupFeaturesStatsReply": {
- "body": {
- "OFPGroupFeaturesStats": {
- "actions": [
- 67082241,
- 67082241,
- 67082241,
- 67082241
- ],
- "capabilities": 5,
- "max_groups": [
- 16777216,
- 16777216,
- 16777216,
- 16777216
- ],
- "types": 15
- }
- },
- "flags": 0,
- "type": 8
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json
deleted file mode 100644
index edba5dc5..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPGroupFeaturesStatsRequest": {
- "flags": 0,
- "type": 8
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_mod.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-group_mod.packet.json
deleted file mode 100644
index d168fefd..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_mod.packet.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "OFPGroupMod": {
- "bucket_array_len": 56,
- "buckets": [
- {
- "OFPBucket": {
- "action_array_len": 24,
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "bucket_id": 305419896,
- "len": 56,
- "properties": [
- {
- "OFPGroupBucketPropWeight": {
- "length": 8,
- "type": 0,
- "weight": 52428
- }
- },
- {
- "OFPGroupBucketPropWatch": {
- "length": 8,
- "type": 1,
- "watch": 56797
- }
- },
- {
- "OFPGroupBucketPropWatch": {
- "length": 8,
- "type": 2,
- "watch": 4008636142
- }
- }
- ]
- }
- }
- ],
- "command": 3,
- "command_bucket_id": 3149642683,
- "group_id": 2863311530,
- "properties": [],
- "type": 1
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json
deleted file mode 100644
index cb979e54..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPGroupStatsReply": {
- "body": [
- {
- "OFPGroupStats": {
- "bucket_stats": [
- {
- "OFPBucketCounter": {
- "byte_count": 2345,
- "packet_count": 234
- }
- }
- ],
- "byte_count": 12345,
- "duration_nsec": 609036000,
- "duration_sec": 9,
- "group_id": 1,
- "length": 56,
- "packet_count": 123,
- "ref_count": 2
- }
- }
- ],
- "flags": 0,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json
deleted file mode 100644
index b200a81c..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPGroupStatsRequest": {
- "flags": 0,
- "group_id": 4294967292,
- "type": 6
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json
deleted file mode 100644
index 3c01f80b..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPHello": {
- "elements": [
- {
- "OFPHelloElemVersionBitmap": {
- "length": 8,
- "type": 1,
- "versions": [
- 6
- ]
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json
deleted file mode 100644
index 4ea5bfcf..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "OFPMeterDescStatsReply": {
- "body": [
- {
- "OFPMeterDescStats": {
- "bands": [
- {
- "OFPMeterBandDrop": {
- "burst_size": 10,
- "len": 16,
- "rate": 1000,
- "type": 1
- }
- }
- ],
- "flags": 14,
- "length": 24,
- "meter_id": 100
- }
- }
- ],
- "flags": 0,
- "type": 10
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json
deleted file mode 100644
index fdc1adc9..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterDescStatsRequest": {
- "flags": 0,
- "meter_id": 4294967295,
- "type": 10
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json
deleted file mode 100644
index f9fb7848..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "OFPMeterFeaturesStatsReply": {
- "body": [
- {
- "OFPMeterFeaturesStats": {
- "band_types": 2147483654,
- "capabilities": 15,
- "features": 3,
- "max_bands": 255,
- "max_color": 0,
- "max_meter": 16777216
- }
- }
- ],
- "flags": 0,
- "type": 11
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json
deleted file mode 100644
index 7363a342..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPMeterFeaturesStatsRequest": {
- "flags": 0,
- "type": 11
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json
deleted file mode 100644
index 5bb43719..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "OFPMeterMod": {
- "bands": [
- {
- "OFPMeterBandDrop": {
- "burst_size": 10,
- "len": 16,
- "rate": 1000,
- "type": 1
- }
- },
- {
- "OFPMeterBandDscpRemark": {
- "burst_size": 10,
- "len": 16,
- "prec_level": 1,
- "rate": 1000,
- "type": 2
- }
- }
- ],
- "command": 0,
- "flags": 14,
- "meter_id": 100
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json
deleted file mode 100644
index 1bb4b39e..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "OFPMeterStatsReply": {
- "body": [
- {
- "OFPMeterStats": {
- "band_stats": [
- {
- "OFPMeterBandStats": {
- "byte_band_count": 0,
- "packet_band_count": 0
- }
- }
- ],
- "byte_in_count": 0,
- "duration_nsec": 480000,
- "duration_sec": 0,
- "ref_count": 0,
- "len": 56,
- "meter_id": 100,
- "packet_in_count": 0
- }
- }
- ],
- "flags": 0,
- "type": 9
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json
deleted file mode 100644
index 8d45799b..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPMeterStatsRequest": {
- "flags": 0,
- "meter_id": 4294967295,
- "type": 9
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-packet_in.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-packet_in.packet.json
deleted file mode 100644
index e5fd0bd9..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-packet_in.packet.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "OFPPacketIn": {
- "buffer_id": 200,
- "cookie": 0,
- "data": "aG9nZQ==",
- "match": {
- "OFPMatch": {
- "length": 40,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 43981
- }
- },
- {
- "OXMTlv": {
- "field": "tunnel_id",
- "mask": null,
- "value": 50000
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_src",
- "mask": null,
- "value": "192.168.2.3"
- }
- },
- {
- "OXMTlv": {
- "field": "tun_ipv4_dst",
- "mask": null,
- "value": "192.168.2.4"
- }
- }
- ],
- "type": 1
- }
- },
- "reason": 0,
- "table_id": 100,
- "total_len": 1000
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-packet_out.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-packet_out.packet.json
deleted file mode 100644
index d8287cce..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-packet_out.packet.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "OFPPacketOut": {
- "actions": [
- {
- "OFPActionOutput": {
- "len": 16,
- "max_len": 65535,
- "port": 4294967291,
- "type": 0
- }
- }
- ],
- "actions_len": 16,
- "buffer_id": 4294967295,
- "data": "dGVzdA==",
- "match": {
- "OFPMatch": {
- "length": 12,
- "oxm_fields": [
- {
- "OXMTlv": {
- "field": "in_port",
- "mask": null,
- "value": 4294967040
- }
- }
- ],
- "type": 1
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json
deleted file mode 100644
index c281c0f8..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "OFPPortDescStatsReply": {
- "body": [
- {
- "OFPPort": {
- "config": 0,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "length": 168,
- "name": "Port7",
- "port_no": 7,
- "properties": [
- {
- "OFPPortDescPropEthernet": {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": 0
- }
- },
- {
- "OFPPortDescPropOptical": {
- "length": 40,
- "rx_grid_freq_lmda": 1500,
- "rx_max_freq_lmda": 2000,
- "rx_min_freq_lmda": 1000,
- "supported": 1,
- "tx_grid_freq_lmda": 1500,
- "tx_max_freq_lmda": 2000,
- "tx_min_freq_lmda": 1000,
- "tx_pwr_max": 2000,
- "tx_pwr_min": 1000,
- "type": 1
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "state": 4
- }
- },
- {
- "OFPPort": {
- "config": 0,
- "hw_addr": "f2:0b:a4:7d:f8:ea",
- "length": 72,
- "name": "Port6",
- "port_no": 6,
- "properties": [
- {
- "OFPPortDescPropEthernet": {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": 0
- }
- }
- ],
- "state": 4
- }
- }
- ],
- "flags": 0,
- "type": 13
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_request.packet.json
deleted file mode 100644
index 478f1327..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPPortDescStatsRequest": {
- "flags": 0,
- "port_no": 48346,
- "type": 13
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json
deleted file mode 100644
index a255b9dd..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "OFPPortMod": {
- "config": 0,
- "hw_addr": "00:11:00:00:11:11",
- "mask": 0,
- "port_no": 1,
- "properties": [
- {
- "OFPPortModPropEthernet": {
- "advertise": 4096,
- "length": 8,
- "type": 0
- }
- },
- {
- "OFPPortModPropOptical": {
- "configure": 3,
- "fl_offset": 2000,
- "freq_lmda": 1500,
- "grid_span": 3000,
- "length": 24,
- "tx_pwr": 300,
- "type": 1
- }
- },
- {
- "OFPPortModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortModPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortModPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json
deleted file mode 100644
index 4ea41742..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json
+++ /dev/null
@@ -1,113 +0,0 @@
-{
- "OFPPortStatsReply": {
- "body": [
- {
- "OFPPortStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 224,
- "port_no": 7,
- "properties": [
- {
- "OFPPortStatsPropEthernet": {
- "collisions": 0,
- "length": 40,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": 0
- }
- },
- {
- "OFPPortStatsPropOptical": {
- "bias_current": 300,
- "flags": 3,
- "length": 44,
- "rx_freq_lmda": 1500,
- "rx_grid_span": 500,
- "rx_offset": 700,
- "rx_pwr": 2000,
- "temperature": 273,
- "tx_freq_lmda": 1500,
- "tx_grid_span": 500,
- "tx_offset": 700,
- "tx_pwr": 2000,
- "type": 1
- }
- },
- {
- "OFPPortStatsPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortStatsPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortStatsPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "rx_bytes": 0,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 0,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- },
- {
- "OFPPortStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 120,
- "port_no": 6,
- "properties": [
- {
- "OFPPortStatsPropEthernet": {
- "collisions": 0,
- "length": 40,
- "rx_crc_err": 0,
- "rx_frame_err": 0,
- "rx_over_err": 0,
- "type": 0
- }
- }
- ],
- "rx_bytes": 336,
- "rx_dropped": 0,
- "rx_errors": 0,
- "rx_packets": 4,
- "tx_bytes": 336,
- "tx_dropped": 0,
- "tx_errors": 0,
- "tx_packets": 4
- }
- }
- ],
- "flags": 0,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json
deleted file mode 100644
index 5228710d..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPPortStatsRequest": {
- "flags": 0,
- "port_no": 4294967295,
- "type": 4
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json
deleted file mode 100644
index b273ac22..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "OFPPortStatus": {
- "desc": {
- "OFPPort": {
- "config": 0,
- "hw_addr": "f2:0b:a4:d0:3f:70",
- "length": 168,
- "name": "\u79c1\u306e\u30dd\u30fc\u30c8",
- "port_no": 7,
- "properties": [
- {
- "OFPPortDescPropEthernet": {
- "advertised": 10240,
- "curr": 10248,
- "curr_speed": 5000,
- "length": 32,
- "max_speed": 5000,
- "peer": 10248,
- "supported": 10248,
- "type": 0
- }
- },
- {
- "OFPPortDescPropOptical": {
- "length": 40,
- "rx_grid_freq_lmda": 1500,
- "rx_max_freq_lmda": 2000,
- "rx_min_freq_lmda": 1000,
- "supported": 1,
- "tx_grid_freq_lmda": 1500,
- "tx_max_freq_lmda": 2000,
- "tx_min_freq_lmda": 1000,
- "tx_pwr_max": 2000,
- "tx_pwr_min": 1000,
- "type": 1
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPPortDescPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "state": 4
- }
- },
- "reason": 0
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json
deleted file mode 100644
index 26c8f7d5..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "OFPQueueDescStatsReply": {
- "body": [
- {
- "OFPQueueDesc": {
- "len": 32,
- "port_no": 7,
- "properties": [
- {
- "OFPQueueDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- }
- ],
- "queue_id": 0
- }
- },
- {
- "OFPQueueDesc": {
- "len": 88,
- "port_no": 8,
- "properties": [
- {
- "OFPQueueDescPropMinRate": {
- "length": 8,
- "rate": 300,
- "type": 1
- }
- },
- {
- "OFPQueueDescPropMaxRate": {
- "length": 8,
- "rate": 900,
- "type": 2
- }
- },
- {
- "OFPQueueDescPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPQueueDescPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPQueueDescPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "queue_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 15
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_request.packet.json
deleted file mode 100644
index db1f85d5..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_request.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueDescStatsRequest": {
- "flags": 0,
- "port_no": 52651,
- "queue_id": 57020,
- "type": 15
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json
deleted file mode 100644
index 2c190977..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "OFPQueueStatsReply": {
- "body": [
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 104,
- "port_no": 7,
- "properties": [
- {
- "OFPQueueStatsPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPQueueStatsPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPQueueStatsPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 6,
- "properties": [],
- "queue_id": 1,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- },
- {
- "OFPQueueStats": {
- "duration_nsec": 0,
- "duration_sec": 0,
- "length": 48,
- "port_no": 7,
- "properties": [],
- "queue_id": 2,
- "tx_bytes": 0,
- "tx_errors": 0,
- "tx_packets": 0
- }
- }
- ],
- "flags": 0,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json
deleted file mode 100644
index 99d8505d..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPQueueStatsRequest": {
- "flags": 0,
- "port_no": 43981,
- "queue_id": 4294967295,
- "type": 5
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json
deleted file mode 100644
index 66368c20..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json
+++ /dev/null
@@ -1,67 +0,0 @@
-{
- "OFPRequestForward": {
- "request": {
- "OFPGroupMod": {
- "bucket_array_len": 56,
- "buckets": [
- {
- "OFPBucket": {
- "action_array_len": 24,
- "actions": [
- {
- "OFPActionPopVlan": {
- "len": 8,
- "type": 18
- }
- },
- {
- "OFPActionSetField": {
- "field": {
- "OXMTlv": {
- "field": "ipv4_dst",
- "mask": null,
- "value": "192.168.2.9"
- }
- },
- "len": 16,
- "type": 25
- }
- }
- ],
- "bucket_id": 305419896,
- "len": 56,
- "properties": [
- {
- "OFPGroupBucketPropWeight": {
- "length": 8,
- "type": 0,
- "weight": 52428
- }
- },
- {
- "OFPGroupBucketPropWatch": {
- "length": 8,
- "type": 1,
- "watch": 56797
- }
- },
- {
- "OFPGroupBucketPropWatch": {
- "length": 8,
- "type": 2,
- "watch": 4008636142
- }
- }
- ]
- }
- }
- ],
- "command": 3,
- "command_bucket_id": 3149642683,
- "group_id": 2863311530,
- "properties": [],
- "type": 1
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-role_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-role_reply.packet.json
deleted file mode 100644
index e8be5895..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-role_reply.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPRoleReply": {
- "generation_id": 1234605616436508552,
- "role": 1,
- "short_id": 43690
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-role_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-role_request.packet.json
deleted file mode 100644
index c0c120f6..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-role_request.packet.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "OFPRoleRequest": {
- "generation_id": 1234605616436508552,
- "role": 1,
- "short_id": 43690
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json
deleted file mode 100644
index c88d3bfa..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "OFPRoleStatus": {
- "generation_id": 17356517385562371090,
- "properties": [],
- "reason": 0,
- "role": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json
deleted file mode 100644
index 0802c14e..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "OFPSetAsync": {
- "properties": [
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 0
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 1
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 2
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 3
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 4
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 5
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 6
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 7
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 8
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 24,
- "type": 9
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 10
- }
- },
- {
- "OFPAsyncConfigPropReasons": {
- "length": 8,
- "mask": 3,
- "type": 11
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65534
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPAsyncConfigPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ]
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json
deleted file mode 100644
index cd5398b7..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPSetConfig": {
- "flags": 0,
- "miss_send_len": 128
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json
deleted file mode 100644
index 1f3d7142..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "OFPTableDescStatsReply": {
- "body": [
- {
- "OFPTableDesc": {
- "config": 0,
- "length": 24,
- "properties": [
- {
- "OFPTableModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- }
- ],
- "table_id": 7
- }
- },
- {
- "OFPTableDesc": {
- "config": 0,
- "length": 80,
- "properties": [
- {
- "OFPTableModPropEviction": {
- "flags": 0,
- "length": 8,
- "type": 2
- }
- },
- {
- "OFPTableModPropVacancy": {
- "length": 8,
- "type": 3,
- "vacancy": 0,
- "vacancy_down": 0,
- "vacancy_up": 0
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "table_id": 8
- }
- }
- ],
- "flags": 0,
- "type": 14
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json
deleted file mode 100644
index f5a4cde0..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableDescStatsRequest": {
- "flags": 0,
- "type": 14
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_reply.packet.json
deleted file mode 100644
index 864a85fd..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_reply.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPTableFeaturesStatsReply": {
- "body": [
- {
- "OFPTableFeaturesStats": {
- "capabilities": 4,
- "command": 1,
- "features": 1,
- "length": 80,
- "max_entries": 255,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "table1",
- "properties": [
- {
- "OFPTableFeaturePropOxmValues": {
- "length": 14,
- "oxm_values": [
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "aa:bb:cc:dd:ee:ff"
- }
- }
- ],
- "type": 22
- }
- }
- ],
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_request.packet.json
deleted file mode 100644
index 986e1439..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_features_request.packet.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "OFPTableFeaturesStatsRequest": {
- "body": [
- {
- "OFPTableFeaturesStats": {
- "capabilities": 4,
- "command": 1,
- "features": 1,
- "length": 80,
- "max_entries": 255,
- "metadata_match": 18446744073709551615,
- "metadata_write": 18446744073709551615,
- "name": "table1",
- "properties": [
- {
- "OFPTableFeaturePropOxmValues": {
- "length": 14,
- "oxm_values": [
- {
- "OXMTlv": {
- "field": "eth_src",
- "mask": null,
- "value": "aa:bb:cc:dd:ee:ff"
- }
- }
- ],
- "type": 22
- }
- }
- ],
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 12
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json
deleted file mode 100644
index 5adf812f..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "OFPTableMod": {
- "config": 4,
- "properties": [
- {
- "OFPTableModPropEviction": {
- "flags": 2,
- "length": 8,
- "type": 2
- }
- }
- ],
- "table_id": 255
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json
deleted file mode 100644
index 94801adb..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "OFPTableStatsReply": {
- "body": [
- {
- "OFPTableStats": {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 0
- }
- },
- {
- "OFPTableStats": {
- "active_count": 4,
- "lookup_count": 4,
- "matched_count": 4,
- "table_id": 1
- }
- }
- ],
- "flags": 0,
- "type": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json
deleted file mode 100644
index 1f965d77..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "OFPTableStatsRequest": {
- "flags": 0,
- "type": 3
- }
-}
diff --git a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json b/tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json
deleted file mode 100644
index fde5fb77..00000000
--- a/tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "OFPTableStatus": {
- "reason": 3,
- "table": {
- "OFPTableDesc": {
- "config": 0,
- "length": 80,
- "properties": [
- {
- "OFPTableModPropEviction": {
- "flags": 0,
- "length": 8,
- "type": 2
- }
- },
- {
- "OFPTableModPropVacancy": {
- "length": 8,
- "type": 3,
- "vacancy": 0,
- "vacancy_down": 0,
- "vacancy_up": 0
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [],
- "exp_type": 0,
- "experimenter": 101,
- "length": 12,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1
- ],
- "exp_type": 1,
- "experimenter": 101,
- "length": 16,
- "type": 65535
- }
- },
- {
- "OFPTableModPropExperimenter": {
- "data": [
- 1,
- 2
- ],
- "exp_type": 2,
- "experimenter": 101,
- "length": 20,
- "type": 65535
- }
- }
- ],
- "table_id": 8
- }
- }
- }
-}
diff --git a/tests/unit/ofproto/test_ether.py b/tests/unit/ofproto/test_ether.py
deleted file mode 100644
index dead1a43..00000000
--- a/tests/unit/ofproto/test_ether.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-from nose.tools import eq_
-from ryu.ofproto.ether import *
-
-
-LOG = logging.getLogger('test_ether')
-
-
-class TestInet(unittest.TestCase):
- """ Test case for ether
- """
-
- def test_ether_type(self):
- eq_(ETH_TYPE_IP, 0x0800)
- eq_(ETH_TYPE_ARP, 0x0806)
- eq_(ETH_TYPE_8021Q, 0x8100)
- eq_(ETH_TYPE_IPV6, 0x86dd)
- eq_(ETH_TYPE_MPLS, 0x8847)
- eq_(ETH_TYPE_SLOW, 0x8809)
diff --git a/tests/unit/ofproto/test_inet.py b/tests/unit/ofproto/test_inet.py
deleted file mode 100644
index 92a82ac4..00000000
--- a/tests/unit/ofproto/test_inet.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-from nose.tools import eq_
-from ryu.ofproto.inet import *
-
-
-LOG = logging.getLogger('test_inet')
-
-
-class TestInet(unittest.TestCase):
- """ Test case for inet
- """
-
- def test_ip_proto(self):
- eq_(IPPROTO_IP, 0)
- eq_(IPPROTO_HOPOPTS, 0)
- eq_(IPPROTO_ICMP, 1)
- eq_(IPPROTO_TCP, 6)
- eq_(IPPROTO_UDP, 17)
- eq_(IPPROTO_ROUTING, 43)
- eq_(IPPROTO_FRAGMENT, 44)
- eq_(IPPROTO_AH, 51)
- eq_(IPPROTO_ICMPV6, 58)
- eq_(IPPROTO_NONE, 59)
- eq_(IPPROTO_DSTOPTS, 60)
- eq_(IPPROTO_SCTP, 132)
diff --git a/tests/unit/ofproto/test_nx_flow_spec.py b/tests/unit/ofproto/test_nx_flow_spec.py
deleted file mode 100644
index e0bf6b4e..00000000
--- a/tests/unit/ofproto/test_nx_flow_spec.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2015 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-
-import ryu.ofproto.ofproto_v1_3_parser as ofpp
-
-
-class Test_FlowSpec(unittest.TestCase):
- def test_flowspec_src_0_dst_0(self):
- user = ofpp.NXFlowSpecMatch(src=('in_port', 0),
- dst=('in_port', 0),
- n_bits=16)
- on_wire = (
- b'\x00\x10'
- b'\x80\x00\x00\x04\x00\x00'
- b'\x80\x00\x00\x04\x00\x00'
- )
- self.assertEqual(on_wire, user.serialize())
- (o, rest) = ofpp._NXFlowSpec.parse(on_wire)
- self.assertEqual(user.to_jsondict(), o.to_jsondict())
- self.assertEqual(str(user), str(o))
- self.assertEqual(b'', rest)
-
- def test_flowspec_src_1_dst_0(self):
- user = ofpp.NXFlowSpecMatch(src=99,
- dst=('in_port', 0),
- n_bits=16)
- on_wire = (
- b'\x20\x10'
- b'\x00\x63'
- b'\x80\x00\x00\x04\x00\x00'
- )
- self.assertEqual(on_wire, user.serialize())
- (o, rest) = ofpp._NXFlowSpec.parse(on_wire)
- self.assertEqual(user.to_jsondict(), o.to_jsondict())
- self.assertEqual(str(user), str(o))
- self.assertEqual(b'', rest)
-
- def test_flowspec_src_0_dst_1(self):
- user = ofpp.NXFlowSpecLoad(src=('in_port', 0),
- dst=('in_port', 0),
- n_bits=16)
- on_wire = (
- b'\x08\x10'
- b'\x80\x00\x00\x04\x00\x00'
- b'\x80\x00\x00\x04\x00\x00'
- )
- self.assertEqual(on_wire, user.serialize())
- (o, rest) = ofpp._NXFlowSpec.parse(on_wire)
- self.assertEqual(user.to_jsondict(), o.to_jsondict())
- self.assertEqual(str(user), str(o))
- self.assertEqual(b'', rest)
-
- def test_flowspec_src_1_dst_1(self):
- user = ofpp.NXFlowSpecLoad(src=99,
- dst=('in_port', 0),
- n_bits=16)
- on_wire = (
- b'\x28\x10'
- b'\x00\x63'
- b'\x80\x00\x00\x04\x00\x00'
- )
- self.assertEqual(on_wire, user.serialize())
- (o, rest) = ofpp._NXFlowSpec.parse(on_wire)
- self.assertEqual(user.to_jsondict(), o.to_jsondict())
- self.assertEqual(str(user), str(o))
- self.assertEqual(b'', rest)
-
- def test_flowspec_src_0_dst_2(self):
- user = ofpp.NXFlowSpecOutput(src=('in_port', 0),
- dst='',
- n_bits=16)
- on_wire = (
- b'\x10\x10'
- b'\x80\x00\x00\x04\x00\x00'
- )
- self.assertEqual(on_wire, user.serialize())
- (o, rest) = ofpp._NXFlowSpec.parse(on_wire)
- self.assertEqual(user.to_jsondict(), o.to_jsondict())
- self.assertEqual(str(user), str(o))
- self.assertEqual(b'', rest)
diff --git a/tests/unit/ofproto/test_ofproto.py b/tests/unit/ofproto/test_ofproto.py
deleted file mode 100644
index 47f1e544..00000000
--- a/tests/unit/ofproto/test_ofproto.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 Isaku Yamahata <yamahata at private email ne jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-try:
- # Python 3
- from imp import reload
-except ImportError:
- # Python 2
- pass
-
-import unittest
-import logging
-from nose.tools import eq_
-
-
-LOG = logging.getLogger('test_ofproto')
-
-
-class TestOfprotCommon(unittest.TestCase):
- """ Test case for ofproto
- """
-
- def test_ofp_event(self):
- import ryu.ofproto
- reload(ryu.ofproto)
- import ryu.controller.ofp_event
- reload(ryu.controller.ofp_event)
-
- def test_ofproto(self):
- # When new version of OFP support is added,
- # this test must be updated.
- import ryu.ofproto
- reload(ryu.ofproto)
- ofp_modules = ryu.ofproto.get_ofp_modules()
-
- import ryu.ofproto.ofproto_v1_0
- import ryu.ofproto.ofproto_v1_2
- import ryu.ofproto.ofproto_v1_3
- import ryu.ofproto.ofproto_v1_4
- import ryu.ofproto.ofproto_v1_5
- eq_(set(ofp_modules.keys()), set([ryu.ofproto.ofproto_v1_0.OFP_VERSION,
- ryu.ofproto.ofproto_v1_2.OFP_VERSION,
- ryu.ofproto.ofproto_v1_3.OFP_VERSION,
- ryu.ofproto.ofproto_v1_4.OFP_VERSION,
- ryu.ofproto.ofproto_v1_5.OFP_VERSION,
- ]))
- consts_mods = set([ofp_mod[0] for ofp_mod in ofp_modules.values()])
- eq_(consts_mods, set([ryu.ofproto.ofproto_v1_0,
- ryu.ofproto.ofproto_v1_2,
- ryu.ofproto.ofproto_v1_3,
- ryu.ofproto.ofproto_v1_4,
- ryu.ofproto.ofproto_v1_5,
- ]))
-
- parser_mods = set([ofp_mod[1] for ofp_mod in ofp_modules.values()])
- import ryu.ofproto.ofproto_v1_0_parser
- import ryu.ofproto.ofproto_v1_2_parser
- import ryu.ofproto.ofproto_v1_3_parser
- import ryu.ofproto.ofproto_v1_4_parser
- import ryu.ofproto.ofproto_v1_5_parser
- eq_(parser_mods, set([ryu.ofproto.ofproto_v1_0_parser,
- ryu.ofproto.ofproto_v1_2_parser,
- ryu.ofproto.ofproto_v1_3_parser,
- ryu.ofproto.ofproto_v1_4_parser,
- ryu.ofproto.ofproto_v1_5_parser,
- ]))
diff --git a/tests/unit/ofproto/test_ofproto_common.py b/tests/unit/ofproto/test_ofproto_common.py
deleted file mode 100644
index 6a63236e..00000000
--- a/tests/unit/ofproto/test_ofproto_common.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-from nose.tools import eq_
-from ryu.ofproto.ofproto_common import *
-
-
-LOG = logging.getLogger('test_ofproto_common')
-
-
-class TestOfprotCommon(unittest.TestCase):
- """ Test case for ofproto_common
- """
-
- def test_struct_ofp_header(self):
- eq_(OFP_HEADER_PACK_STR, '!BBHI')
- eq_(OFP_HEADER_SIZE, 8)
-
- def test_define_constants(self):
- eq_(OFP_TCP_PORT, 6653)
- eq_(OFP_SSL_PORT, 6653)
diff --git a/tests/unit/ofproto/test_ofproto_parser.py b/tests/unit/ofproto/test_ofproto_parser.py
deleted file mode 100644
index bc3c1fd1..00000000
--- a/tests/unit/ofproto/test_ofproto_parser.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import six
-
-import binascii
-import unittest
-from nose.tools import *
-import struct
-from ryu import exception
-
-from ryu.ofproto import ofproto_common, ofproto_parser
-from ryu.ofproto import ofproto_v1_0, ofproto_v1_0_parser
-
-import logging
-LOG = logging.getLogger(__name__)
-
-if six.PY3:
- buffer = bytes
-
-
-class TestOfproto_Parser(unittest.TestCase):
- def setUp(self):
- LOG.debug('setUp')
- self.bufHello = binascii.unhexlify('0100000800000001')
-
- fr = '010600b0000000020000000000000abc' \
- + '00000100010000000000008700000fff' \
- + '0002aefa39d2b9177472656d61302d30' \
- + '00000000000000000000000000000000' \
- + '000000c0000000000000000000000000' \
- + 'fffe723f9a764cc87673775f30786162' \
- + '63000000000000000000000100000001' \
- + '00000082000000000000000000000000' \
- + '00012200d6c5a1947472656d61312d30' \
- + '00000000000000000000000000000000' \
- + '000000c0000000000000000000000000'
- self.bufFeaturesReply = binascii.unhexlify(fr)
-
- pi = '010a005200000000000001010040' \
- + '00020000000000000002000000000001' \
- + '080045000032000000004011f967c0a8' \
- + '0001c0a8000200010001001e00000000' \
- + '00000000000000000000000000000000' \
- + '00000000'
- self.bufPacketIn = binascii.unhexlify(pi)
-
- def tearDown(self):
- LOG.debug('tearDown')
- pass
-
- def testHello(self):
- (version,
- msg_type,
- msg_len,
- xid) = ofproto_parser.header(self.bufHello)
- eq_(version, 1)
- eq_(msg_type, 0)
- eq_(msg_len, 8)
- eq_(xid, 1)
-
- def testFeaturesReply(self):
- (version,
- msg_type,
- msg_len,
- xid) = ofproto_parser.header(self.bufFeaturesReply)
-
- msg = ofproto_parser.msg(self,
- version,
- msg_type,
- msg_len,
- xid,
- self.bufFeaturesReply)
- LOG.debug(msg)
-
- ok_(isinstance(msg, ofproto_v1_0_parser.OFPSwitchFeatures))
- LOG.debug(msg.ports[65534])
- ok_(isinstance(msg.ports[1], ofproto_v1_0_parser.OFPPhyPort))
- ok_(isinstance(msg.ports[2], ofproto_v1_0_parser.OFPPhyPort))
- ok_(isinstance(msg.ports[65534], ofproto_v1_0_parser.OFPPhyPort))
-
- def testPacketIn(self):
- (version,
- msg_type,
- msg_len,
- xid) = ofproto_parser.header(self.bufPacketIn)
-
- msg = ofproto_parser.msg(self,
- version,
- msg_type,
- msg_len,
- xid,
- self.bufPacketIn)
- LOG.debug(msg)
- ok_(isinstance(msg, ofproto_v1_0_parser.OFPPacketIn))
-
- @raises(AssertionError)
- def test_check_msg_len(self):
- (version,
- msg_type,
- msg_len,
- xid) = ofproto_parser.header(self.bufPacketIn)
-
- msg_len = len(self.bufPacketIn) + 1
- ofproto_parser.msg(self,
- version,
- msg_type,
- msg_len,
- xid,
- self.bufPacketIn)
-
- @raises(exception.OFPUnknownVersion)
- def test_check_msg_parser(self):
- (version,
- msg_type,
- msg_len,
- xid) = ofproto_parser.header(self.bufPacketIn)
-
- version = 0xff
- ofproto_parser.msg(self,
- version,
- msg_type,
- msg_len,
- xid,
- self.bufPacketIn)
-
-
-class TestMsgBase(unittest.TestCase):
- """ Test case for ofproto_parser.MsgBase
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_set_xid(self):
- xid = 3841413783
- c = ofproto_parser.MsgBase(object)
- c.set_xid(xid)
- eq_(xid, c.xid)
-
- @raises(AssertionError)
- def test_set_xid_check_xid(self):
- xid = 2160492514
- c = ofproto_parser.MsgBase(object)
- c.xid = xid
- c.set_xid(xid)
-
- def _test_parser(self, msg_type=ofproto_v1_0.OFPT_HELLO):
- version = ofproto_v1_0.OFP_VERSION
- msg_len = ofproto_v1_0.OFP_HEADER_SIZE
- xid = 2183948390
- data = b'\x00\x01\x02\x03'
-
- fmt = ofproto_v1_0.OFP_HEADER_PACK_STR
- buf = struct.pack(fmt, version, msg_type, msg_len, xid) \
- + data
-
- res = ofproto_v1_0_parser.OFPHello.parser(
- object, version, msg_type, msg_len, xid, bytearray(buf))
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(buffer(buf), res.buf)
-
- # test __str__()
- list_ = ('version', 'msg_type', 'msg_len', 'xid')
- check = {}
- for s in str(res).rsplit(','):
- if '=' in s:
- (k, v,) = s.rsplit('=')
- if k in list_:
- check[k] = v
-
- eq_(hex(ofproto_v1_0.OFP_VERSION), check['version'])
- eq_(hex(ofproto_v1_0.OFPT_HELLO), check['msg_type'])
- eq_(hex(msg_len), check['msg_len'])
- eq_(hex(xid), check['xid'])
-
- return True
-
- def test_parser(self):
- ok_(self._test_parser())
-
- @raises(AssertionError)
- def test_parser_check_msg_type(self):
- self._test_parser(ofproto_v1_0.OFPT_ERROR)
-
- def _test_serialize(self):
-
- class Datapath(object):
- ofproto = ofproto_v1_0
- ofproto_parser = ofproto_v1_0_parser
-
- c = ofproto_v1_0_parser.OFPHello(Datapath)
-
- c.serialize()
- eq_(ofproto_v1_0.OFP_VERSION, c.version)
- eq_(ofproto_v1_0.OFPT_HELLO, c.msg_type)
- eq_(0, c.xid)
-
- return True
-
- def test_serialize(self):
- ok_(self._test_serialize())
-
-
-class TestMsgStrAttr(unittest.TestCase):
- """ Test case for ofproto_parser.msg_str_attr
- """
-
- def test_msg_str_attr(self):
- class Check(object):
- check = 'msg_str_attr_test'
-
- c = Check()
- buf = ''
-
- res = ofproto_parser.msg_str_attr(c, buf, ('check',))
- str_ = str(res)
- str_ = str_.rsplit()
- eq_('check', str_[0])
- eq_('msg_str_attr_test', str_[1])
diff --git a/tests/unit/ofproto/test_ofproto_v12.py b/tests/unit/ofproto/test_ofproto_v12.py
deleted file mode 100644
index c1228a05..00000000
--- a/tests/unit/ofproto/test_ofproto_v12.py
+++ /dev/null
@@ -1,717 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-from nose.tools import eq_
-from ryu.ofproto.ofproto_v1_2 import *
-
-
-LOG = logging.getLogger('test_ofproto_v12')
-
-
-class TestOfprot12(unittest.TestCase):
- """ Test case for ofproto_v1_2
- """
-
- def test_struct_ofp_header(self):
- eq_(OFP_HEADER_PACK_STR, '!BBHI')
- eq_(OFP_HEADER_SIZE, 8)
-
- def test_enum_ofp_type(self):
- eq_(OFPT_HELLO, 0)
- eq_(OFPT_ERROR, 1)
- eq_(OFPT_ECHO_REQUEST, 2)
- eq_(OFPT_ECHO_REPLY, 3)
- eq_(OFPT_EXPERIMENTER, 4)
- eq_(OFPT_FEATURES_REQUEST, 5)
- eq_(OFPT_FEATURES_REPLY, 6)
- eq_(OFPT_GET_CONFIG_REQUEST, 7)
- eq_(OFPT_GET_CONFIG_REPLY, 8)
- eq_(OFPT_SET_CONFIG, 9)
- eq_(OFPT_PACKET_IN, 10)
- eq_(OFPT_FLOW_REMOVED, 11)
- eq_(OFPT_PORT_STATUS, 12)
- eq_(OFPT_PACKET_OUT, 13)
- eq_(OFPT_FLOW_MOD, 14)
- eq_(OFPT_GROUP_MOD, 15)
- eq_(OFPT_PORT_MOD, 16)
- eq_(OFPT_TABLE_MOD, 17)
- eq_(OFPT_STATS_REQUEST, 18)
- eq_(OFPT_STATS_REPLY, 19)
- eq_(OFPT_BARRIER_REQUEST, 20)
- eq_(OFPT_BARRIER_REPLY, 21)
- eq_(OFPT_QUEUE_GET_CONFIG_REQUEST, 22)
- eq_(OFPT_QUEUE_GET_CONFIG_REPLY, 23)
- eq_(OFPT_ROLE_REQUEST, 24)
- eq_(OFPT_ROLE_REPLY, 25)
-
- def test_struct_ofp_port(self):
- eq_(OFP_PORT_PACK_STR, '!I4x6s2x16sIIIIIIII')
- eq_(OFP_PORT_SIZE, 64)
-
- def test_enum_ofp_port_config(self):
- eq_(OFPPC_PORT_DOWN, 1 << 0)
- eq_(OFPPC_NO_RECV, 1 << 2)
- eq_(OFPPC_NO_FWD, 1 << 5)
- eq_(OFPPC_NO_PACKET_IN, 1 << 6)
-
- def test_enum_ofp_port_state(self):
- eq_(OFPPS_LINK_DOWN, 1 << 0)
- eq_(OFPPS_BLOCKED, 1 << 1)
- eq_(OFPPS_LIVE, 1 << 2)
-
- def test_enum_ofp_port_no(self):
- eq_(OFPP_MAX, 0xffffff00)
- eq_(OFPP_IN_PORT, 0xfffffff8)
- eq_(OFPP_TABLE, 0xfffffff9)
- eq_(OFPP_NORMAL, 0xfffffffa)
- eq_(OFPP_FLOOD, 0xfffffffb)
- eq_(OFPP_ALL, 0xfffffffc)
- eq_(OFPP_CONTROLLER, 0xfffffffd)
- eq_(OFPP_LOCAL, 0xfffffffe)
- eq_(OFPP_ANY, 0xffffffff)
- eq_(OFPQ_ALL, 0xffffffff)
-
- def test_enum_ofp_port_features(self):
- eq_(OFPPF_10MB_HD, 1 << 0)
- eq_(OFPPF_10MB_FD, 1 << 1)
- eq_(OFPPF_100MB_HD, 1 << 2)
- eq_(OFPPF_100MB_FD, 1 << 3)
- eq_(OFPPF_1GB_HD, 1 << 4)
- eq_(OFPPF_1GB_FD, 1 << 5)
- eq_(OFPPF_10GB_FD, 1 << 6)
- eq_(OFPPF_40GB_FD, 1 << 7)
- eq_(OFPPF_100GB_FD, 1 << 8)
- eq_(OFPPF_1TB_FD, 1 << 9)
- eq_(OFPPF_OTHER, 1 << 10)
- eq_(OFPPF_COPPER, 1 << 11)
- eq_(OFPPF_FIBER, 1 << 12)
- eq_(OFPPF_AUTONEG, 1 << 13)
- eq_(OFPPF_PAUSE, 1 << 14)
- eq_(OFPPF_PAUSE_ASYM, 1 << 15)
-
- def test_struct_ofp_packet_queue(self):
- eq_(OFP_PACKET_QUEUE_PACK_STR, '!IIH6x')
- eq_(OFP_PACKET_QUEUE_SIZE, 16)
-
- def test_enum_ofp_queue_properties(self):
- eq_(OFPQT_MIN_RATE, 1)
- eq_(OFPQT_MAX_RATE, 2)
- eq_(OFPQT_EXPERIMENTER, 0xffff)
-
- def test_struct_ofp_queue_prop_header(self):
- eq_(OFP_QUEUE_PROP_HEADER_PACK_STR, '!HH4x')
- eq_(OFP_QUEUE_PROP_HEADER_SIZE, 8)
-
- def test_struct_ofp_queue_prop_min_rate(self):
- eq_(OFP_QUEUE_PROP_MIN_RATE_PACK_STR, '!H6x')
- eq_(OFP_QUEUE_PROP_MIN_RATE_SIZE, 16)
-
- def test_struct_ofp_queue_prop_max_rate(self):
- eq_(OFP_QUEUE_PROP_MAX_RATE_PACK_STR, '!H6x')
- eq_(OFP_QUEUE_PROP_MAX_RATE_SIZE, 16)
-
- def test_struct_ofp_queue_prop_experimenter(self):
- eq_(OFP_QUEUE_PROP_EXPERIMENTER_PACK_STR, '!I4x')
- eq_(OFP_QUEUE_PROP_EXPERIMENTER_SIZE, 16)
-
- def test_struct_ofp_match(self):
- eq_(OFP_MATCH_PACK_STR, '!HHBBBB')
- eq_(OFP_MATCH_SIZE, 8)
-
- def test_enum_ofp_match_type(self):
- eq_(OFPMT_STANDARD, 0)
- eq_(OFPMT_OXM, 1)
-
- def test_enum_ofp_oxm_class(self):
- eq_(OFPXMC_NXM_0, 0x0000)
- eq_(OFPXMC_NXM_1, 0x0001)
- eq_(OFPXMC_OPENFLOW_BASIC, 0x8000)
- eq_(OFPXMC_EXPERIMENTER, 0xFFFF)
-
- def test_enmu_oxm_ofb_match_fields(self):
- eq_(OFPXMT_OFB_IN_PORT, 0)
- eq_(OFPXMT_OFB_IN_PHY_PORT, 1)
- eq_(OFPXMT_OFB_METADATA, 2)
- eq_(OFPXMT_OFB_ETH_DST, 3)
- eq_(OFPXMT_OFB_ETH_SRC, 4)
- eq_(OFPXMT_OFB_ETH_TYPE, 5)
- eq_(OFPXMT_OFB_VLAN_VID, 6)
- eq_(OFPXMT_OFB_VLAN_PCP, 7)
- eq_(OFPXMT_OFB_IP_DSCP, 8)
- eq_(OFPXMT_OFB_IP_ECN, 9)
- eq_(OFPXMT_OFB_IP_PROTO, 10)
- eq_(OFPXMT_OFB_IPV4_SRC, 11)
- eq_(OFPXMT_OFB_IPV4_DST, 12)
- eq_(OFPXMT_OFB_TCP_SRC, 13)
- eq_(OFPXMT_OFB_TCP_DST, 14)
- eq_(OFPXMT_OFB_UDP_SRC, 15)
- eq_(OFPXMT_OFB_UDP_DST, 16)
- eq_(OFPXMT_OFB_SCTP_SRC, 17)
- eq_(OFPXMT_OFB_SCTP_DST, 18)
- eq_(OFPXMT_OFB_ICMPV4_TYPE, 19)
- eq_(OFPXMT_OFB_ICMPV4_CODE, 20)
- eq_(OFPXMT_OFB_ARP_OP, 21)
- eq_(OFPXMT_OFB_ARP_SPA, 22)
- eq_(OFPXMT_OFB_ARP_TPA, 23)
- eq_(OFPXMT_OFB_ARP_SHA, 24)
- eq_(OFPXMT_OFB_ARP_THA, 25)
- eq_(OFPXMT_OFB_IPV6_SRC, 26)
- eq_(OFPXMT_OFB_IPV6_DST, 27)
- eq_(OFPXMT_OFB_IPV6_FLABEL, 28)
- eq_(OFPXMT_OFB_ICMPV6_TYPE, 29)
- eq_(OFPXMT_OFB_ICMPV6_CODE, 30)
- eq_(OFPXMT_OFB_IPV6_ND_TARGET, 31)
- eq_(OFPXMT_OFB_IPV6_ND_SLL, 32)
- eq_(OFPXMT_OFB_IPV6_ND_TLL, 33)
- eq_(OFPXMT_OFB_MPLS_LABEL, 34)
- eq_(OFPXMT_OFB_MPLS_TC, 35)
-
- def test_enum_ofp_vlan_id(self):
- eq_(OFPVID_PRESENT, 0x1000)
- eq_(OFPVID_NONE, 0x0000)
-
- def test_struct_ofp_oxm_experimenter_header(self):
- eq_(OFP_OXM_EXPERIMENTER_HEADER_PACK_STR, '!II')
- eq_(OFP_OXM_EXPERIMENTER_HEADER_SIZE, 8)
-
- def test_enum_ofp_instruction_type(self):
- eq_(OFPIT_GOTO_TABLE, 1)
- eq_(OFPIT_WRITE_METADATA, 2)
- eq_(OFPIT_WRITE_ACTIONS, 3)
- eq_(OFPIT_APPLY_ACTIONS, 4)
- eq_(OFPIT_CLEAR_ACTIONS, 5)
- eq_(OFPIT_EXPERIMENTER, 0xFFFF)
-
- def test_struct_ofp_instruction_goto_table(self):
- eq_(OFP_INSTRUCTION_GOTO_TABLE_PACK_STR, '!HHB3x')
- eq_(OFP_INSTRUCTION_GOTO_TABLE_SIZE, 8)
-
- def test_struct_ofp_instruction_write_metadata(self):
- eq_(OFP_INSTRUCTION_WRITE_METADATA_PACK_STR, '!HH4xQQ')
- eq_(OFP_INSTRUCTION_WRITE_METADATA_SIZE, 24)
-
- def test_struct_ofp_instaruction_actions(self):
- eq_(OFP_INSTRUCTION_ACTIONS_PACK_STR, '!HH4x')
- eq_(OFP_INSTRUCTION_ACTIONS_SIZE, 8)
-
- def test_enum_ofp_action_type(self):
- eq_(OFPAT_OUTPUT, 0)
- eq_(OFPAT_COPY_TTL_OUT, 11)
- eq_(OFPAT_COPY_TTL_IN, 12)
- eq_(OFPAT_SET_MPLS_TTL, 15)
- eq_(OFPAT_DEC_MPLS_TTL, 16)
- eq_(OFPAT_PUSH_VLAN, 17)
- eq_(OFPAT_POP_VLAN, 18)
- eq_(OFPAT_PUSH_MPLS, 19)
- eq_(OFPAT_POP_MPLS, 20)
- eq_(OFPAT_SET_QUEUE, 21)
- eq_(OFPAT_GROUP, 22)
- eq_(OFPAT_SET_NW_TTL, 23)
- eq_(OFPAT_DEC_NW_TTL, 24)
- eq_(OFPAT_SET_FIELD, 25)
- eq_(OFPAT_EXPERIMENTER, 0xffff)
-
- def test_struct_ofp_action_header(self):
- eq_(OFP_ACTION_HEADER_PACK_STR, '!HH4x')
- eq_(OFP_ACTION_HEADER_SIZE, 8)
-
- def test_struct_ofp_action_output(self):
- eq_(OFP_ACTION_OUTPUT_PACK_STR, '!HHIH6x')
- eq_(OFP_ACTION_OUTPUT_SIZE, 16)
-
- def test_enum_ofp_controller_max_len(self):
- eq_(OFPCML_MAX, 0xffe5)
- eq_(OFPCML_NO_BUFFER, 0xffff)
-
- def test_struct_ofp_action_group(self):
- eq_(OFP_ACTION_GROUP_PACK_STR, '!HHI')
- eq_(OFP_ACTION_GROUP_SIZE, 8)
-
- def test_struct_ofp_action_set_queue(self):
- eq_(OFP_ACTION_SET_QUEUE_PACK_STR, '!HHI')
- eq_(OFP_ACTION_SET_QUEUE_SIZE, 8)
-
- def test_struct_ofp_aciton_mpls_ttl(self):
- eq_(OFP_ACTION_MPLS_TTL_PACK_STR, '!HHB3x')
- eq_(OFP_ACTION_MPLS_TTL_SIZE, 8)
-
- def test_struct_ofp_action_nw_ttl(self):
- eq_(OFP_ACTION_NW_TTL_PACK_STR, '!HHB3x')
- eq_(OFP_ACTION_NW_TTL_SIZE, 8)
-
- def test_struct_ofp_action_push(self):
- eq_(OFP_ACTION_PUSH_PACK_STR, '!HHH2x')
- eq_(OFP_ACTION_PUSH_SIZE, 8)
-
- def test_struct_ofp_action_pop_mpls(self):
- eq_(OFP_ACTION_POP_MPLS_PACK_STR, '!HHH2x')
- eq_(OFP_ACTION_POP_MPLS_SIZE, 8)
-
- def test_struct_ofp_action_set_field(self):
- eq_(OFP_ACTION_SET_FIELD_PACK_STR, '!HH4B')
- eq_(OFP_ACTION_SET_FIELD_SIZE, 8)
-
- def test_struct_ofp_action_experimenter_header(self):
- eq_(OFP_ACTION_EXPERIMENTER_HEADER_PACK_STR, '!HHI')
- eq_(OFP_ACTION_EXPERIMENTER_HEADER_SIZE, 8)
-
- def test_struct_ofp_switch_feature(self):
- eq_(OFP_SWITCH_FEATURES_PACK_STR, '!QIB3xII')
- eq_(OFP_SWITCH_FEATURES_SIZE, 32)
-
- def test_enum_ofp_capabilities(self):
- eq_(OFPC_FLOW_STATS, 1 << 0)
- eq_(OFPC_TABLE_STATS, 1 << 1)
- eq_(OFPC_PORT_STATS, 1 << 2)
- eq_(OFPC_GROUP_STATS, 1 << 3)
- eq_(OFPC_IP_REASM, 1 << 5)
- eq_(OFPC_QUEUE_STATS, 1 << 6)
- eq_(OFPC_PORT_BLOCKED, 1 << 8)
-
- def test_struct_ofp_switch_config(self):
- eq_(OFP_SWITCH_CONFIG_PACK_STR, '!HH')
- eq_(OFP_SWITCH_CONFIG_SIZE, 12)
-
- def test_enum_ofp_config_flags(self):
- eq_(OFPC_FRAG_NORMAL, 0)
- eq_(OFPC_FRAG_DROP, 1 << 0)
- eq_(OFPC_FRAG_REASM, 1 << 1)
- eq_(OFPC_FRAG_MASK, 3)
- eq_(OFPC_INVALID_TTL_TO_CONTROLLER, 1 << 2)
-
- def test_enum_ofp_table(self):
- eq_(OFPTT_MAX, 0xfe)
- eq_(OFPTT_ALL, 0xff)
-
- def test_struct_ofp_table_mod(self):
- eq_(OFP_TABLE_MOD_PACK_STR, '!B3xI')
- eq_(OFP_TABLE_MOD_SIZE, 16)
-
- def test_enum_ofp_table_config(self):
- eq_(OFPTC_TABLE_MISS_CONTROLLER, 0)
- eq_(OFPTC_TABLE_MISS_CONTINUE, 1 << 0)
- eq_(OFPTC_TABLE_MISS_DROP, 1 << 1)
- eq_(OFPTC_TABLE_MISS_MASK, 3)
-
- def test_struct_ofp_flow_mod(self):
- eq_(OFP_FLOW_MOD_PACK_STR, '!QQBBHHHIIIH2xHHBBBB')
- eq_(OFP_FLOW_MOD_SIZE, 56)
-
- def test_enum_ofp_flow_mod_command(self):
- eq_(OFPFC_ADD, 0)
- eq_(OFPFC_MODIFY, 1)
- eq_(OFPFC_MODIFY_STRICT, 2)
- eq_(OFPFC_DELETE, 3)
- eq_(OFPFC_DELETE_STRICT, 4)
-
- def test_enum_ofp_flow_mod_flags(self):
- eq_(OFPFF_SEND_FLOW_REM, 1 << 0)
- eq_(OFPFF_CHECK_OVERLAP, 1 << 1)
- eq_(OFPFF_RESET_COUNTS, 1 << 2)
-
- def test_struct_ofp_group_mod(self):
- eq_(OFP_GROUP_MOD_PACK_STR, '!HBxI')
- eq_(OFP_GROUP_MOD_SIZE, 16)
-
- # same to OFPP_*
- def test_enum_ofp_group(self):
- eq_(OFPG_MAX, 0xffffff00)
- eq_(OFPG_ALL, 0xfffffffc)
- eq_(OFPG_ANY, 0xffffffff)
-
- def test_enum_ofp_group_mod_command(self):
- eq_(OFPGC_ADD, 0)
- eq_(OFPGC_MODIFY, 1)
- eq_(OFPGC_DELETE, 2)
-
- def test_enum_ofp_group_type(self):
- eq_(OFPGT_ALL, 0)
- eq_(OFPGT_SELECT, 1)
- eq_(OFPGT_INDIRECT, 2)
- eq_(OFPGT_FF, 3)
-
- def test_struct_ofp_bucket(self):
- eq_(OFP_BUCKET_PACK_STR, '!HHII4x')
- eq_(OFP_BUCKET_SIZE, 16)
-
- def test_struct_ofp_port_mod(self):
- eq_(OFP_PORT_MOD_PACK_STR, '!I4x6s2xIII4x')
- eq_(OFP_PORT_MOD_SIZE, 40)
-
- def test_sturct_ofp_stats_request(self):
- eq_(OFP_STATS_REQUEST_PACK_STR, '!HH4x')
- eq_(OFP_STATS_REQUEST_SIZE, 16)
-
- # OFPSF_REQ_* flags (none yet defined).
- # The only value defined for flags in a reply is whether more
- # replies will follow this one - this has the value 0x0001.
- def test_enum_ofp_stats_reply_flags(self):
- eq_(OFPSF_REPLY_MORE, 0x0001)
-
- def test_struct_ofp_stats_reply(self):
- eq_(OFP_STATS_REPLY_PACK_STR, '!HH4x')
- eq_(OFP_STATS_REPLY_SIZE, 16)
-
- def test_enum_ofp_stats_types(self):
- eq_(OFPST_DESC, 0)
- eq_(OFPST_FLOW, 1)
- eq_(OFPST_AGGREGATE, 2)
- eq_(OFPST_TABLE, 3)
- eq_(OFPST_PORT, 4)
- eq_(OFPST_QUEUE, 5)
- eq_(OFPST_GROUP, 6)
- eq_(OFPST_GROUP_DESC, 7)
- eq_(OFPST_GROUP_FEATURES, 8)
- eq_(OFPST_EXPERIMENTER, 0xffff)
-
- def test_struct_ofp_desc_stats(self):
- eq_(OFP_DESC_STATS_PACK_STR, '!256s256s256s32s256s')
- eq_(OFP_DESC_STATS_SIZE, 1056)
-
- def test_struct_ofp_flow_stats_request(self):
- eq_(OFP_FLOW_STATS_REQUEST_PACK_STR, '!B3xII4xQQ')
- eq_(OFP_FLOW_STATS_REQUEST_SIZE, 40)
-
- def test_struct_ofp_flow_stats(self):
- eq_(OFP_FLOW_STATS_PACK_STR, '!HBxIIHHH6xQQQ')
- eq_(OFP_FLOW_STATS_SIZE, 56)
-
- def test_struct_ofp_aggregate_stats_request(self):
- eq_(OFP_AGGREGATE_STATS_REQUEST_PACK_STR, '!B3xII4xQQ')
- eq_(OFP_AGGREGATE_STATS_REQUEST_SIZE, 40)
-
- def test_struct_ofp_aggregate_stats_reply(self):
- eq_(OFP_AGGREGATE_STATS_REPLY_PACK_STR, '!QQI4x')
- eq_(OFP_AGGREGATE_STATS_REPLY_SIZE, 24)
-
- def test_sturct_ofp_table_stats(self):
- eq_(OFP_TABLE_STATS_PACK_STR, '!B7x32sQQIIQQQQIIIIQQ')
- eq_(OFP_TABLE_STATS_SIZE, 128)
-
- def test_struct_ofp_port_stats_request(self):
- eq_(OFP_PORT_STATS_REQUEST_PACK_STR, '!I4x')
- eq_(OFP_PORT_STATS_REQUEST_SIZE, 8)
-
- def test_struct_ofp_port_stats(self):
- eq_(OFP_PORT_STATS_PACK_STR, '!I4xQQQQQQQQQQQQ')
- eq_(OFP_PORT_STATS_SIZE, 104)
-
- def test_struct_ofp_queue_stats_request(self):
- eq_(OFP_QUEUE_STATS_REQUEST_PACK_STR, '!II')
- eq_(OFP_QUEUE_STATS_REQUEST_SIZE, 8)
-
- def test_struct_ofp_queue_stats(self):
- eq_(OFP_QUEUE_STATS_PACK_STR, '!IIQQQ')
- eq_(OFP_QUEUE_STATS_SIZE, 32)
-
- def test_struct_ofp_group_stats_request(self):
- eq_(OFP_GROUP_STATS_REQUEST_PACK_STR, '!I4x')
- eq_(OFP_GROUP_STATS_REQUEST_SIZE, 8)
-
- def test_struct_ofp_group_stats(self):
- eq_(OFP_GROUP_STATS_PACK_STR, '!H2xII4xQQ')
- eq_(OFP_GROUP_STATS_SIZE, 32)
-
- def test_struct_ofp_bucket_counter(self):
- eq_(OFP_BUCKET_COUNTER_PACK_STR, '!QQ')
- eq_(OFP_BUCKET_COUNTER_SIZE, 16)
-
- def test_struct_ofp_group_desc_stats(self):
- eq_(OFP_GROUP_DESC_STATS_PACK_STR, '!HBxI')
- eq_(OFP_GROUP_DESC_STATS_SIZE, 8)
-
- def test_struct_ofp_group_features_stats(self):
- eq_(OFP_GROUP_FEATURES_STATS_PACK_STR, '!II4I4I')
- eq_(OFP_GROUP_FEATURES_STATS_SIZE, 40)
-
- def test_enmu_ofp_group_capabilities(self):
- eq_(OFPGFC_SELECT_WEIGHT, 1 << 0)
- eq_(OFPGFC_SELECT_LIVENESS, 1 << 1)
- eq_(OFPGFC_CHAINING, 1 << 2)
- eq_(OFPGFC_CHAINING_CHECKS, 1 << 3)
-
- def test_struct_ofp_experimenter_stats_header(self):
- eq_(OFP_EXPERIMENTER_STATS_HEADER_PACK_STR, '!II')
- eq_(OFP_EXPERIMENTER_STATS_HEADER_SIZE, 8)
-
- def test_struct_opf_queue_get_config_request(self):
- eq_(OFP_QUEUE_GET_CONFIG_REQUEST_PACK_STR, '!I4x')
- eq_(OFP_QUEUE_GET_CONFIG_REQUEST_SIZE, 16)
-
- def test_struct_ofp_queue_get_config_reply(self):
- eq_(OFP_QUEUE_GET_CONFIG_REPLY_PACK_STR, '!I4x')
- eq_(OFP_QUEUE_GET_CONFIG_REPLY_SIZE, 16)
-
- def test_struct_ofp_packet_out(self):
- eq_(OFP_PACKET_OUT_PACK_STR, '!IIH6x')
- eq_(OFP_PACKET_OUT_SIZE, 24)
-
- def test_struct_ofp_role_request(self):
- eq_(OFP_ROLE_REQUEST_PACK_STR, '!I4xQ')
- eq_(OFP_ROLE_REQUEST_SIZE, 24)
-
- def test_enum_ofp_controller_role(self):
- eq_(OFPCR_ROLE_NOCHANGE, 0)
- eq_(OFPCR_ROLE_EQUAL, 1)
- eq_(OFPCR_ROLE_MASTER, 2)
- eq_(OFPCR_ROLE_SLAVE, 3)
-
- def test_struct_ofp_packet_in(self):
- eq_(OFP_PACKET_IN_PACK_STR, '!IHBB')
- eq_(OFP_PACKET_IN_SIZE, 24)
-
- def test_enum_ofp_packet_in_reason(self):
- eq_(OFPR_NO_MATCH, 0)
- eq_(OFPR_ACTION, 1)
- eq_(OFPR_INVALID_TTL, 2)
-
- def test_struct_ofp_flow_removed(self):
- eq_(OFP_FLOW_REMOVED_PACK_STR, '!QHBBIIHHQQHHBBBB')
- eq_(OFP_FLOW_REMOVED_PACK_STR0, '!QHBBIIHHQQ')
- eq_(OFP_FLOW_REMOVED_SIZE, 56)
-
- def test_enum_ofp_flow_removed_reason(self):
- eq_(OFPRR_IDLE_TIMEOUT, 0)
- eq_(OFPRR_HARD_TIMEOUT, 1)
- eq_(OFPRR_DELETE, 2)
- eq_(OFPRR_GROUP_DELETE, 3)
-
- def test_struct_ofp_port_status(self):
- eq_(OFP_PORT_STATUS_PACK_STR, '!B7xI4x6s2x16sIIIIIIII')
- eq_(OFP_PORT_STATUS_DESC_OFFSET, 16)
- eq_(OFP_PORT_STATUS_SIZE, 80)
-
- def test_enum_ofp_port_reason(self):
- eq_(OFPPR_ADD, 0)
- eq_(OFPPR_DELETE, 1)
- eq_(OFPPR_MODIFY, 2)
-
- def test_struct_ofp_error_msg(self):
- eq_(OFP_ERROR_MSG_PACK_STR, '!HH')
- eq_(OFP_ERROR_MSG_SIZE, 12)
-
- def test_enum_ofp_error_type(self):
- eq_(OFPET_HELLO_FAILED, 0)
- eq_(OFPET_BAD_REQUEST, 1)
- eq_(OFPET_BAD_ACTION, 2)
- eq_(OFPET_BAD_INSTRUCTION, 3)
- eq_(OFPET_BAD_MATCH, 4)
- eq_(OFPET_FLOW_MOD_FAILED, 5)
- eq_(OFPET_GROUP_MOD_FAILED, 6)
- eq_(OFPET_PORT_MOD_FAILED, 7)
- eq_(OFPET_TABLE_MOD_FAILED, 8)
- eq_(OFPET_QUEUE_OP_FAILED, 9)
- eq_(OFPET_SWITCH_CONFIG_FAILED, 10)
- eq_(OFPET_ROLE_REQUEST_FAILED, 11)
- eq_(OFPET_EXPERIMENTER, 0xffff)
-
- def test_enum_ofp_hello_failed_code(self):
- eq_(OFPHFC_INCOMPATIBLE, 0)
- eq_(OFPHFC_EPERM, 1)
-
- def test_enum_ofp_bad_request_code(self):
- eq_(OFPBRC_BAD_VERSION, 0)
- eq_(OFPBRC_BAD_TYPE, 1)
- eq_(OFPBRC_BAD_STAT, 2)
- eq_(OFPBRC_BAD_EXPERIMENTER, 3)
- eq_(OFPBRC_BAD_EXP_TYPE, 4)
- eq_(OFPBRC_EPERM, 5)
- eq_(OFPBRC_BAD_LEN, 6)
- eq_(OFPBRC_BUFFER_EMPTY, 7)
- eq_(OFPBRC_BUFFER_UNKNOWN, 8)
- eq_(OFPBRC_BAD_TABLE_ID, 9)
- eq_(OFPBRC_IS_SLAVE, 10)
- eq_(OFPBRC_BAD_PORT, 11)
- eq_(OFPBRC_BAD_PACKET, 12)
-
- def test_enum_ofp_bad_action_code(self):
- eq_(OFPBAC_BAD_TYPE, 0)
- eq_(OFPBAC_BAD_LEN, 1)
- eq_(OFPBAC_BAD_EXPERIMENTER, 2)
- eq_(OFPBAC_BAD_EXP_TYPE, 3)
- eq_(OFPBAC_BAD_OUT_PORT, 4)
- eq_(OFPBAC_BAD_ARGUMENT, 5)
- eq_(OFPBAC_EPERM, 6)
- eq_(OFPBAC_TOO_MANY, 7)
- eq_(OFPBAC_BAD_QUEUE, 8)
- eq_(OFPBAC_BAD_OUT_GROUP, 9)
- eq_(OFPBAC_MATCH_INCONSISTENT, 10)
- eq_(OFPBAC_UNSUPPORTED_ORDER, 11)
- eq_(OFPBAC_BAD_TAG, 12)
- eq_(OFPBAC_BAD_SET_TYPE, 13)
- eq_(OFPBAC_BAD_SET_LEN, 14)
- eq_(OFPBAC_BAD_SET_ARGUMENT, 15)
-
- def test_enum_ofp_bad_instruction_code(self):
- eq_(OFPBIC_UNKNOWN_INST, 0)
- eq_(OFPBIC_UNSUP_INST, 1)
- eq_(OFPBIC_BAD_TABLE_ID, 2)
- eq_(OFPBIC_UNSUP_METADATA, 3)
- eq_(OFPBIC_UNSUP_METADATA_MASK, 4)
- eq_(OFPBIC_BAD_EXPERIMENTER, 5)
- eq_(OFPBIC_BAD_EXP_TYPE, 6)
- eq_(OFPBIC_BAD_LEN, 7)
- eq_(OFPBIC_EPERM, 8)
-
- def test_enum_ofp_bad_match_code(self):
- eq_(OFPBMC_BAD_TYPE, 0)
- eq_(OFPBMC_BAD_LEN, 1)
- eq_(OFPBMC_BAD_TAG, 2)
- eq_(OFPBMC_BAD_DL_ADDR_MASK, 3)
- eq_(OFPBMC_BAD_NW_ADDR_MASK, 4)
- eq_(OFPBMC_BAD_WILDCARDS, 5)
- eq_(OFPBMC_BAD_FIELD, 6)
- eq_(OFPBMC_BAD_VALUE, 7)
- eq_(OFPBMC_BAD_MASK, 8)
- eq_(OFPBMC_BAD_PREREQ, 9)
- eq_(OFPBMC_DUP_FIELD, 10)
- eq_(OFPBMC_EPERM, 11)
-
- def test_enum_ofp_flow_mod_failed_code(self):
- eq_(OFPFMFC_UNKNOWN, 0)
- eq_(OFPFMFC_TABLE_FULL, 1)
- eq_(OFPFMFC_BAD_TABLE_ID, 2)
- eq_(OFPFMFC_OVERLAP, 3)
- eq_(OFPFMFC_EPERM, 4)
- eq_(OFPFMFC_BAD_TIMEOUT, 5)
- eq_(OFPFMFC_BAD_COMMAND, 6)
- eq_(OFPFMFC_BAD_FLAGS, 7)
-
- def test_enum_ofp_group_mod_failed_code(self):
- eq_(OFPGMFC_GROUP_EXISTS, 0)
- eq_(OFPGMFC_INVALID_GROUP, 1)
- eq_(OFPGMFC_WEIGHT_UNSUPPORTED, 2)
- eq_(OFPGMFC_OUT_OF_GROUPS, 3)
- eq_(OFPGMFC_OUT_OF_BUCKETS, 4)
- eq_(OFPGMFC_CHAINING_UNSUPPORTED, 5)
- eq_(OFPGMFC_WATCH_UNSUPPORTED, 6)
- eq_(OFPGMFC_LOOP, 7)
- eq_(OFPGMFC_UNKNOWN_GROUP, 8)
- eq_(OFPGMFC_CHAINED_GROUP, 9)
- eq_(OFPGMFC_BAD_TYPE, 10)
- eq_(OFPGMFC_BAD_COMMAND, 11)
- eq_(OFPGMFC_BAD_BUCKET, 12)
- eq_(OFPGMFC_BAD_WATCH, 13)
- eq_(OFPGMFC_EPERM, 14)
-
- def test_enum_ofp_port_mod_failed_code(self):
- eq_(OFPPMFC_BAD_PORT, 0)
- eq_(OFPPMFC_BAD_HW_ADDR, 1)
- eq_(OFPPMFC_BAD_CONFIG, 2)
- eq_(OFPPMFC_BAD_ADVERTISE, 3)
- eq_(OFPPMFC_EPERM, 4)
-
- def test_enum_ofp_table_mod_failed_code(self):
- eq_(OFPTMFC_BAD_TABLE, 0)
- eq_(OFPTMFC_BAD_CONFIG, 1)
- eq_(OFPTMFC_EPERM, 2)
-
- def test_enum_ofp_queue_op_failed_code(self):
- eq_(OFPQOFC_BAD_PORT, 0)
- eq_(OFPQOFC_BAD_QUEUE, 1)
- eq_(OFPQOFC_EPERM, 2)
-
- def test_enum_ofp_switch_config_failed_code(self):
- eq_(OFPSCFC_BAD_FLAGS, 0)
- eq_(OFPSCFC_BAD_LEN, 1)
- eq_(OFPSCFC_EPERM, 2)
-
- def test_enum_ofp_role_request_failed_code(self):
- eq_(OFPRRFC_STALE, 0)
- eq_(OFPRRFC_UNSUP, 1)
- eq_(OFPRRFC_BAD_ROLE, 2)
-
- def test_struct_ofp_error_experimenter_msg(self):
- eq_(OFP_ERROR_EXPERIMENTER_MSG_PACK_STR, '!HHI')
- eq_(OFP_ERROR_EXPERIMENTER_MSG_SIZE, 16)
-
- def test_struct_ofp_experimenter_header(self):
- eq_(OFP_EXPERIMENTER_HEADER_PACK_STR, '!II')
- eq_(OFP_EXPERIMENTER_HEADER_SIZE, 16)
-
- # OXM is interpreted as a 32-bit word in network byte order.
- # - oxm_class 17-bit to 32-bit (OFPXMC_*).
- # - oxm_field 10-bit to 16-bit (OFPXMT_OFB_*).
- # - oxm_hasmask 9-bit (Set if OXM include a bitmask).
- # - oxm_length 1-bit to 8-bit (Lenght of OXM payload).
- def _test_OXM(self, value, class_, field, hasmask, length):
- virfy = (class_ << 16) | (field << 9) | (hasmask << 8) | length
- eq_(value >> 32, 0)
- eq_(value, virfy)
-
- def _test_OXM_basic(self, value, field, hasmask, length):
- self._test_OXM(value, OFPXMC_OPENFLOW_BASIC, field, hasmask, length)
-
- def test_OXM_basic(self):
- self._test_OXM_basic(OXM_OF_IN_PORT, OFPXMT_OFB_IN_PORT, 0, 4)
- self._test_OXM_basic(OXM_OF_IN_PHY_PORT, OFPXMT_OFB_IN_PHY_PORT, 0, 4)
- self._test_OXM_basic(OXM_OF_METADATA, OFPXMT_OFB_METADATA, 0, 8)
- self._test_OXM_basic(OXM_OF_METADATA_W, OFPXMT_OFB_METADATA, 1, 16)
- self._test_OXM_basic(OXM_OF_ETH_DST, OFPXMT_OFB_ETH_DST, 0, 6)
- self._test_OXM_basic(OXM_OF_ETH_DST_W, OFPXMT_OFB_ETH_DST, 1, 12)
- self._test_OXM_basic(OXM_OF_ETH_SRC, OFPXMT_OFB_ETH_SRC, 0, 6)
- self._test_OXM_basic(OXM_OF_ETH_SRC_W, OFPXMT_OFB_ETH_SRC, 1, 12)
- self._test_OXM_basic(OXM_OF_ETH_TYPE, OFPXMT_OFB_ETH_TYPE, 0, 2)
- self._test_OXM_basic(OXM_OF_VLAN_VID, OFPXMT_OFB_VLAN_VID, 0, 2)
- self._test_OXM_basic(OXM_OF_VLAN_VID_W, OFPXMT_OFB_VLAN_VID, 1, 4)
- self._test_OXM_basic(OXM_OF_VLAN_PCP, OFPXMT_OFB_VLAN_PCP, 0, 1)
- self._test_OXM_basic(OXM_OF_IP_DSCP, OFPXMT_OFB_IP_DSCP, 0, 1)
- self._test_OXM_basic(OXM_OF_IP_ECN, OFPXMT_OFB_IP_ECN, 0, 1)
- self._test_OXM_basic(OXM_OF_IP_PROTO, OFPXMT_OFB_IP_PROTO, 0, 1)
- self._test_OXM_basic(OXM_OF_IPV4_SRC, OFPXMT_OFB_IPV4_SRC, 0, 4)
- self._test_OXM_basic(OXM_OF_IPV4_SRC_W, OFPXMT_OFB_IPV4_SRC, 1, 8)
- self._test_OXM_basic(OXM_OF_IPV4_DST, OFPXMT_OFB_IPV4_DST, 0, 4)
- self._test_OXM_basic(OXM_OF_IPV4_DST_W, OFPXMT_OFB_IPV4_DST, 1, 8)
- self._test_OXM_basic(OXM_OF_TCP_SRC, OFPXMT_OFB_TCP_SRC, 0, 2)
- self._test_OXM_basic(OXM_OF_TCP_DST, OFPXMT_OFB_TCP_DST, 0, 2)
- self._test_OXM_basic(OXM_OF_UDP_SRC, OFPXMT_OFB_UDP_SRC, 0, 2)
- self._test_OXM_basic(OXM_OF_UDP_DST, OFPXMT_OFB_UDP_DST, 0, 2)
- self._test_OXM_basic(OXM_OF_SCTP_SRC, OFPXMT_OFB_SCTP_SRC, 0, 2)
- self._test_OXM_basic(OXM_OF_SCTP_DST, OFPXMT_OFB_SCTP_DST, 0, 2)
- self._test_OXM_basic(OXM_OF_ICMPV4_TYPE, OFPXMT_OFB_ICMPV4_TYPE, 0, 1)
- self._test_OXM_basic(OXM_OF_ICMPV4_CODE, OFPXMT_OFB_ICMPV4_CODE, 0, 1)
- self._test_OXM_basic(OXM_OF_ARP_OP, OFPXMT_OFB_ARP_OP, 0, 2)
- self._test_OXM_basic(OXM_OF_ARP_SPA, OFPXMT_OFB_ARP_SPA, 0, 4)
- self._test_OXM_basic(OXM_OF_ARP_SPA_W, OFPXMT_OFB_ARP_SPA, 1, 8)
- self._test_OXM_basic(OXM_OF_ARP_TPA, OFPXMT_OFB_ARP_TPA, 0, 4)
- self._test_OXM_basic(OXM_OF_ARP_TPA_W, OFPXMT_OFB_ARP_TPA, 1, 8)
- self._test_OXM_basic(OXM_OF_ARP_SHA, OFPXMT_OFB_ARP_SHA, 0, 6)
- self._test_OXM_basic(OXM_OF_ARP_SHA_W, OFPXMT_OFB_ARP_SHA, 1, 12)
- self._test_OXM_basic(OXM_OF_ARP_THA, OFPXMT_OFB_ARP_THA, 0, 6)
- self._test_OXM_basic(OXM_OF_ARP_THA_W, OFPXMT_OFB_ARP_THA, 1, 12)
- self._test_OXM_basic(OXM_OF_IPV6_SRC, OFPXMT_OFB_IPV6_SRC, 0, 16)
- self._test_OXM_basic(OXM_OF_IPV6_SRC_W, OFPXMT_OFB_IPV6_SRC, 1, 32)
- self._test_OXM_basic(OXM_OF_IPV6_DST, OFPXMT_OFB_IPV6_DST, 0, 16)
- self._test_OXM_basic(OXM_OF_IPV6_DST_W, OFPXMT_OFB_IPV6_DST, 1, 32)
- self._test_OXM_basic(OXM_OF_IPV6_FLABEL, OFPXMT_OFB_IPV6_FLABEL, 0, 4)
- self._test_OXM_basic(OXM_OF_IPV6_FLABEL_W,
- OFPXMT_OFB_IPV6_FLABEL, 1, 8)
- self._test_OXM_basic(OXM_OF_ICMPV6_TYPE, OFPXMT_OFB_ICMPV6_TYPE, 0, 1)
- self._test_OXM_basic(OXM_OF_ICMPV6_CODE, OFPXMT_OFB_ICMPV6_CODE, 0, 1)
- self._test_OXM_basic(OXM_OF_IPV6_ND_TARGET,
- OFPXMT_OFB_IPV6_ND_TARGET, 0, 16)
- self._test_OXM_basic(OXM_OF_IPV6_ND_SLL, OFPXMT_OFB_IPV6_ND_SLL, 0, 6)
- self._test_OXM_basic(OXM_OF_IPV6_ND_TLL, OFPXMT_OFB_IPV6_ND_TLL, 0, 6)
- self._test_OXM_basic(OXM_OF_MPLS_LABEL, OFPXMT_OFB_MPLS_LABEL, 0, 4)
- self._test_OXM_basic(OXM_OF_MPLS_TC, OFPXMT_OFB_MPLS_TC, 0, 1)
-
- def test_define_constants(self):
- eq_(OFP_VERSION, 0x03)
- eq_(OFP_TCP_PORT, 6633)
- eq_(MAX_XID, 0xffffffff)
diff --git a/tests/unit/ofproto/test_oxm.py b/tests/unit/ofproto/test_oxm.py
deleted file mode 100644
index ffb762fc..00000000
--- a/tests/unit/ofproto/test_oxm.py
+++ /dev/null
@@ -1,188 +0,0 @@
-# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2015 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-
-import ryu.ofproto.ofproto_v1_3 as ofp
-
-
-class Test_OXM(unittest.TestCase):
- def _test_encode(self, user, on_wire):
- (f, uv) = user
- (n, v, m) = ofp.oxm_from_user(f, uv)
- buf = bytearray()
- ofp.oxm_serialize(n, v, m, buf, 0)
- self.assertEqual(on_wire, buf)
-
- def _test_decode(self, user, on_wire):
- (n, v, m, l) = ofp.oxm_parse(on_wire, 0)
- self.assertEqual(len(on_wire), l)
- (f, uv) = ofp.oxm_to_user(n, v, m)
- self.assertEqual(user, (f, uv))
-
- def _test_encode_header(self, user, on_wire):
- f = user
- n = ofp.oxm_from_user_header(f)
- buf = bytearray()
- ofp.oxm_serialize_header(n, buf, 0)
- self.assertEqual(on_wire, buf)
-
- def _test_decode_header(self, user, on_wire):
- (n, l) = ofp.oxm_parse_header(on_wire, 0)
- self.assertEqual(len(on_wire), l)
- f = ofp.oxm_to_user_header(n)
- self.assertEqual(user, f)
-
- def _test(self, user, on_wire, header_bytes):
- self._test_encode(user, on_wire)
- self._test_decode(user, on_wire)
- if isinstance(user[1], tuple): # has mask?
- return
- user_header = user[0]
- on_wire_header = on_wire[:header_bytes]
- self._test_decode_header(user_header, on_wire_header)
- if user_header.startswith('field_'):
- return # not supported
- self._test_encode_header(user_header, on_wire_header)
-
- def test_basic_nomask(self):
- user = ('ipv4_src', '192.0.2.1')
- on_wire = (
- b'\x80\x00\x16\x04'
- b'\xc0\x00\x02\x01'
- )
- self._test(user, on_wire, 4)
-
- def test_basic_mask(self):
- user = ('ipv4_src', ('192.0.2.1', '255.255.0.0'))
- on_wire = (
- b'\x80\x00\x17\x08'
- b'\xc0\x00\x02\x01'
- b'\xff\xff\x00\x00'
- )
- self._test(user, on_wire, 4)
-
- def test_exp_nomask(self):
- user = ('_dp_hash', 0x12345678)
- on_wire = (
- b'\xff\xff\x00\x08'
- b'\x00\x00\x23\x20' # Nicira
- b'\x12\x34\x56\x78'
- )
- self._test(user, on_wire, 8)
-
- def test_exp_mask(self):
- user = ('_dp_hash', (0x12345678, 0x7fffffff))
- on_wire = (
- b'\xff\xff\x01\x0c'
- b'\x00\x00\x23\x20' # Nicira
- b'\x12\x34\x56\x78'
- b'\x7f\xff\xff\xff'
- )
- self._test(user, on_wire, 8)
-
- def test_exp_nomask_2(self):
- user = ('tcp_flags', 0x876)
- on_wire = (
- b'\xff\xff\x54\x06'
- b'\x4f\x4e\x46\x00' # ONF
- b'\x08\x76'
- )
- self._test(user, on_wire, 8)
-
- def test_exp_mask_2(self):
- user = ('tcp_flags', (0x876, 0x7ff))
- on_wire = (
- b'\xff\xff\x55\x08'
- b'\x4f\x4e\x46\x00' # ONF
- b'\x08\x76'
- b'\x07\xff'
- )
- self._test(user, on_wire, 8)
-
- def test_exp_nomask_3(self):
- user = ('actset_output', 0x98765432)
- on_wire = (
- b'\xff\xff\x56\x08'
- b'\x4f\x4e\x46\x00' # ONF
- b'\x98\x76\x54\x32'
- )
- self._test(user, on_wire, 8)
-
- def test_exp_mask_3(self):
- user = ('actset_output', (0x98765432, 0xfffffffe))
- on_wire = (
- b'\xff\xff\x57\x0c'
- b'\x4f\x4e\x46\x00' # ONF
- b'\x98\x76\x54\x32'
- b'\xff\xff\xff\xfe'
- )
- self._test(user, on_wire, 8)
-
- def test_nxm_1_nomask(self):
- user = ('tun_ipv4_src', '192.0.2.1')
- on_wire = (
- b'\x00\x01\x3e\x04'
- b'\xc0\x00\x02\x01'
- )
- self._test(user, on_wire, 4)
-
- def test_nxm_1_mask(self):
- user = ('tun_ipv4_src', ('192.0.2.1', '255.255.0.0'))
- on_wire = (
- b'\x00\x01\x3f\x08'
- b'\xc0\x00\x02\x01'
- b'\xff\xff\x00\x00'
- )
- self._test(user, on_wire, 4)
-
- def test_ext_256_nomask(self):
- user = ('pbb_uca', 50)
- on_wire = (
- b'\xff\xff\x00\x07'
- b'\x4f\x4e\x46\x00' # ONF
- b'\x0a\x00'
- b'\x32'
- )
- self._test(user, on_wire, 10)
-
- def test_ext_256_mask(self):
- user = ('pbb_uca', (50, 51))
- on_wire = (
- b'\xff\xff\x01\x08'
- b'\x4f\x4e\x46\x00' # ONF
- b'\x0a\x00'
- b'\x32'
- b'\x33'
- )
- self._test(user, on_wire, 10)
-
- def test_basic_unknown_nomask(self):
- user = ('field_100', 'aG9nZWhvZ2U=')
- on_wire = (
- b'\x00\x00\xc8\x08'
- b'hogehoge'
- )
- self._test(user, on_wire, 4)
-
- def test_basic_unknown_mask(self):
- user = ('field_100', ('aG9nZWhvZ2U=', 'ZnVnYWZ1Z2E='))
- on_wire = (
- b'\x00\x00\xc9\x10'
- b'hogehoge'
- b'fugafuga'
- )
- self._test(user, on_wire, 4)
diff --git a/tests/unit/ofproto/test_oxs.py b/tests/unit/ofproto/test_oxs.py
deleted file mode 100644
index 289731f0..00000000
--- a/tests/unit/ofproto/test_oxs.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-import unittest
-
-import ryu.ofproto.ofproto_v1_5 as ofp
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_OXS(unittest.TestCase):
- def _test_encode(self, user, on_wire):
- """ test encording user value into on-wire bytes.
-
- n: name of OXS field
- uv: user vale
- t: oxs_type
- v: on-wire bytes value
- """
- (n, uv) = user
- (t, v, _) = ofp.oxs_from_user(n, uv)
- buf = bytearray()
- ofp.oxs_serialize(t, v, None, buf, 0)
- self.assertEqual(on_wire, buf)
-
- def _test_decode(self, user, on_wire):
- """ test decording user value from on-wire bytes.
-
- t: oxs_type
- v: on-wire bytes value
- l: length of field
- n: name of OXS field
- uv: user vale
- """
- (t, v, _, l) = ofp.oxs_parse(on_wire, 0)
- self.assertEqual(len(on_wire), l)
- (n, uv) = ofp.oxs_to_user(t, v, None)
- self.assertEqual(user, (n, uv))
-
- def _test_encode_header(self, user, on_wire):
- """ test encording header.
-
- t: oxs_type
- """
- t = ofp.oxs_from_user_header(user)
- buf = bytearray()
- ofp.oxs_serialize_header(t, buf, 0)
- self.assertEqual(on_wire, buf)
-
- def _test_decode_header(self, user, on_wire):
- """ test decording header.
-
- t: oxs_type
- l: length of header
- n: name of OXS field
- """
- (t, l) = ofp.oxs_parse_header(on_wire, 0)
- self.assertEqual(len(on_wire), l)
- n = ofp.oxs_to_user_header(t)
- self.assertEqual(user, n)
-
- def _test(self, user, on_wire, header_bytes):
- """ execute tests.
-
- user: user specified value.
- eg. user = ('duration', (100, 100))
- on_wire: on-wire bytes
- header_bytes: header length
- """
- self._test_encode(user, on_wire)
- self._test_decode(user, on_wire)
- user_header = user[0]
- on_wire_header = on_wire[:header_bytes]
- self._test_decode_header(user_header, on_wire_header)
- if user_header.startswith('field_'):
- return # not supported
- self._test_encode_header(user_header, on_wire_header)
-
- def test_basic_single(self):
- user = ('flow_count', 100)
- on_wire = (
- b'\x80\x02\x06\x04'
- b'\x00\x00\x00\x64'
- )
- self._test(user, on_wire, 4)
-
- def test_basic_double(self):
- user = ('duration', (100, 200))
- on_wire = (
- b'\x80\x02\x00\x08'
- b'\x00\x00\x00\x64'
- b'\x00\x00\x00\xc8'
- )
- self._test(user, on_wire, 4)
-
- def test_basic_unknown(self):
- user = ('field_100', 'aG9nZWhvZ2U=')
- on_wire = (
- b'\x00\x00\xc8\x08'
- b'hogehoge'
- )
- self._test(user, on_wire, 4)
diff --git a/tests/unit/ofproto/test_parser.py b/tests/unit/ofproto/test_parser.py
deleted file mode 100644
index 9e19fd8f..00000000
--- a/tests/unit/ofproto/test_parser.py
+++ /dev/null
@@ -1,312 +0,0 @@
-# Copyright (C) 2013,2014,2015 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013,2014,2015 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import json
-import sys
-import unittest
-
-import six
-from nose.tools import eq_
-
-from ryu import exception
-from ryu.ofproto import ofproto_parser
-from ryu.ofproto import ofproto_protocol
-from ryu.ofproto import ofproto_v1_0
-from ryu.ofproto import ofproto_v1_2
-from ryu.ofproto import ofproto_v1_3
-from ryu.ofproto import ofproto_v1_4
-from ryu.ofproto import ofproto_v1_5
-
-from tests import test_lib
-
-
-# (has_parser, has_serializer)
-implemented = {
- 1: {
- ofproto_v1_0.OFPT_PACKET_OUT: (False, True),
- ofproto_v1_0.OFPT_FEATURES_REQUEST: (False, True),
- ofproto_v1_0.OFPT_FEATURES_REPLY: (True, False),
- ofproto_v1_0.OFPT_PACKET_IN: (True, False),
- ofproto_v1_0.OFPT_FLOW_MOD: (True, True),
- },
- 3: {
- ofproto_v1_2.OFPT_FEATURES_REQUEST: (False, True),
- ofproto_v1_2.OFPT_FEATURES_REPLY: (True, False),
- ofproto_v1_2.OFPT_GET_CONFIG_REQUEST: (False, True),
- ofproto_v1_2.OFPT_GET_CONFIG_REPLY: (True, False),
- ofproto_v1_2.OFPT_SET_CONFIG: (False, True),
- ofproto_v1_2.OFPT_PACKET_IN: (True, False),
- ofproto_v1_2.OFPT_FLOW_REMOVED: (True, False),
- ofproto_v1_2.OFPT_PORT_STATUS: (True, False),
- ofproto_v1_2.OFPT_PACKET_OUT: (False, True),
- ofproto_v1_2.OFPT_FLOW_MOD: (True, True),
- ofproto_v1_2.OFPT_GROUP_MOD: (False, True),
- ofproto_v1_2.OFPT_PORT_MOD: (False, True),
- ofproto_v1_2.OFPT_TABLE_MOD: (False, True),
- ofproto_v1_2.OFPT_STATS_REQUEST: (False, True),
- ofproto_v1_2.OFPT_STATS_REPLY: (True, False),
- ofproto_v1_2.OFPT_BARRIER_REQUEST: (False, True),
- ofproto_v1_2.OFPT_QUEUE_GET_CONFIG_REQUEST: (False, True),
- ofproto_v1_2.OFPT_QUEUE_GET_CONFIG_REPLY: (True, False),
- ofproto_v1_2.OFPT_ROLE_REQUEST: (False, True),
- ofproto_v1_2.OFPT_ROLE_REPLY: (True, False),
- },
- 4: {
- ofproto_v1_3.OFPT_HELLO: (True, False),
- ofproto_v1_3.OFPT_FEATURES_REQUEST: (False, True),
- ofproto_v1_3.OFPT_FEATURES_REPLY: (True, False),
- ofproto_v1_3.OFPT_GET_CONFIG_REQUEST: (False, True),
- ofproto_v1_3.OFPT_GET_CONFIG_REPLY: (True, False),
- ofproto_v1_3.OFPT_SET_CONFIG: (False, True),
- ofproto_v1_3.OFPT_PACKET_IN: (True, False),
- ofproto_v1_3.OFPT_FLOW_REMOVED: (True, False),
- ofproto_v1_3.OFPT_PORT_STATUS: (True, False),
- ofproto_v1_3.OFPT_PACKET_OUT: (False, True),
- ofproto_v1_3.OFPT_FLOW_MOD: (True, True),
- ofproto_v1_3.OFPT_GROUP_MOD: (False, True),
- ofproto_v1_3.OFPT_PORT_MOD: (False, True),
- ofproto_v1_3.OFPT_METER_MOD: (False, True),
- ofproto_v1_3.OFPT_TABLE_MOD: (False, True),
- ofproto_v1_3.OFPT_MULTIPART_REQUEST: (False, True),
- ofproto_v1_3.OFPT_MULTIPART_REPLY: (True, False),
- ofproto_v1_3.OFPT_BARRIER_REQUEST: (False, True),
- ofproto_v1_3.OFPT_QUEUE_GET_CONFIG_REQUEST: (False, True),
- ofproto_v1_3.OFPT_QUEUE_GET_CONFIG_REPLY: (True, False),
- ofproto_v1_3.OFPT_ROLE_REQUEST: (False, True),
- ofproto_v1_3.OFPT_ROLE_REPLY: (True, False),
- ofproto_v1_3.OFPT_GET_ASYNC_REQUEST: (False, True),
- ofproto_v1_3.OFPT_GET_ASYNC_REPLY: (True, False),
- ofproto_v1_3.OFPT_SET_ASYNC: (False, True),
- },
- 5: {
- ofproto_v1_4.OFPT_HELLO: (True, False),
- ofproto_v1_4.OFPT_FEATURES_REQUEST: (False, True),
- ofproto_v1_4.OFPT_FEATURES_REPLY: (True, False),
- ofproto_v1_4.OFPT_GET_CONFIG_REQUEST: (False, True),
- ofproto_v1_4.OFPT_GET_CONFIG_REPLY: (True, False),
- ofproto_v1_4.OFPT_SET_CONFIG: (False, True),
- ofproto_v1_4.OFPT_PACKET_IN: (True, False),
- ofproto_v1_4.OFPT_FLOW_REMOVED: (True, False),
- ofproto_v1_4.OFPT_PORT_STATUS: (True, False),
- ofproto_v1_4.OFPT_PACKET_OUT: (False, True),
- ofproto_v1_4.OFPT_FLOW_MOD: (True, True),
- ofproto_v1_4.OFPT_GROUP_MOD: (True, True),
- ofproto_v1_4.OFPT_PORT_MOD: (False, True),
- ofproto_v1_4.OFPT_METER_MOD: (True, True),
- ofproto_v1_4.OFPT_TABLE_MOD: (False, True),
- ofproto_v1_4.OFPT_MULTIPART_REQUEST: (False, True),
- ofproto_v1_4.OFPT_MULTIPART_REPLY: (True, False),
- ofproto_v1_4.OFPT_BARRIER_REQUEST: (False, True),
- ofproto_v1_4.OFPT_ROLE_REQUEST: (False, True),
- ofproto_v1_4.OFPT_ROLE_REPLY: (True, False),
- ofproto_v1_4.OFPT_GET_ASYNC_REQUEST: (False, True),
- ofproto_v1_4.OFPT_GET_ASYNC_REPLY: (True, False),
- ofproto_v1_4.OFPT_SET_ASYNC: (False, True),
- ofproto_v1_4.OFPT_ROLE_STATUS: (True, False),
- ofproto_v1_4.OFPT_TABLE_STATUS: (True, False),
- ofproto_v1_4.OFPT_REQUESTFORWARD: (True, True),
- ofproto_v1_4.OFPT_BUNDLE_CONTROL: (False, True),
- ofproto_v1_4.OFPT_BUNDLE_ADD_MESSAGE: (False, True),
- },
- 6: {
- ofproto_v1_5.OFPT_HELLO: (True, False),
- ofproto_v1_5.OFPT_FEATURES_REQUEST: (False, True),
- ofproto_v1_5.OFPT_FEATURES_REPLY: (True, False),
- ofproto_v1_5.OFPT_GET_CONFIG_REQUEST: (False, True),
- ofproto_v1_5.OFPT_GET_CONFIG_REPLY: (True, False),
- ofproto_v1_5.OFPT_SET_CONFIG: (False, True),
- ofproto_v1_5.OFPT_PACKET_IN: (True, False),
- ofproto_v1_5.OFPT_FLOW_REMOVED: (True, False),
- ofproto_v1_5.OFPT_PORT_STATUS: (True, False),
- ofproto_v1_5.OFPT_PACKET_OUT: (False, True),
- ofproto_v1_5.OFPT_FLOW_MOD: (True, True),
- ofproto_v1_5.OFPT_GROUP_MOD: (True, True),
- ofproto_v1_5.OFPT_PORT_MOD: (False, True),
- ofproto_v1_5.OFPT_METER_MOD: (True, True),
- ofproto_v1_5.OFPT_TABLE_MOD: (False, True),
- ofproto_v1_5.OFPT_MULTIPART_REQUEST: (False, True),
- ofproto_v1_5.OFPT_MULTIPART_REPLY: (True, False),
- ofproto_v1_5.OFPT_BARRIER_REQUEST: (False, True),
- ofproto_v1_5.OFPT_ROLE_REQUEST: (False, True),
- ofproto_v1_5.OFPT_ROLE_REPLY: (True, False),
- ofproto_v1_5.OFPT_GET_ASYNC_REQUEST: (False, True),
- ofproto_v1_5.OFPT_GET_ASYNC_REPLY: (True, False),
- ofproto_v1_5.OFPT_SET_ASYNC: (False, True),
- ofproto_v1_5.OFPT_ROLE_STATUS: (True, False),
- ofproto_v1_5.OFPT_TABLE_STATUS: (True, False),
- ofproto_v1_5.OFPT_REQUESTFORWARD: (True, True),
- ofproto_v1_5.OFPT_BUNDLE_CONTROL: (True, True),
- ofproto_v1_5.OFPT_BUNDLE_ADD_MESSAGE: (False, True),
- ofproto_v1_5.OFPT_CONTROLLER_STATUS: (True, False),
- },
-}
-
-
-class Test_Parser(unittest.TestCase):
- """ Test case for ryu.ofproto, especially json representation
- """
-
- def __init__(self, methodName):
- print('init %s' % methodName)
- super(Test_Parser, self).__init__(methodName)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- @staticmethod
- def _msg_to_jsondict(msg):
- return msg.to_jsondict()
-
- @staticmethod
- def _jsondict_to_msg(dp, jsondict):
- return ofproto_parser.ofp_msg_from_jsondict(dp, jsondict)
-
- def _test_msg(self, name, wire_msg, json_str):
- def bytes_eq(buf1, buf2):
- if buf1 != buf2:
- msg = 'EOF in either data'
- for i in range(0, min(len(buf1), len(buf2))):
- c1 = six.indexbytes(six.binary_type(buf1), i)
- c2 = six.indexbytes(six.binary_type(buf2), i)
- if c1 != c2:
- msg = 'differs at chr %d, %d != %d' % (i, c1, c2)
- break
- assert buf1 == buf2, "%r != %r, %s" % (buf1, buf2, msg)
-
- json_dict = json.loads(json_str)
- # on-wire -> OFPxxx -> json
- (version, msg_type, msg_len, xid) = ofproto_parser.header(wire_msg)
- try:
- has_parser, has_serializer = implemented[version][msg_type]
- except KeyError:
- has_parser = True
- has_serializer = True
-
- dp = ofproto_protocol.ProtocolDesc(version=version)
- if has_parser:
- try:
- msg = ofproto_parser.msg(dp, version, msg_type, msg_len, xid,
- wire_msg)
- json_dict2 = self._msg_to_jsondict(msg)
- except exception.OFPTruncatedMessage as e:
- json_dict2 = {'OFPTruncatedMessage':
- self._msg_to_jsondict(e.ofpmsg)}
- # XXXdebug code
- open(('/tmp/%s.json' % name), 'w').write(json.dumps(json_dict2))
- eq_(json_dict, json_dict2)
- if 'OFPTruncatedMessage' in json_dict2:
- return
-
- # json -> OFPxxx -> json
- xid = json_dict[list(json_dict.keys())[0]].pop('xid', None)
- msg2 = self._jsondict_to_msg(dp, json_dict)
- msg2.set_xid(xid)
- if has_serializer:
- msg2.serialize()
- eq_(self._msg_to_jsondict(msg2), json_dict)
- bytes_eq(wire_msg, msg2.buf)
-
- # check if "len" "length" fields can be omitted
-
- def _remove(d, names):
- f = lambda x: _remove(x, names)
- if isinstance(d, list):
- return list(map(f, d))
- if isinstance(d, dict):
- d2 = {}
- for k, v in d.items():
- if k in names:
- continue
- d2[k] = f(v)
- return d2
- return d
-
- json_dict3 = _remove(json_dict, ['len', 'length'])
- msg3 = self._jsondict_to_msg(dp, json_dict3)
- msg3.set_xid(xid)
- msg3.serialize()
- bytes_eq(wire_msg, msg3.buf)
-
- msg2.serialize()
- bytes_eq(wire_msg, msg2.buf)
-
-
-def _add_tests():
- import os
- import os.path
- import functools
-
- this_dir = os.path.dirname(sys.modules[__name__].__file__)
- packet_data_dir = os.path.join(this_dir, '../../packet_data')
- json_dir = os.path.join(this_dir, 'json')
- ofvers = [
- 'of10',
- 'of12',
- 'of13',
- 'of14',
- 'of15',
- ]
- cases = set()
- for ver in ofvers:
- pdir = packet_data_dir + '/' + ver
- jdir = json_dir + '/' + ver
- n_added = 0
- for file in os.listdir(pdir):
- if file.endswith('.packet'):
- truncated = None
- elif '.truncated' in file:
- # contents of .truncated files aren't relevant
- s1, s2 = file.split('.truncated')
- try:
- truncated = int(s2)
- except ValueError:
- continue
- file = s1 + '.packet'
- else:
- continue
- wire_msg = open(pdir + '/' + file, 'rb').read()
- if not truncated:
- json_str = open(jdir + '/' + file + '.json', 'r').read()
- else:
- json_str = open(jdir + '/' + file +
- '.truncated%d.json' % truncated, 'r').read()
- wire_msg = wire_msg[:truncated]
- method_name = ('test_' + file).replace('-', '_').replace('.', '_')
- if truncated:
- method_name += '_truncated%d' % truncated
-
- def _run(self, name, wire_msg, json_str):
- print('processing %s ...' % name)
- if six.PY3:
- self._test_msg(self, name, wire_msg, json_str)
- else:
- self._test_msg(name, wire_msg, json_str)
- print('adding %s ...' % method_name)
- f = functools.partial(_run, name=method_name, wire_msg=wire_msg,
- json_str=json_str)
- test_lib.add_method(Test_Parser, method_name, f)
- cases.add(method_name)
- n_added += 1
- assert n_added > 0
- assert (cases ==
- set(unittest.defaultTestLoader.getTestCaseNames(Test_Parser)))
-
-_add_tests()
diff --git a/tests/unit/ofproto/test_parser_compat.py b/tests/unit/ofproto/test_parser_compat.py
deleted file mode 100644
index 8b98e27c..00000000
--- a/tests/unit/ofproto/test_parser_compat.py
+++ /dev/null
@@ -1,159 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-from struct import unpack
-import unittest
-
-import six
-from nose.tools import eq_
-
-from ryu.lib import addrconv
-from ryu.ofproto import ofproto_v1_2
-from ryu.ofproto import ofproto_v1_3
-from ryu.ofproto import ofproto_v1_2_parser
-from ryu.ofproto import ofproto_v1_3_parser
-
-from tests import test_lib
-
-
-class Test_Parser_Compat(unittest.TestCase):
- def __init__(self, methodName):
- print('init %s' % methodName)
- super(Test_Parser_Compat, self).__init__(methodName)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _test(self, name, ofpp):
- ofp = {
- ofproto_v1_2_parser: ofproto_v1_2,
- ofproto_v1_3_parser: ofproto_v1_3,
- }[ofpp]
-
- in_port = 987654321
- eth_src = 'aa:bb:cc:dd:ee:ff'
- ipv4_src = '192.0.2.9'
- ipv6_src = 'fe80::f00b:a4ff:feef:5d8f'
-
- old_in_port = in_port
- old_eth_src = addrconv.mac.text_to_bin(eth_src)
- old_ipv4_src = unpack('!I', addrconv.ipv4.text_to_bin(ipv4_src))[0]
- old_ipv6_src = list(unpack('!8H',
- addrconv.ipv6.text_to_bin(ipv6_src)))
-
- def check(o):
- check_old(o)
- check_new(o)
-
- def check_old(o):
- # old api
- def get_field(m, t):
- for f in m.fields:
- if isinstance(f, t):
- return f
- get_value = lambda m, t: get_field(m, t).value
-
- eq_(get_value(o, ofpp.MTInPort), old_in_port)
- eq_(get_value(o, ofpp.MTEthSrc), old_eth_src)
- eq_(get_value(o, ofpp.MTIPV4Src), old_ipv4_src)
- eq_(get_value(o, ofpp.MTIPv6Src), old_ipv6_src)
-
- def check_new(o):
- # new api
- eq_(o['in_port'], in_port)
- eq_(o['eth_src'], eth_src)
- eq_(o['ipv4_src'], ipv4_src)
- eq_(o['ipv6_src'], ipv6_src)
-
- # ensure that old and new api produces the same thing
-
- # old api
- old = ofpp.OFPMatch()
- old.set_in_port(old_in_port)
- old.set_dl_src(old_eth_src)
- old.set_ipv4_src(old_ipv4_src)
- old.set_ipv6_src(old_ipv6_src)
-
- old_buf = bytearray()
- old.serialize(old_buf, 0)
-
- # note: you can't inspect an object composed with the old set_XXX api
- # before serialize().
- check_old(old)
-
- # another variant of old api; originally it was intended to be
- # internal but actually used in the field. eg. LINC l2_switch_v1_3.py
- old2 = ofpp.OFPMatch()
- old2.append_field(ofp.OXM_OF_IN_PORT, old_in_port)
- old2.append_field(ofp.OXM_OF_ETH_SRC, old_eth_src)
- old2.append_field(ofp.OXM_OF_IPV4_SRC, old_ipv4_src)
- old2.append_field(ofp.OXM_OF_IPV6_SRC, old_ipv6_src)
- check_old(old2)
-
- old2_buf = bytearray()
- old2.serialize(old2_buf, 0)
-
- # new api
- new = ofpp.OFPMatch(in_port=in_port, eth_src=eth_src,
- ipv4_src=ipv4_src, ipv6_src=ipv6_src)
- check_new(new)
-
- new_buf = bytearray()
- new.serialize(new_buf, 0)
- eq_(new_buf, old_buf)
- eq_(new_buf, old2_buf)
-
- old_jsondict = old.to_jsondict()
- old2_jsondict = old2.to_jsondict()
- new_jsondict = new.to_jsondict()
- eq_(new_jsondict, old_jsondict)
- eq_(new_jsondict, old2_jsondict)
-
- eq_(str(new), str(old))
- eq_(str(new), str(old2))
-
- # a parsed object can be inspected by old and new api
-
- check(ofpp.OFPMatch.parser(six.binary_type(new_buf), 0))
- check(ofpp.OFPMatch.from_jsondict(list(new_jsondict.values())[0]))
-
-
-def _add_tests():
- import functools
- import itertools
-
- ofpps = [ofproto_v1_2_parser, ofproto_v1_3_parser]
- for ofpp in ofpps:
- mod = ofpp.__name__.split('.')[-1]
- method_name = 'test_' + mod + '_ofpmatch_compat'
-
- def _run(self, name, ofpp):
- print('processing %s ...' % name)
- if six.PY3:
- self._test(self, name, ofpp)
- else:
- self._test(name, ofpp)
- print('adding %s ...' % method_name)
- f = functools.partial(_run, name=method_name,
- ofpp=ofpp)
- test_lib.add_method(Test_Parser_Compat, method_name, f)
-
-_add_tests()
diff --git a/tests/unit/ofproto/test_parser_ofpmatch.py b/tests/unit/ofproto/test_parser_ofpmatch.py
deleted file mode 100644
index 91da3d3d..00000000
--- a/tests/unit/ofproto/test_parser_ofpmatch.py
+++ /dev/null
@@ -1,292 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-try:
- # Python 3
- from functools import reduce
-except ImportError:
- # Python 2
- pass
-
-import unittest
-
-import six
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.ofproto import ofproto_v1_2
-from ryu.ofproto import ofproto_v1_3
-from ryu.ofproto import ofproto_v1_4
-from ryu.ofproto import ofproto_v1_5
-from ryu.ofproto import ofproto_v1_2_parser
-from ryu.ofproto import ofproto_v1_3_parser
-from ryu.ofproto import ofproto_v1_4_parser
-from ryu.ofproto import ofproto_v1_5_parser
-
-from tests import test_lib
-
-
-class Test_Parser_OFPMatch(unittest.TestCase):
- _ofp = {ofproto_v1_2_parser: ofproto_v1_2,
- ofproto_v1_3_parser: ofproto_v1_3,
- ofproto_v1_4_parser: ofproto_v1_4,
- ofproto_v1_5_parser: ofproto_v1_5}
-
- def __init__(self, methodName):
- print('init %s' % methodName)
- super(Test_Parser_OFPMatch, self).__init__(methodName)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _test(self, name, ofpp, d, domask):
- if domask:
- d = dict(self._ofp[ofpp].oxm_normalize_user(k, uv)
- for (k, uv)
- in d.items())
- match = ofpp.OFPMatch(**d)
- b = bytearray()
- match.serialize(b, 0)
- match2 = match.parser(six.binary_type(b), 0)
- for k, v in d.items():
- ok_(k in match)
- ok_(k in match2)
- eq_(match[k], v)
- eq_(match2[k], v)
- for k, v in match.iteritems():
- ok_(k in d)
- eq_(d[k], v)
- for k, v in match2.iteritems():
- ok_(k in d)
- eq_(d[k], v)
-
-
-def _add_tests():
- import functools
- import itertools
-
- class Field(object):
- @classmethod
- def generate_mask(cls):
- return list(cls.generate())[1]
-
- class Int1(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0xff
-
- class Int2(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x1234
- yield 0xffff
-
- class Int3(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x123456
- yield 0xffffff
-
- class Int4(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x12345678
- yield 0xffffffff
-
- class Int8(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x123456789abcdef0
- yield 0xffffffffffffffff
-
- class Mac(Field):
- @staticmethod
- def generate():
- yield '00:00:00:00:00:00'
- yield 'f2:0b:a4:7d:f8:ea'
- yield 'ff:ff:ff:ff:ff:ff'
-
- class IPv4(Field):
- @staticmethod
- def generate():
- yield '0.0.0.0'
- yield '192.0.2.1'
- yield '255.255.255.255'
-
- class IPv6(Field):
- @staticmethod
- def generate():
- yield '::'
- yield 'fe80::f00b:a4ff:fed0:3f70'
- yield 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'
-
- class B64(Field):
- @staticmethod
- def generate():
- yield 'aG9nZWhvZ2U='
- yield 'ZnVnYWZ1Z2E='
-
- ofpps = [ofproto_v1_2_parser, ofproto_v1_3_parser,
- ofproto_v1_4_parser, ofproto_v1_5_parser]
- common = [
- # OpenFlow Basic
- ('in_port', Int4),
- ('in_phy_port', Int4),
- ('metadata', Int8),
- ('eth_dst', Mac),
- ('eth_src', Mac),
- ('eth_type', Int2),
- ('vlan_vid', Int2),
- ('vlan_pcp', Int1),
- ('ip_dscp', Int1),
- ('ip_ecn', Int1),
- ('ip_proto', Int1),
- ('ipv4_src', IPv4),
- ('ipv4_dst', IPv4),
- ('tcp_src', Int2),
- ('tcp_dst', Int2),
- ('udp_src', Int2),
- ('udp_dst', Int2),
- ('sctp_src', Int2),
- ('sctp_dst', Int2),
- ('icmpv4_type', Int1),
- ('icmpv4_code', Int1),
- ('arp_op', Int2),
- ('arp_spa', IPv4),
- ('arp_tpa', IPv4),
- ('arp_sha', Mac),
- ('arp_tha', Mac),
- ('ipv6_src', IPv6),
- ('ipv6_dst', IPv6),
- ('ipv6_flabel', Int4),
- ('icmpv6_type', Int1),
- ('icmpv6_code', Int1),
- ('ipv6_nd_target', IPv6),
- ('ipv6_nd_sll', Mac),
- ('ipv6_nd_tll', Mac),
- ('mpls_label', Int4),
- ('mpls_tc', Int1),
- # Old ONF Experimenter --> OpenFlow Basic (OF1.4+)
- ('pbb_uca', Int1),
- # ONF Experimenter --> OpenFlow Basic (OF1.5+)
- ('tcp_flags', Int2),
- ('actset_output', Int4),
- # Nicira Experimenter
- ('eth_dst_nxm', Mac),
- ('eth_src_nxm', Mac),
- ('tunnel_id_nxm', Int8),
- ('tun_ipv4_src', IPv4),
- ('tun_ipv4_dst', IPv4),
- ('pkt_mark', Int4),
- ('conj_id', Int4),
- ('tun_ipv6_src', IPv6),
- ('tun_ipv6_dst', IPv6),
- ('_dp_hash', Int4),
- ('reg0', Int4),
- ('reg1', Int4),
- ('reg2', Int4),
- ('reg3', Int4),
- ('reg4', Int4),
- ('reg5', Int4),
- ('reg6', Int4),
- ('reg7', Int4),
- # Common Experimenter
- ('field_100', B64),
- ]
- L = {}
- L[ofproto_v1_2_parser] = common + [
- # OF1.2 doesn't have OXM_OF_PBB_ISID.
- # OFPXMC_OPENFLOW_BASIC = 0x8000
- # OXM_OF_PBB_ISID = 37
- # (OFPXMC_OPENFLOW_BASIC << 7) + OXM_OF_PBB_ISID == 4194341
- ('field_4194341', B64),
- ]
- L[ofproto_v1_3_parser] = common + [
- # OpenFlow Basic (OF1.3+)
- ('mpls_bos', Int1),
- ('pbb_isid', Int3),
- ('tunnel_id', Int8),
- ('ipv6_exthdr', Int2),
- ]
- L[ofproto_v1_4_parser] = L[ofproto_v1_3_parser]
- L[ofproto_v1_5_parser] = L[ofproto_v1_4_parser] + [
- # OpenFlow Basic (OF1.5+)
- ('packet_type', Int4),
- ]
-
- def flatten_one(l, i):
- if isinstance(i, tuple):
- return l + flatten(i)
- else:
- return l + [i]
- flatten = lambda l: reduce(flatten_one, l, [])
-
- for ofpp in ofpps:
- for n in range(1, 3):
- for C in itertools.combinations(L[ofpp], n):
- l = [1]
- keys = []
- clss = []
- for (k, cls) in C:
- l = itertools.product(l, cls.generate())
- keys.append(k)
- clss.append(cls)
- l = [flatten(x)[1:] for x in l]
- for domask in [True, False]:
- for values in l:
- if domask:
- values = [(value, cls.generate_mask())
- for (cls, value)
- in zip(clss, values)]
- d = dict(zip(keys, values))
- mod = ofpp.__name__.split('.')[-1]
- method_name = 'test_' + mod
- if domask:
- method_name += '_mask'
- for k in sorted(dict(d).keys()):
- method_name += '_' + str(k)
- method_name += '_' + str(d[k])
- method_name = method_name.replace(':', '_')
- method_name = method_name.replace('.', '_')
- method_name = method_name.replace('(', '_')
- method_name = method_name.replace(')', '_')
- method_name = method_name.replace(',', '_')
- method_name = method_name.replace("'", '_')
- method_name = method_name.replace(' ', '_')
-
- def _run(self, name, ofpp, d, domask):
- print('processing %s ...' % name)
- if six.PY3:
- self._test(self, name, ofpp, d, domask)
- else:
- self._test(name, ofpp, d, domask)
- print('adding %s ...' % method_name)
- f = functools.partial(_run, name=method_name,
- ofpp=ofpp, d=d, domask=domask)
- test_lib.add_method(Test_Parser_OFPMatch,
- method_name, f)
-
-_add_tests()
diff --git a/tests/unit/ofproto/test_parser_ofpstats.py b/tests/unit/ofproto/test_parser_ofpstats.py
deleted file mode 100644
index 3f413a42..00000000
--- a/tests/unit/ofproto/test_parser_ofpstats.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-try:
- # Python 3
- from functools import reduce
-except ImportError:
- # Python 2
- pass
-
-import unittest
-
-import six
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.ofproto import ofproto_v1_5
-from ryu.ofproto import ofproto_v1_5_parser
-
-from tests import test_lib
-
-
-class Test_Parser_OFPStats(unittest.TestCase):
- _ofp = {ofproto_v1_5_parser: ofproto_v1_5}
-
- def __init__(self, methodName):
- print('init %s' % methodName)
- super(Test_Parser_OFPStats, self).__init__(methodName)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _test(self, name, ofpp, d):
- stats = ofpp.OFPStats(**d)
- b = bytearray()
- stats.serialize(b, 0)
- stats2 = stats.parser(six.binary_type(b), 0)
- for k, v in d.items():
- ok_(k in stats)
- ok_(k in stats2)
- eq_(stats[k], v)
- eq_(stats2[k], v)
- for k, v in stats.iteritems():
- ok_(k in d)
- eq_(d[k], v)
- for k, v in stats2.iteritems():
- ok_(k in d)
- eq_(d[k], v)
-
-
-def _add_tests():
- import functools
- import itertools
-
- class Field(object):
- pass
-
- class Int1(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0xff
-
- class Int2(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x1234
- yield 0xffff
-
- class Int3(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x123456
- yield 0xffffff
-
- class Int4(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x12345678
- yield 0xffffffff
-
- class Int4double(Field):
- @staticmethod
- def generate():
- # Note: If yield value as a tuple, flatten_one() will reduce it
- # into a single value. So the followings avoid this problem by
- # using a list value.
- yield [0, 1]
- yield [0x12345678, 0x23456789]
- yield [0xffffffff, 0xfffffffe]
-
- class Int8(Field):
- @staticmethod
- def generate():
- yield 0
- yield 0x123456789abcdef0
- yield 0xffffffffffffffff
-
- class Mac(Field):
- @staticmethod
- def generate():
- yield '00:00:00:00:00:00'
- yield 'f2:0b:a4:7d:f8:ea'
- yield 'ff:ff:ff:ff:ff:ff'
-
- class IPv4(Field):
- @staticmethod
- def generate():
- yield '0.0.0.0'
- yield '192.0.2.1'
- yield '255.255.255.255'
-
- class IPv6(Field):
- @staticmethod
- def generate():
- yield '::'
- yield 'fe80::f00b:a4ff:fed0:3f70'
- yield 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'
-
- class B64(Field):
- @staticmethod
- def generate():
- yield 'aG9nZWhvZ2U='
- yield 'ZnVnYWZ1Z2E='
-
- ofpps = [ofproto_v1_5_parser]
- common = [
- ('duration', Int4double),
- ('idle_time', Int4double),
- ('flow_count', Int4),
- ('packet_count', Int8),
- ('byte_count', Int8),
- ('field_100', B64),
- ]
- L = {}
- L[ofproto_v1_5_parser] = common
-
- def flatten_one(l, i):
- if isinstance(i, tuple):
- return l + flatten(i)
- else:
- return l + [i]
- flatten = lambda l: reduce(flatten_one, l, [])
-
- for ofpp in ofpps:
- for n in range(1, 3):
- for C in itertools.combinations(L[ofpp], n):
- l = [1]
- keys = []
- clss = []
- for (k, cls) in C:
- l = itertools.product(l, cls.generate())
- keys.append(k)
- clss.append(cls)
- l = [flatten(x)[1:] for x in l]
- for values in l:
- d = dict(zip(keys, values))
- for n, uv in d.items():
- if isinstance(uv, list):
- # XXX
- # OFPStats returns value as tuple when field is
- # 'duration' or 'idle_time'. Then convert list
- # value into tuple here.
- d[n] = tuple(uv)
- mod = ofpp.__name__.split('.')[-1]
- method_name = 'test_' + mod
- for k in sorted(dict(d).keys()):
- method_name += '_' + str(k)
- method_name += '_' + str(d[k])
- method_name = method_name.replace(':', '_')
- method_name = method_name.replace('.', '_')
- method_name = method_name.replace('(', '_')
- method_name = method_name.replace(')', '_')
- method_name = method_name.replace(',', '_')
- method_name = method_name.replace("'", '_')
- method_name = method_name.replace(' ', '_')
-
- def _run(self, name, ofpp, d):
- print('processing %s ...' % name)
- if six.PY3:
- self._test(self, name, ofpp, d)
- else:
- self._test(name, ofpp, d)
- print('adding %s ...' % method_name)
- f = functools.partial(_run, name=method_name,
- ofpp=ofpp, d=d)
- test_lib.add_method(Test_Parser_OFPStats,
- method_name, f)
-
-_add_tests()
diff --git a/tests/unit/ofproto/test_parser_v10.py b/tests/unit/ofproto/test_parser_v10.py
deleted file mode 100644
index eefb65f2..00000000
--- a/tests/unit/ofproto/test_parser_v10.py
+++ /dev/null
@@ -1,5556 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-from nose.tools import *
-from ryu.ofproto.ofproto_v1_0_parser import *
-from ryu.ofproto.nx_actions import *
-from ryu.ofproto import ofproto_v1_0_parser
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger('test_ofproto_v10')
-
-
-class TestOFPPhyPort(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPhyPort
- """
-
- # OFP_PHY_PORT_PACK_STR
- # '!H6s16sIIIIII'... port_no, hw_addr, name, config, state
- # curr, advertised, supported, peer
- port_no = {'buf': b'\xe7\x6b', 'val': 59243}
- hw_addr = '52:54:54:10:20:99'
- name = b'name'.ljust(16)
- config = {'buf': b'\x84\xb6\x8c\x53', 'val': 2226555987}
- state = {'buf': b'\x64\x07\xfb\xc9', 'val': 1678244809}
- curr = {'buf': b'\xa9\xe8\x0a\x2b', 'val': 2850556459}
- advertised = {'buf': b'\x78\xb9\x7b\x72', 'val': 2025421682}
- supported = {'buf': b'\x7e\x65\x68\xad', 'val': 2120575149}
- peer = {'buf': b'\xa4\x5b\x8b\xed', 'val': 2757463021}
-
- buf = port_no['buf'] \
- + addrconv.mac.text_to_bin(hw_addr) \
- + name \
- + config['buf'] \
- + state['buf'] \
- + curr['buf'] \
- + advertised['buf'] \
- + supported['buf'] \
- + peer['buf']
-
- c = OFPPhyPort(port_no['val'],
- hw_addr,
- name,
- config['val'],
- state['val'],
- curr['val'],
- advertised['val'],
- supported['val'],
- peer['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.port_no['val'], self.c.port_no)
- eq_(self.hw_addr, self.c.hw_addr)
- eq_(self.name, self.c.name)
- eq_(self.config['val'], self.c.config)
- eq_(self.state['val'], self.c.state)
- eq_(self.curr['val'], self.c.curr)
- eq_(self.advertised['val'], self.c.advertised)
- eq_(self.supported['val'], self.c.supported)
- eq_(self.peer['val'], self.c.peer)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.port_no['val'], res.port_no)
- eq_(self.hw_addr, res.hw_addr)
- eq_(self.name, res.name)
- eq_(self.config['val'], res.config)
- eq_(self.state['val'], res.state)
- eq_(self.curr['val'], res.curr)
- eq_(self.advertised['val'], res.advertised)
- eq_(self.supported['val'], res.supported)
- eq_(self.peer['val'], res.peer)
-
-
-class TestOFPMatch(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPMatch
- """
-
- # OFP_MATCH_PACK_STR
- # '!IH6s6sHBxHBB2xIIHH'...wildcards, in_port, dl_src, dl_dst, dl_vlan,
- # dl_vlan_pcp, dl_type, nw_tos, nw_proto,
- # nw_src, nw_dst, tp_src, tp_dst
- wildcards = {'buf': b'\x00\x02\x10\x00', 'val': 135168}
- in_port = {'buf': b'\x37\x8b', 'val': 14219}
- dl_src = {'buf': b'\x52\x54\x54\x10\x20\x99',
- 'human': '52:54:54:10:20:99'}
- dl_dst = {'buf': b'\x61\x31\x50\x6d\xc9\xe5',
- 'human': '61:31:50:6d:c9:e5'}
- dl_vlan = {'buf': b'\xc1\xf9', 'val': 49657}
- dl_vlan_pcp = {'buf': b'\x79', 'val': 121}
- zfill0 = b'\x00'
- dl_type = {'buf': b'\xa6\x9e', 'val': 42654}
- nw_tos = {'buf': b'\xde', 'val': 222}
- nw_proto = {'buf': b'\xe5', 'val': 229}
- zfil11 = b'\x00' * 2
- nw_src = {'buf': b'\x1b\x6d\x8d\x4b', 'val': 460164427,
- 'human': '27.109.141.75'}
- nw_dst = {'buf': b'\xab\x25\xe1\x20', 'val': 2871386400,
- 'human': '171.37.225.32'}
- tp_src = {'buf': b'\xd5\xc3', 'val': 54723}
- tp_dst = {'buf': b'\x78\xb9', 'val': 30905}
-
- buf = wildcards['buf'] \
- + in_port['buf'] \
- + dl_src['buf'] \
- + dl_dst['buf'] \
- + dl_vlan['buf'] \
- + dl_vlan_pcp['buf'] \
- + zfill0 \
- + dl_type['buf'] \
- + nw_tos['buf'] \
- + nw_proto['buf'] \
- + zfil11 \
- + nw_src['buf'] \
- + nw_dst['buf'] \
- + tp_src['buf'] \
- + tp_dst['buf']
-
- def _get_obj(self, dl_src, dl_dst):
- c = OFPMatch(self.wildcards['val'],
- self.in_port['val'],
- dl_src,
- dl_dst,
- self.dl_vlan['val'],
- self.dl_vlan_pcp['val'],
- self.dl_type['val'],
- self.nw_tos['val'],
- self.nw_proto['val'],
- self.nw_src['val'],
- self.nw_dst['val'],
- self.tp_src['val'],
- self.tp_dst['val'])
- return c
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- c = self._get_obj(self.dl_src['buf'], self.dl_dst['buf'])
-
- eq_(self.wildcards['val'], c.wildcards)
- eq_(self.in_port['val'], c.in_port)
- eq_(self.dl_src['buf'], c.dl_src)
- eq_(self.dl_dst['buf'], c.dl_dst)
- eq_(self.dl_vlan['val'], c.dl_vlan)
- eq_(self.dl_vlan_pcp['val'], c.dl_vlan_pcp)
- eq_(self.dl_type['val'], c.dl_type)
- eq_(self.nw_tos['val'], c.nw_tos)
- eq_(self.nw_proto['val'], c.nw_proto)
- eq_(self.nw_src['val'], c.nw_src)
- eq_(self.nw_dst['val'], c.nw_dst)
- eq_(self.tp_src['val'], c.tp_src)
- eq_(self.tp_dst['val'], c.tp_dst)
-
- def test_init_zero(self):
- c = self._get_obj(0, 0)
- eq_(mac.DONTCARE, c.dl_src)
- eq_(mac.DONTCARE, c.dl_dst)
-
- def test_parse(self):
- c = self._get_obj(self.dl_src['buf'], self.dl_dst['buf'])
- res = c.parse(self.buf, 0)
-
- eq_(self.wildcards['val'], res.wildcards)
- eq_(self.in_port['val'], res.in_port)
- eq_(self.dl_src['buf'], res.dl_src)
- eq_(self.dl_dst['buf'], res.dl_dst)
- eq_(self.dl_vlan['val'], res.dl_vlan)
- eq_(self.dl_vlan_pcp['val'], res.dl_vlan_pcp)
- eq_(self.dl_type['val'], res.dl_type)
- eq_(self.nw_tos['val'], res.nw_tos)
- eq_(self.nw_proto['val'], res.nw_proto)
- eq_(self.nw_src['val'], res.nw_src)
- eq_(self.nw_dst['val'], res.nw_dst)
- eq_(self.tp_src['val'], res.tp_src)
- eq_(self.tp_dst['val'], res.tp_dst)
-
- def test_serialize(self):
- buf = bytearray()
- c = self._get_obj(self.dl_src['buf'], self.dl_dst['buf'])
-
- c.serialize(buf, 0)
-
- fmt = ofproto.OFP_MATCH_PACK_STR
- res = struct.unpack_from(fmt, six.binary_type(buf))
-
- eq_(self.wildcards['val'], res[0])
- eq_(self.in_port['val'], res[1])
- eq_(self.dl_src['buf'], res[2])
- eq_(self.dl_dst['buf'], res[3])
- eq_(self.dl_vlan['val'], res[4])
- eq_(self.dl_vlan_pcp['val'], res[5])
- eq_(self.dl_type['val'], res[6])
- eq_(self.nw_tos['val'], res[7])
- eq_(self.nw_proto['val'], res[8])
- eq_(self.nw_src['val'], res[9])
- eq_(self.nw_dst['val'], res[10])
- eq_(self.tp_src['val'], res[11])
- eq_(self.tp_dst['val'], res[12])
-
- def test_getitem(self):
- c = self._get_obj(self.dl_src['buf'], self.dl_dst['buf'])
-
- eq_(self.wildcards['val'], c["wildcards"])
- eq_(self.in_port['val'], c["in_port"])
- eq_(self.dl_src['human'], c["dl_src"])
- eq_(self.dl_dst['human'], c["dl_dst"])
- eq_(self.dl_vlan['val'], c["dl_vlan"])
- eq_(self.dl_vlan_pcp['val'], c["dl_vlan_pcp"])
- eq_(self.dl_type['val'], c["dl_type"])
- eq_(self.nw_tos['val'], c["nw_tos"])
- eq_(self.nw_proto['val'], c["nw_proto"])
- eq_(self.nw_src['human'], c["nw_src"])
- eq_(self.nw_dst['human'], c["nw_dst"])
- eq_(self.tp_src['val'], c["tp_src"])
- eq_(self.tp_dst['val'], c["tp_dst"])
-
-
-class TestOFPActionHeader(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionHeader
- """
-
- # OFP_ACTION_HEADER_PACK_STR
- # '!HH4x'...type, len, zfill
- type = {'buf': b'\x00\x02', 'val': ofproto.OFPAT_SET_VLAN_PCP}
- len = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_HEADER_SIZE}
- zfill = b'\x00' * 4
-
- buf = type['buf'] \
- + len['buf'] \
- + zfill
-
- c = OFPActionHeader(type['val'], len['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.type['val'], self.c.type)
- eq_(self.len['val'], self.c.len)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type['val'], res[0])
- eq_(self.len['val'], res[1])
-
-
-class TestOFPActionOutput(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionOutput
- """
-
- # OFP_ACTION_OUTPUT_PACK_STR
- # '!HHHH'...type, len, port, max_len
- type_ = {'buf': b'\x00\x00', 'val': ofproto.OFPAT_OUTPUT}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
- port = {'buf': b'\x19\xce', 'val': 6606}
- max_len = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + port['buf'] \
- + max_len['buf']
-
- c = OFPActionOutput(port['val'], max_len['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.port['val'], self.c.port)
- eq_(self.max_len['val'], self.c.max_len)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.port['val'], res.port)
- eq_(self.max_len['val'], res.max_len)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x01', 'val': 1}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.port['buf'] \
- + self.max_len['buf']
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.port['buf'] \
- + self.max_len['buf']
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_OUTPUT_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.port['val'], res[2])
- eq_(self.max_len['val'], res[3])
-
-
-class TestOFPActionVlanVid(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionVlanVid
- """
-
- # OFP_ACTION_VLAN_VID_PACK_STR
- # '!HHH2x'...type, len, vlan_vid, zfill
- type_ = {'buf': b'\x00\x01', 'val': ofproto.OFPAT_SET_VLAN_VID}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_VLAN_VID_SIZE}
- vlan_vid = {'buf': b'\x3c\x0e', 'val': 15374}
- zfill = b'\x00' * 2
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vlan_vid['buf'] \
- + zfill
-
- c = OFPActionVlanVid(vlan_vid['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.vlan_vid['val'], self.c.vlan_vid)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.vlan_vid['val'], res.vlan_vid)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x02', 'val': 2}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.vlan_vid['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.vlan_vid['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_VLAN_VID_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vlan_vid['val'], res[2])
-
-
-class TestOFPActionVlanPcp(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionVlanPcp
- """
-
- # OFP_ACTION_VLAN_PCP_PACK_STR
- # '!HHB3x'...type, len, vlan_pcp, zfill
- type_ = {'buf': b'\x00\x02', 'val': ofproto.OFPAT_SET_VLAN_PCP}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_VLAN_PCP_SIZE}
- vlan_pcp = {'buf': b'\x1c', 'val': 28}
- zfill = b'\x00' * 3
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vlan_pcp['buf'] \
- + zfill
-
- c = OFPActionVlanPcp(vlan_pcp['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.vlan_pcp['val'], self.c.vlan_pcp)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.vlan_pcp['val'], res.vlan_pcp)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x01', 'val': 1}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.vlan_pcp['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.vlan_pcp['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_VLAN_PCP_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vlan_pcp['val'], res[2])
-
-
-class TestOFPActionStripVlan(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionStripVlan
- """
-
- # OFP_ACTION_HEADER_PACK_STR
- # '!HH4x'...type, len, zfill
- type_ = {'buf': b'\x00\x03', 'val': ofproto.OFPAT_STRIP_VLAN}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_HEADER_SIZE}
- zfill = b'\x00' * 4
-
- buf = type_['buf'] \
- + len_['buf'] \
- + zfill
-
- c = OFPActionStripVlan()
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- ok_(self.c.parser(self.buf, 0))
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x01', 'val': 1}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
-
-class TestOFPActionSetDlSrc(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionSetDlSrc
- """
-
- # OFP_ACTION_DL_ADDR_PACK_STR
- # '!HH6s6x'...type, len, dl_addr, zfill
- type_ = {'buf': b'\x00\x04', 'val': ofproto.OFPAT_SET_DL_SRC}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.OFP_ACTION_DL_ADDR_SIZE}
- dl_addr = b'\x0e\xde\x27\xce\xc6\xcf'
- zfill = b'\x00' * 6
-
- buf = type_['buf'] \
- + len_['buf'] \
- + dl_addr \
- + zfill
-
- c = OFPActionSetDlSrc(dl_addr)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.dl_addr, self.c.dl_addr)
-
- def test_parser_type_src(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.dl_addr, res.dl_addr)
-
- def test_parser_type_dst(self):
- type_ = {'buf': b'\x00\x05', 'val': ofproto.OFPAT_SET_DL_DST}
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.dl_addr \
- + self.zfill
-
- res = self.c.parser(buf, 0)
-
- eq_(self.dl_addr, res.dl_addr)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x06', 'val': 6}
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.dl_addr \
- + self.zfill
-
- res = self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.dl_addr \
- + self.zfill
-
- res = self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_DL_ADDR_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.dl_addr, res[2])
-
-
-class TestOFPActionSetDlDst(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionSetDlDst
- """
-
- # OFP_ACTION_DL_ADDR_PACK_STR
- # '!HH6s6x'...type, len, dl_addr, zfill
- type_ = {'buf': b'\x00\x05', 'val': ofproto.OFPAT_SET_DL_DST}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.OFP_ACTION_DL_ADDR_SIZE}
- dl_addr = b'\x37\x48\x38\x9a\xf4\x28'
- zfill = b'\x00' * 6
-
- buf = type_['buf'] \
- + len_['buf'] \
- + dl_addr \
- + zfill
-
- c = OFPActionSetDlDst(dl_addr)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.dl_addr, self.c.dl_addr)
-
- def test_parser_type_dst(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.dl_addr, res.dl_addr)
-
- def test_parser_type_src(self):
- type_ = {'buf': b'\x00\x04', 'val': ofproto.OFPAT_SET_DL_SRC}
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.dl_addr \
- + self.zfill
-
- res = self.c.parser(buf, 0)
-
- eq_(self.dl_addr, res.dl_addr)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x06', 'val': 6}
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.dl_addr \
- + self.zfill
-
- res = self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.dl_addr \
- + self.zfill
-
- res = self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_DL_ADDR_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.dl_addr, res[2])
-
-
-class TestOFPActionSetNwSrc(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionSetNwSrc
- """
-
- # OFP_ACTION_NW_ADDR_PACK_STR
- # '!HHI'...type, len, nw_addr
- type_ = {'buf': b'\x00\x06', 'val': ofproto.OFPAT_SET_NW_SRC}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_NW_ADDR_SIZE}
- nw_addr = {'buf': b'\xc0\xa8\x7a\x0a', 'val': 3232266762}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + nw_addr['buf']
-
- c = OFPActionSetNwSrc(nw_addr['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.nw_addr['val'], self.c.nw_addr)
-
- def test_parser_src(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.nw_addr['val'], res.nw_addr)
-
- def test_parser_dst(self):
- type_ = {'buf': b'\x00\x07', 'val': ofproto.OFPAT_SET_NW_DST}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.nw_addr['buf']
-
- res = self.c.parser(buf, 0)
- eq_(self.nw_addr['val'], res.nw_addr)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x05', 'val': 5}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.nw_addr['buf']
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x10', 'val': 16}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.nw_addr['buf']
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_NW_ADDR_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.nw_addr['val'], res[2])
-
-
-class TestOFPActionSetNwDst(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionSetNwDst
- """
-
- # OFP_ACTION_NW_ADDR_PACK_STR
- # '!HHI'...type, len, nw_addr
- type_ = {'buf': b'\x00\x07', 'val': ofproto.OFPAT_SET_NW_DST}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_NW_ADDR_SIZE}
- nw_addr = {'buf': b'\xc0\xa8\x7a\x0a', 'val': 3232266762}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + nw_addr['buf']
-
- c = OFPActionSetNwDst(nw_addr['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.nw_addr['val'], self.c.nw_addr)
-
- def test_parser_dst(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.nw_addr['val'], res.nw_addr)
-
- def test_parser_src(self):
- type_ = {'buf': b'\x00\x06', 'val': ofproto.OFPAT_SET_NW_SRC}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.nw_addr['buf']
-
- res = self.c.parser(buf, 0)
- eq_(self.nw_addr['val'], res.nw_addr)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x05', 'val': 5}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.nw_addr['buf']
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x10', 'val': 16}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.nw_addr['buf']
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_NW_ADDR_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.nw_addr['val'], res[2])
-
-
-class TestOFPActionSetNwTos(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionSetNwTos
- """
-
- # OFP_ACTION_NW_TOS_PACK_STR
- # '!HHB3x'...type, len, tos, zfill
- type_ = {'buf': b'\x00\x08', 'val': ofproto.OFPAT_SET_NW_TOS}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_NW_TOS_SIZE}
- tos = {'buf': b'\xb6', 'val': 182}
- zfill = b'\x00' * 3
-
- buf = type_['buf'] \
- + len_['buf'] \
- + tos['buf'] \
- + zfill
-
- c = OFPActionSetNwTos(tos['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.tos['val'], self.c.tos)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.tos['val'], res.tos)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x05', 'val': 5}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.tos['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.tos['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_NW_TOS_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.tos['val'], res[2])
-
-
-class TestOFPActionSetTpSrc(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionSetTpSrc
- """
-
- # OFP_ACTION_TP_PORT_PACK_STR
- # '!HHH2x'...type, len, tp, zfill
- type_ = {'buf': b'\x00\x09', 'val': ofproto.OFPAT_SET_TP_SRC}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_TP_PORT_SIZE}
- tp = {'buf': b'\x07\xf1', 'val': 2033}
- zfill = b'\x00' * 2
-
- buf = type_['buf'] \
- + len_['buf'] \
- + tp['buf'] \
- + zfill
-
- c = OFPActionSetTpSrc(tp['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.tp['val'], self.c.tp)
-
- def test_parser_src(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.tp['val'], res.tp)
-
- def test_parser_dst(self):
- type_ = {'buf': b'\x00\x0a', 'val': ofproto.OFPAT_SET_TP_DST}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.tp['buf'] \
- + self.zfill
-
- res = self.c.parser(self.buf, 0)
- eq_(self.tp['val'], res.tp)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.tp['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.tp['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_TP_PORT_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.tp['val'], res[2])
-
-
-class TestOFPActionSetTpDst(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionSetTpDst
- """
-
- # OFP_ACTION_TP_PORT_PACK_STR
- # '!HHH2x'...type, len, tp, zfill
- type_ = {'buf': b'\x00\x0a', 'val': ofproto.OFPAT_SET_TP_DST}
- len_ = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_TP_PORT_SIZE}
- tp = {'buf': b'\x06\x6d', 'val': 1645}
- zfill = b'\x00' * 2
-
- buf = type_['buf'] \
- + len_['buf'] \
- + tp['buf'] \
- + zfill
-
- c = OFPActionSetTpDst(tp['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.tp['val'], self.c.tp)
-
- def test_parser_dst(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.tp['val'], res.tp)
-
- def test_parser_src(self):
- type_ = {'buf': b'\x00\x09', 'val': ofproto.OFPAT_SET_TP_SRC}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.tp['buf'] \
- + self.zfill
-
- res = self.c.parser(buf, 0)
- eq_(self.tp['val'], res.tp)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x10', 'val': 16}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.tp['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x07', 'val': 7}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.tp['buf'] \
- + self.zfill
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_TP_PORT_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.tp['val'], res[2])
-
-
-class TestOFPActionEnqueue(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPActionEnqueue
- """
-
- # OFP_ACTION_ENQUEUE_PACK_STR
- # '!HHH6xI'...type_, len_, port, zfill, queue_id
- type_ = {'buf': b'\x00\x0b', 'val': ofproto.OFPAT_ENQUEUE}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.OFP_ACTION_ENQUEUE_SIZE}
- port = {'buf': b'\x04\x55', 'val': 1109}
- zfill = b'\x00' * 6
- queue_id = {'buf': b'\x0a\x5b\x03\x5e', 'val': 173736798}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + port['buf'] \
- + zfill \
- + queue_id['buf']
-
- c = OFPActionEnqueue(port['val'], queue_id['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.port['val'], self.c.port)
- eq_(self.queue_id['val'], self.c.queue_id)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.port['val'], res.port)
- eq_(self.queue_id['val'], res.queue_id)
-
- @raises(AssertionError)
- def test_parser_check_type(self):
- type_ = {'buf': b'\x00\x0a', 'val': 10}
-
- buf = type_['buf'] \
- + self.len_['buf'] \
- + self.port['buf'] \
- + self.zfill \
- + self.queue_id['buf']
-
- self.c.parser(buf, 0)
-
- @raises(AssertionError)
- def test_parser_check_len(self):
- len_ = {'buf': b'\x00\x05', 'val': 5}
-
- buf = self.type_['buf'] \
- + len_['buf'] \
- + self.port['buf'] \
- + self.zfill \
- + self.queue_id['buf']
-
- self.c.parser(buf, 0)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_ENQUEUE_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.port['val'], res[2])
- eq_(self.queue_id['val'], res[3])
-
-
-class TestNXActionResubmit(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionResubmit
- """
-
- # NX_ACTION_RESUBMIT_PACK_STR
- # '!HHIHHB3x'...type, len, vendor, subtype, in_port, table, zfill
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.NX_ACTION_RESUBMIT_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20', 'val': 8992}
- subtype = {'buf': b'\x00\x01', 'val': 1}
- in_port = {'buf': b'\x0a\x4c', 'val': 2636}
- table = {'buf': b'\x52', 'val': 82}
- zfill = b'\x00' * 3
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + in_port['buf'] \
- + table['buf'] \
- + zfill
-
- c = NXActionResubmit(in_port['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.in_port['val'], self.c.in_port)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.in_port['val'], res.in_port)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_RESUBMIT_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.in_port['val'], res[4])
-
-
-class TestNXActionResubmitTable(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionResubmitTable
- """
-
- # NX_ACTION_RESUBMIT_PACK_STR
- # '!HHIHHB3x'...type, len, vendor, subtype, in_port, table, zfill
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.NX_ACTION_RESUBMIT_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20', 'val': 8992}
- subtype = {'buf': b'\x00\x0e', 'val': 14}
- in_port = {'buf': b'\x0a\x4c', 'val': 2636}
- table_id = {'buf': b'\x52', 'val': 82}
- zfill = b'\x00' * 3
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + in_port['buf'] \
- + table_id['buf'] \
- + zfill
-
- c = NXActionResubmitTable(in_port['val'], table_id['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.in_port['val'], self.c.in_port)
- eq_(self.table_id['val'], self.c.table_id)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.in_port['val'], res.in_port)
- eq_(self.table_id['val'], res.table_id)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_RESUBMIT_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.in_port['val'], res[4])
- eq_(self.table_id['val'], res[5])
-
-
-class TestNXActionSetTunnel(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionSetTunnel
- """
-
- # NX_ACTION_SET_TUNNEL_PACK_STR
- # '!HHIH2xI'...type, len, vendor, subtype, zfill, tun_id
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.NX_ACTION_SET_TUNNEL_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20', 'val': 8992}
- subtype = {'buf': b'\x00\x02', 'val': 2}
- zfill = b'\x00' * 2
- tun_id = {'buf': b'\x01\x6f\x01\xd0', 'val': 24052176}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + zfill \
- + tun_id['buf']
-
- c = NXActionSetTunnel(tun_id['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.tun_id['val'], self.c.tun_id)
-
- def test_parse(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.tun_id['val'], res.tun_id)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_SET_TUNNEL_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.tun_id['val'], res[4])
-
-
-class TestNXActionSetQueue(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionSetQueue
- """
-
- # NX_ACTION_SET_QUEUE_PACK_STR
- # '!HHIH2xI'...type, len, vendor, subtype, zfill, queue_id
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.NX_ACTION_SET_TUNNEL_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x04', 'val': ofproto.NXAST_SET_QUEUE}
- zfill = b'\x00' * 2
- queue_id = {'buf': b'\xde\xbe\xc5\x18', 'val': 3737044248}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + zfill \
- + queue_id['buf']
-
- c = NXActionSetQueue(queue_id['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.queue_id['val'], self.c.queue_id)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.queue_id['val'], res.queue_id)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_SET_QUEUE_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.queue_id['val'], res[4])
-
-
-class TestNXActionPopQueue(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionPopQueue
- """
-
- # NX_ACTION_POP_QUEUE_PACK_STR
- # '!HHIH6x'...type, len, vendor, subtype, zfill
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.NX_ACTION_SET_TUNNEL_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x05', 'val': ofproto.NXAST_POP_QUEUE}
- zfill = b'\x00' * 6
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + zfill
-
- c = NXActionPopQueue()
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_POP_QUEUE_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
-
-
-class TestNXActionRegMove(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionRegMove
- """
-
- # NX_ACTION_REG_MOVE_PACK_STR
- # '!HHIHHHHII'...type_, len_, vendor, subtype, n_bits,
- # src_ofs, dst_ofs, src, dst
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x18', 'val': ofproto.NX_ACTION_REG_MOVE_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x06', 'val': ofproto.NXAST_REG_MOVE}
- n_bits = {'buf': b'\x3d\x98', 'val': 15768}
- src_ofs = {'buf': b'\xf3\xa3', 'val': 62371}
- dst_ofs = {'buf': b'\xdc\x67', 'val': 56423}
- src_field = {'buf': b'\x00\x01\x00\x04', 'val': "reg0", "val2": 65540}
- dst_field = {'buf': b'\x00\x01\x02\x04', 'val': "reg1", "val2": 66052}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + n_bits['buf'] \
- + src_ofs['buf'] \
- + dst_ofs['buf'] \
- + src_field['buf'] \
- + dst_field['buf']
-
- c = NXActionRegMove(src_field['val'],
- dst_field['val'],
- n_bits['val'],
- src_ofs['val'],
- dst_ofs['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.src_field['val'], self.c.src_field)
- eq_(self.dst_field['val'], self.c.dst_field)
- eq_(self.n_bits['val'], self.c.n_bits)
- eq_(self.src_field['val'], self.c.src_field)
- eq_(self.dst_field['val'], self.c.dst_field)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
- eq_(self.src_ofs['val'], res.src_ofs)
- eq_(self.dst_ofs['val'], res.dst_ofs)
- eq_(self.n_bits['val'], res.n_bits)
- eq_(self.src_field['val'], res.src_field)
- eq_(self.dst_field['val'], res.dst_field)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_REG_MOVE_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.n_bits['val'], res[4])
- eq_(self.src_ofs['val'], res[5])
- eq_(self.dst_ofs['val'], res[6])
- eq_(self.src_field['val2'], res[7])
- eq_(self.dst_field['val2'], res[8])
-
-
-class TestNXActionRegLoad(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionRegLoad
- """
-
- # NX_ACTION_REG_LOAD_PACK_STR
- # '!HHIHHIQ'...type_, len_, vendor, subtype,
- # ofs_nbits, dst, value
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x18', 'val': ofproto.NX_ACTION_REG_MOVE_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x07', 'val': ofproto.NXAST_REG_LOAD}
- ofs_nbits = {'buf': b'\x3d\x98', 'val': 15768}
- dst = {'buf': b'\x00\x01\x00\x04', 'val': "reg0", "val2": 65540}
- value = {'buf': b'\x33\x51\xcd\x43\x25\x28\x18\x99',
- 'val': 3697962457317775513}
- start = 246
- end = 270
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + ofs_nbits['buf'] \
- + dst['buf'] \
- + value['buf']
-
- c = NXActionRegLoad(ofs_nbits['val'],
- dst['val'],
- value['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
- eq_(self.dst['val'], self.c.dst)
- eq_(self.value['val'], self.c.value)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
- eq_(self.dst['val'], res.dst)
- eq_(self.value['val'], res.value)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_REG_LOAD_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.ofs_nbits['val'], res[4])
- eq_(self.dst['val2'], res[5])
- eq_(self.value['val'], res[6])
-
-
-class TestNXActionSetTunnel64(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionSetTunnel64
- """
-
- # NX_ACTION_SET_TUNNEL64_PACK_STR
- # '!HHIH6xQ'...type, len, vendor, subtype, zfill, tun_id
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x18', 'val': ofproto.NX_ACTION_SET_TUNNEL64_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x09', 'val': ofproto.NXAST_SET_TUNNEL64}
- zfill = b'\x00' * 6
- tun_id = {'buf': b'\x6e\x01\xa6\xea\x7e\x36\x1d\xd9',
- 'val': 7926800345218817497}
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + zfill \
- + tun_id['buf']
-
- c = NXActionSetTunnel64(tun_id['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.tun_id['val'], self.c.tun_id)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
- eq_(self.tun_id['val'], res.tun_id)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_SET_TUNNEL64_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.tun_id['val'], res[4])
-
-
-class TestNXActionMultipath(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionMultipath
- """
-
- # NX_ACTION_MULTIPATH_PACK_STR
- # '!HHIHHH2xHHI2xHI'...type, len, vendor, subtype, fields, basis, zfill
- # algorithm, max_link, arg, zfill, ofs_nbits, dst
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x20', 'val': ofproto.NX_ACTION_MULTIPATH_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x0a', 'val': ofproto.NXAST_MULTIPATH}
- fields = {'buf': b'\x6d\xf5', 'val': 28149}
- basis = {'buf': b'\x7c\x0a', 'val': 31754}
- zfill0 = b'\x00' * 2
- algorithm = {'buf': b'\x82\x1d', 'val': 33309}
- max_link = {'buf': b'\x06\x2b', 'val': 1579}
- arg = {'buf': b'\x18\x79\x41\xc8', 'val': 410599880}
- zfill1 = b'\x00' * 2
- ofs_nbits = {'buf': b'\xa9\x9a', 'val': 43418}
- dst = {'buf': b'\x00\x01\x00\x04', 'val': "reg0", 'val2': 65540}
- start = 678
- end = 704
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + fields['buf'] \
- + basis['buf'] \
- + zfill0 \
- + algorithm['buf'] \
- + max_link['buf'] \
- + arg['buf'] \
- + zfill1 \
- + ofs_nbits['buf'] \
- + dst['buf']
-
- c = NXActionMultipath(fields['val'],
- basis['val'],
- algorithm['val'],
- max_link['val'],
- arg['val'],
- ofs_nbits['val'],
- dst['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.fields['val'], self.c.fields)
- eq_(self.basis['val'], self.c.basis)
- eq_(self.algorithm['val'], self.c.algorithm)
- eq_(self.max_link['val'], self.c.max_link)
- eq_(self.arg['val'], self.c.arg)
- eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
- eq_(self.dst['val'], self.c.dst)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
- eq_(self.fields['val'], res.fields)
- eq_(self.basis['val'], res.basis)
- eq_(self.algorithm['val'], res.algorithm)
- eq_(self.max_link['val'], res.max_link)
- eq_(self.arg['val'], res.arg)
- eq_(self.ofs_nbits['val'], res.ofs_nbits)
- eq_(self.dst['val'], res.dst)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_MULTIPATH_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.fields['val'], res[4])
- eq_(self.basis['val'], res[5])
- eq_(self.algorithm['val'], res[6])
- eq_(self.max_link['val'], res[7])
- eq_(self.arg['val'], res[8])
- eq_(self.ofs_nbits['val'], res[9])
- eq_(self.dst['val2'], res[10])
-
-
-class TestNXActionBundle(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionBundle
- """
-
- # NX_ACTION_BUNDLE_PACK_STR
- # '!HHIHHHHIHHI4x'...type, len, vendor, subtype, algorithm,
- # fields, basis, slave_type, n_slaves,
- # ofs_nbits, dst, zfill
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x28', 'val': (ofproto.NX_ACTION_BUNDLE_SIZE + 8)}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x0c', 'val': ofproto.NXAST_BUNDLE}
- algorithm = {'buf': b'\x51\xa7', 'val': 20903}
- fields = {'buf': b'\xf8\xef', 'val': 63727}
- basis = {'buf': b'\xfd\x6f', 'val': 64879}
- slave_type = {'buf': b'\x7c\x51\x0f\xe0', 'val': 2085687264}
- n_slaves = {'buf': b'\x00\x02', 'val': 2}
- ofs_nbits = {'buf': b'\x00\x00', 'val': 0}
- dst = {'buf': b'\x00\x00\x00\x00', 'val': 0}
- zfill = b'\x00' * 4
-
- slaves_buf = (b'\x00\x01', b'\x00\x02')
- slaves_val = (1, 2)
-
- _len = len_['val'] + len(slaves_val) * 2
- _len += (_len % 8)
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + algorithm['buf'] \
- + fields['buf'] \
- + basis['buf'] \
- + slave_type['buf'] \
- + n_slaves['buf'] \
- + ofs_nbits['buf'] \
- + dst['buf'] \
- + zfill \
- + slaves_buf[0] \
- + slaves_buf[1]
-
- c = NXActionBundle(algorithm['val'],
- fields['val'],
- basis['val'],
- slave_type['val'],
- n_slaves['val'],
- ofs_nbits['val'],
- dst['val'],
- slaves_val)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.algorithm['val'], self.c.algorithm)
- eq_(self.fields['val'], self.c.fields)
- eq_(self.basis['val'], self.c.basis)
- eq_(self.slave_type['val'], self.c.slave_type)
- eq_(self.n_slaves['val'], self.c.n_slaves)
- eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
- eq_(self.dst['val'], self.c.dst)
-
- # slaves
- slaves = self.c.slaves
- eq_(self.slaves_val[0], slaves[0])
- eq_(self.slaves_val[1], slaves[1])
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
- eq_(self.algorithm['val'], res.algorithm)
- eq_(self.fields['val'], res.fields)
- eq_(self.basis['val'], res.basis)
- eq_(self.slave_type['val'], res.slave_type)
- eq_(self.n_slaves['val'], res.n_slaves)
- eq_(self.ofs_nbits['val'], res.ofs_nbits)
- eq_(self.dst['val'], res.dst)
-
- # slaves
- slaves = res.slaves
- eq_(self.slaves_val[0], slaves[0])
- eq_(self.slaves_val[1], slaves[1])
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = '!' \
- + ofproto.NX_ACTION_BUNDLE_PACK_STR.replace('!', '') \
- + 'HH4x'
-
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.algorithm['val'], res[4])
- eq_(self.fields['val'], res[5])
- eq_(self.basis['val'], res[6])
- eq_(self.slave_type['val'], res[7])
- eq_(self.n_slaves['val'], res[8])
- eq_(self.ofs_nbits['val'], res[9])
- eq_(self.dst['val'], res[10])
-
-
-class TestNXActionBundleLoad(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionBundleLoad
- """
-
- # NX_ACTION_BUNDLE_PACK_STR
- # '!HHIHHHHIHHI4x'...type, len, vendor, subtype, algorithm,
- # fields, basis, slave_type, n_slaves,
- # ofs_nbits, dst, zfill
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x28', 'val': (ofproto.NX_ACTION_BUNDLE_SIZE + 8)}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x0d', 'val': ofproto.NXAST_BUNDLE_LOAD}
- algorithm = {'buf': b'\x83\x15', 'val': 33557}
- fields = {'buf': b'\xc2\x7a', 'val': 49786}
- basis = {'buf': b'\x86\x18', 'val': 34328}
- slave_type = {'buf': b'\x18\x42\x0b\x55', 'val': 406981461}
- n_slaves = {'buf': b'\x00\x02', 'val': 2}
- ofs_nbits = {'buf': b'\xd2\x9d', 'val': 53917}
- dst = {'buf': b'\x00\x01\x00\x04', 'val': "reg0", 'val2': 65540}
- zfill = b'\x00' * 4
-
- slaves_buf = (b'\x00\x01', b'\x00\x02')
- slaves_val = (1, 2)
-
- _len = len_['val'] + len(slaves_val) * 2
- _len += (_len % 8)
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + algorithm['buf'] \
- + fields['buf'] \
- + basis['buf'] \
- + slave_type['buf'] \
- + n_slaves['buf'] \
- + ofs_nbits['buf'] \
- + dst['buf'] \
- + zfill \
- + slaves_buf[0] \
- + slaves_buf[1]
-
- c = NXActionBundleLoad(algorithm['val'],
- fields['val'],
- basis['val'],
- slave_type['val'],
- n_slaves['val'],
- ofs_nbits['val'],
- dst['val'],
- slaves_val)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.algorithm['val'], self.c.algorithm)
- eq_(self.fields['val'], self.c.fields)
- eq_(self.basis['val'], self.c.basis)
- eq_(self.slave_type['val'], self.c.slave_type)
- eq_(self.n_slaves['val'], self.c.n_slaves)
- eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
- eq_(self.dst['val'], self.c.dst)
-
- # slaves
- slaves = self.c.slaves
- eq_(self.slaves_val[0], slaves[0])
- eq_(self.slaves_val[1], slaves[1])
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
- eq_(self.algorithm['val'], res.algorithm)
- eq_(self.fields['val'], res.fields)
- eq_(self.basis['val'], res.basis)
- eq_(self.slave_type['val'], res.slave_type)
- eq_(self.n_slaves['val'], res.n_slaves)
- eq_(self.ofs_nbits['val'], res.ofs_nbits)
- eq_(self.dst['val'], res.dst)
-
- # slaves
- slaves = res.slaves
- eq_(self.slaves_val[0], slaves[0])
- eq_(self.slaves_val[1], slaves[1])
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = '!' \
- + ofproto.NX_ACTION_BUNDLE_PACK_STR.replace('!', '') \
- + 'HH4x'
-
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.algorithm['val'], res[4])
- eq_(self.fields['val'], res[5])
- eq_(self.basis['val'], res[6])
- eq_(self.slave_type['val'], res[7])
- eq_(self.n_slaves['val'], res[8])
- eq_(self.ofs_nbits['val'], res[9])
- eq_(self.dst['val2'], res[10])
-
-
-class TestNXActionOutputReg(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionOutputReg
- """
-
- # NX_ACTION_OUTPUT_REG_PACK_STR
- # '!HHIHHIH6x'...type, len, vendor, subtype, ofs_nbits,
- # src, max_len, zfill
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x18', 'val': ofproto.NX_ACTION_OUTPUT_REG_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x0f', 'val': ofproto.NXAST_OUTPUT_REG}
- ofs_nbits = {'buf': b'\xfe\x78', 'val': 65144}
- src = {'buf': b'\x00\x01\x00\x04', 'val': "reg0", 'val2': 65540}
- max_len = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
- zfill = b'\x00' * 6
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + ofs_nbits['buf'] \
- + src['buf'] \
- + max_len['buf'] \
- + zfill
-
- c = NXActionOutputReg(ofs_nbits['val'],
- src['val'],
- max_len['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
- eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
- eq_(self.src['val'], self.c.src)
- eq_(self.max_len['val'], self.c.max_len)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
- eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
- eq_(self.src['val'], res.src)
- eq_(self.max_len['val'], res.max_len)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_OUTPUT_REG_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
- eq_(self.ofs_nbits['val'], res[4])
- eq_(self.src['val2'], res[5])
- eq_(self.max_len['val'], res[6])
-
-
-class TestNXActionExit(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXActionExit
- """
-
- # NX_ACTION_HEADER_PACK_STR
- # '!HHIH'...type, len, vendor, subtype
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPAT_VENDOR}
- len_ = {'buf': b'\x00\x10', 'val': ofproto.NX_ACTION_HEADER_SIZE}
- vendor = {'buf': b'\x00\x00\x23\x20',
- 'val': ofproto_common.NX_EXPERIMENTER_ID}
- subtype = {'buf': b'\x00\x11', 'val': ofproto.NXAST_EXIT}
- zfill = b'\x00' * 6
-
- buf = type_['buf'] \
- + len_['buf'] \
- + vendor['buf'] \
- + subtype['buf'] \
- + zfill
-
- c = NXActionExit()
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.subtype['val'], self.c.subtype)
-
- def test_parser(self):
- res = OFPActionVendor.parser(self.buf, 0)
- eq_(self.type_['val'], res.type)
- eq_(self.len_['val'], res.len)
- eq_(self.subtype['val'], res.subtype)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- fmt = ofproto.NX_ACTION_HEADER_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(self.type_['val'], res[0])
- eq_(self.len_['val'], res[1])
- eq_(self.vendor['val'], res[2])
- eq_(self.subtype['val'], res[3])
-
-
-class TestOFPDescStats(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPDescStats
- """
-
- # OFP_DESC_STATS_PACK_STR
- # '!256s256s256s32s256s'...mfr_desc, hw_desc, sw_desc, serial_num, dp_desc
- mfr_desc = b'mfr_desc'.ljust(256)
- hw_desc = b'hw_desc'.ljust(256)
- sw_desc = b'sw_desc'.ljust(256)
- serial_num = b'serial_num'.ljust(32)
- dp_desc = b'dp_desc'.ljust(256)
-
- buf = mfr_desc \
- + hw_desc \
- + sw_desc \
- + serial_num \
- + dp_desc
-
- c = OFPDescStats(mfr_desc, hw_desc, sw_desc, serial_num, dp_desc)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.mfr_desc, self.c.mfr_desc)
- eq_(self.hw_desc, self.c.hw_desc)
- eq_(self.sw_desc, self.c.sw_desc)
- eq_(self.serial_num, self.c.serial_num)
- eq_(self.dp_desc, self.c.dp_desc)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.mfr_desc, self.mfr_desc)
- eq_(self.hw_desc, self.hw_desc)
- eq_(self.sw_desc, self.sw_desc)
- eq_(self.serial_num, self.serial_num)
- eq_(self.dp_desc, self.dp_desc)
-
-
-class TestOFPFlowStats(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPFlowStats
- """
-
- # OFP_FLOW_STATS_0_PACK_STR
- # '!HBx'...length, table_id, zfill
- length = {'buf': b'\x00\x58', 'val': 88}
- length_append_action = {'buf': b'\x00\x60', 'val': 96}
- table_id = {'buf': b'\x51', 'val': 81}
- zfill_0 = b'\x00'
-
- # OFP_MATCH_PACK_STR
- # '!IH6s6sHBxHBB2xIIHH'...
- match = b'\x97\x7c\xa6\x1e' \
- + b'\x5e\xa0' \
- + b'\x7a\x3e\xed\x30\x4a\x90' \
- + b'\x96\x8e\x67\xbe\x2f\xe2' \
- + b'\xb1\x81' \
- + b'\xbe' \
- + b'\x00' \
- + b'\x01\xab' \
- + b'\x42' \
- + b'\xfe' \
- + b'\x00\x00' \
- + b'\xa4\x5d\x5c\x42' \
- + b'\xa2\x5c\x2e\x05' \
- + b'\x5a\x94' \
- + b'\x64\xd4'
-
- # OFP_FLOW_STATS_1_PACK_STR
- # '!IIHHH6xQQQ'...duration_sec, duration_nsec, priority,
- # idle_timeout, hard_timeout, zfill,
- # cookie, packet_count, byte_count
- duration_sec = {'buf': b'\x94\x19\xb3\xd2', 'val': 2484712402}
- duration_nsec = {'buf': b'\xee\x66\xcf\x7c', 'val': 3999715196}
- priority = {'buf': b'\xe1\xc0', 'val': 57792}
- idle_timeout = {'buf': b'\x8e\x10', 'val': 36368}
- hard_timeout = {'buf': b'\xd4\x99', 'val': 54425}
- zfill_1 = b'\x00\x00\x00\x00\x00\x00'
- cookie = {'buf': b'\x0b\x01\xe8\xe5\xf0\x84\x8a\xe0',
- 'val': 793171083674290912}
- packet_count = {'buf': b'\x47\x5c\xc6\x05\x28\xff\x7c\xdb',
- 'val': 5142202600015232219}
- byte_count = {'buf': b'\x24\xe9\x4b\xee\xcb\x57\xd9\xc3',
- 'val': 2659740543924820419}
-
- # <action>_PACK_STR...type_, len_ [others...]
- type = {'buf': b'\x00\x00', 'val': ofproto.OFPAT_OUTPUT}
- len = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
- port = {'buf': b'\x59\x2a', 'val': 22826}
- max_len = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
- action = (type, len, port, max_len)
-
- ACTION_TYPE = 0
- ACTION_LEN = 1
- ACTION_PORT = 2
- ACTION_MAX_LEN = 3
-
- c = OFPFlowStats()
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def _parser(self, action=None):
- buf = self.table_id['buf'] \
- + self.zfill_0 \
- + self.match \
- + self.duration_sec['buf'] \
- + self.duration_nsec['buf'] \
- + self.priority['buf'] \
- + self.idle_timeout['buf'] \
- + self.hard_timeout['buf'] \
- + self.zfill_1 \
- + self.cookie['buf'] \
- + self.packet_count['buf'] \
- + self.byte_count['buf']
-
- if not action:
- buf = self.length['buf'] + buf
- else:
- buf = self.length_append_action['buf'] + buf
-
- for a in self.action:
- buf = buf + a['buf']
-
- return self.c.parser(buf, 0)
-
- def test_parser(self):
- res = self._parser()
-
- eq_(self.length['val'], res.length)
- eq_(self.table_id['val'], res.table_id)
- eq_(self.duration_sec['val'], res.duration_sec)
- eq_(self.duration_nsec['val'], res.duration_nsec)
- eq_(self.priority['val'], res.priority)
- eq_(self.idle_timeout['val'], res.idle_timeout)
- eq_(self.hard_timeout['val'], res.hard_timeout)
- eq_(self.cookie['val'], res.cookie)
- eq_(self.packet_count['val'], res.packet_count)
- eq_(self.byte_count['val'], res.byte_count)
-
- def test_parser_append_actions(self):
- res = self._parser(True).actions[0]
-
- eq_(self.action[self.ACTION_TYPE]['val'], res.type)
- eq_(self.action[self.ACTION_LEN]['val'], res.len)
- eq_(self.action[self.ACTION_PORT]['val'], res.port)
- eq_(self.action[self.ACTION_MAX_LEN]['val'], res.max_len)
-
-
-class TestOFPAggregateStats(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPAggregateStats
- """
-
- # OFP_AGGREGATE_STATS_REPLY_PACK_STR
- # '!QQI4x'...packet_count, byte_count, flow_count, zfill
- packet_count = {'buf': b'\x43\x95\x1b\xfb\x0f\xf6\xa7\xdd',
- 'val': 4869829337189623773}
- byte_count = {'buf': b'\x36\xda\x2d\x80\x2a\x95\x35\xdd',
- 'val': 3952521651464517085}
- flow_count = {'buf': b'\xc3\x0d\xc3\xed', 'val': 3272459245}
- zfill = b'\x00' * 4
-
- buf = packet_count['buf'] \
- + byte_count['buf'] \
- + flow_count['buf'] \
- + zfill
-
- c = OFPAggregateStats(packet_count['val'],
- byte_count['val'],
- flow_count['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.packet_count['val'], self.c.packet_count)
- eq_(self.byte_count['val'], self.c.byte_count)
- eq_(self.flow_count['val'], self.c.flow_count)
-
- def test_parser(self):
-
- res = self.c.parser(self.buf, 0)
-
- eq_(self.packet_count['val'], res.packet_count)
- eq_(self.byte_count['val'], res.byte_count)
- eq_(self.flow_count['val'], res.flow_count)
-
-
-class TestOFPTableStats(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPTableStats
- """
-
- # OFP_TABLE_STATS_PACK_STR
- # '!B3x32sIIIQQ'...table_id, zfill, name, wildcards, max_entries,
- # active_count, lookup_count, matched_count
- table_id = {'buf': b'\x5b', 'val': 91}
- zfill = b'\x00' * 3
- name = b'name'.ljust(32)
- wildcards = {'buf': b'\xc5\xaf\x6e\x12', 'val': 3316608530}
- max_entries = {'buf': b'\x95\x6c\x78\x4d', 'val': 2506913869}
- active_count = {'buf': b'\x78\xac\xa8\x1e', 'val': 2024581150}
- lookup_count = {'buf': b'\x40\x1d\x9c\x39\x19\xec\xd4\x1c',
- 'val': 4620020561814017052}
- matched_count = {'buf': b'\x27\x35\x02\xb6\xc5\x5e\x17\x65',
- 'val': 2825167325263435621}
-
- buf = table_id['buf'] \
- + zfill \
- + name \
- + wildcards['buf'] \
- + max_entries['buf'] \
- + active_count['buf'] \
- + lookup_count['buf'] \
- + matched_count['buf']
-
- c = OFPTableStats(table_id['val'],
- name,
- wildcards['val'],
- max_entries['val'],
- active_count['val'],
- lookup_count['val'],
- matched_count['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.table_id['val'], self.c.table_id)
- eq_(self.name, self.c.name)
- eq_(self.wildcards['val'], self.c.wildcards)
- eq_(self.max_entries['val'], self.c.max_entries)
- eq_(self.active_count['val'], self.c.active_count)
- eq_(self.lookup_count['val'], self.c.lookup_count)
- eq_(self.matched_count['val'], self.c.matched_count)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.table_id['val'], res.table_id)
- eq_(self.name, res.name)
- eq_(self.wildcards['val'], res.wildcards)
- eq_(self.max_entries['val'], res.max_entries)
- eq_(self.active_count['val'], res.active_count)
- eq_(self.lookup_count['val'], res.lookup_count)
- eq_(self.matched_count['val'], res.matched_count)
-
-
-class TestOFPPortStats(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPortStats
- """
-
- # OFP_PORT_STATS_PACK_STR
- # '!H6xQQQQQQQQQQQQ'... port_no, zfill, rx_packets, tx_packets,
- # rx_bytes, tx_bytes, rx_dropped, tx_dropped,
- # rx_errors, tx_errors, rx_frame_err,
- # rx_over_err, rx_crc_err, collisions
- port_no = {'buf': b'\xe7\x6b', 'val': 59243}
- zfill = b'\x00' * 6
- rx_packets = {'buf': b'\x53\x44\x36\x61\xc4\x86\xc0\x37',
- 'val': 5999980397101236279}
- tx_packets = {'buf': b'\x27\xa4\x41\xd7\xd4\x53\x9e\x42',
- 'val': 2856480458895760962}
- rx_bytes = {'buf': b'\x55\xa1\x38\x60\x43\x97\x0d\x89',
- 'val': 6170274950576278921}
- tx_bytes = {'buf': b'\x77\xe1\xd5\x63\x18\xae\x63\xaa',
- 'val': 8638420181865882538}
- rx_dropped = {'buf': b'\x60\xe6\x20\x01\x24\xda\x4e\x5a',
- 'val': 6982303461569875546}
- tx_dropped = {'buf': b'\x09\x2d\x5d\x71\x71\xb6\x8e\xc7',
- 'val': 661287462113808071}
- rx_errors = {'buf': b'\x2f\x7e\x35\xb3\x66\x3c\x19\x0d',
- 'val': 3422231811478788365}
- tx_errors = {'buf': b'\x57\x32\x08\x2f\x88\x32\x40\x6b',
- 'val': 6283093430376743019}
- rx_frame_err = {'buf': b'\x0c\x28\x6f\xad\xce\x66\x6e\x8b',
- 'val': 876072919806406283}
- rx_over_err = {'buf': b'\x5a\x90\x8f\x9b\xfc\x82\x2e\xa0',
- 'val': 6525873760178941600}
- rx_crc_err = {'buf': b'\x73\x3a\x71\x17\xd6\x74\x69\x47',
- 'val': 8303073210207070535}
- collisions = {'buf': b'\x2f\x52\x0c\x79\x96\x03\x6e\x79',
- 'val': 3409801584220270201}
-
- buf = port_no['buf'] \
- + zfill \
- + rx_packets['buf'] \
- + tx_packets['buf'] \
- + rx_bytes['buf'] \
- + tx_bytes['buf'] \
- + rx_dropped['buf'] \
- + tx_dropped['buf'] \
- + rx_errors['buf'] \
- + tx_errors['buf'] \
- + rx_frame_err['buf'] \
- + rx_over_err['buf'] \
- + rx_crc_err['buf'] \
- + collisions['buf']
-
- c = OFPPortStats(port_no['val'],
- rx_packets['val'],
- tx_packets['val'],
- rx_bytes['val'],
- tx_bytes['val'],
- rx_dropped['val'],
- tx_dropped['val'],
- rx_errors['val'],
- tx_errors['val'],
- rx_frame_err['val'],
- rx_over_err['val'],
- rx_crc_err['val'],
- collisions['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.port_no['val'], self.c.port_no)
- eq_(self.rx_packets['val'], self.c.rx_packets)
- eq_(self.tx_packets['val'], self.c.tx_packets)
- eq_(self.rx_bytes['val'], self.c.rx_bytes)
- eq_(self.tx_bytes['val'], self.c.tx_bytes)
- eq_(self.rx_dropped['val'], self.c.rx_dropped)
- eq_(self.tx_dropped['val'], self.c.tx_dropped)
- eq_(self.rx_errors['val'], self.c.rx_errors)
- eq_(self.tx_errors['val'], self.c.tx_errors)
- eq_(self.rx_frame_err['val'], self.c.rx_frame_err)
- eq_(self.rx_over_err['val'], self.c.rx_over_err)
- eq_(self.rx_crc_err['val'], self.c.rx_crc_err)
- eq_(self.collisions['val'], self.c.collisions)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.port_no['val'], res.port_no)
- eq_(self.rx_packets['val'], res.rx_packets)
- eq_(self.tx_packets['val'], res.tx_packets)
- eq_(self.rx_bytes['val'], res.rx_bytes)
- eq_(self.tx_bytes['val'], res.tx_bytes)
- eq_(self.rx_dropped['val'], res.rx_dropped)
- eq_(self.tx_dropped['val'], res.tx_dropped)
- eq_(self.rx_errors['val'], res.rx_errors)
- eq_(self.tx_errors['val'], res.tx_errors)
- eq_(self.rx_frame_err['val'], res.rx_frame_err)
- eq_(self.rx_over_err['val'], res.rx_over_err)
- eq_(self.rx_crc_err['val'], res.rx_crc_err)
- eq_(self.collisions['val'], res.collisions)
-
-
-class TestOFPQueueStats(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPQueueStats
- """
-
- # OFP_QUEUE_STATS_PACK_STR
- # '!H2xIQQQ...port_no, queue_id, tx_bytes, tx_packets, tx_errors
- port_no = {'buf': b'\xe7\x6b', 'val': 59243}
- zfill = b'\x00' * 2
- queue_id = {'buf': b'\x2a\xa8\x7f\x32', 'val': 715685682}
- tx_bytes = {'buf': b'\x77\xe1\xd5\x63\x18\xae\x63\xaa',
- 'val': 8638420181865882538}
- tx_packets = {'buf': b'\x27\xa4\x41\xd7\xd4\x53\x9e\x42',
- 'val': 2856480458895760962}
- tx_errors = {'buf': b'\x57\x32\x08\x2f\x88\x32\x40\x6b',
- 'val': 6283093430376743019}
-
- c = OFPQueueStats(port_no['val'],
- queue_id['val'],
- tx_bytes['val'],
- tx_packets['val'],
- tx_errors['val'])
-
- buf = port_no['buf'] \
- + zfill \
- + queue_id['buf'] \
- + tx_bytes['buf'] \
- + tx_packets['buf'] \
- + tx_errors['buf']
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.port_no['val'], self.c.port_no)
- eq_(self.queue_id['val'], self.c.queue_id)
- eq_(self.tx_bytes['val'], self.c.tx_bytes)
- eq_(self.tx_packets['val'], self.c.tx_packets)
- eq_(self.tx_errors['val'], self.c.tx_errors)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.port_no['val'], res.port_no)
- eq_(self.queue_id['val'], res.queue_id)
- eq_(self.tx_bytes['val'], res.tx_bytes)
- eq_(self.tx_packets['val'], res.tx_packets)
- eq_(self.tx_errors['val'], res.tx_errors)
-
-
-class TestOFPVendorStats(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPVendorStats
- """
-
- specific_data = 'specific_data'
- specific_data_after = 'data'
- offset = specific_data.find(specific_data_after)
-
- c = OFPVendorStats(specific_data)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.specific_data, self.c.specific_data)
-
- def test_parser(self):
- res = self.c.parser(self.specific_data, self.offset)
- eq_(self.specific_data_after, res.specific_data)
-
-
-class TestOFPQueuePropNone(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPQueuePropNone
- """
-
- # OFP_QUEUE_PROP_HEADER_PACK_STR
- # '!HH4x'...property_, len_
- property = {'buf': b'\x00\x00', 'val': ofproto.OFPQT_NONE}
- len = {'buf': b'\x00\x08', 'val': ofproto.OFP_QUEUE_PROP_HEADER_SIZE}
- zfill = b'\x00' * 4
-
- c = OFPQueuePropNone()
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- cls = OFPQueuePropHeader._QUEUE_PROPERTIES[self.c.cls_prop_type]
-
- eq_(self.property['val'], self.c.cls_prop_type)
- eq_(self.property['val'], self.c.property)
- eq_(self.property['val'], cls.cls_prop_type)
-
- eq_(self.len['val'], self.c.cls_prop_len)
- eq_(self.len['val'], self.c.len)
- eq_(self.len['val'], cls.cls_prop_len)
-
- def test_parser(self):
- buf = self.property['buf'] \
- + self.len['buf'] \
- + self.zfill
-
- ok_(self.c.parser(buf, 0))
-
-
-class TestOFPQueuePropMinRate(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPQueuePropMinRate
- """
-
- # OFP_QUEUE_PROP_MIN_RATE_PACK_STR
- # '!H6x'...rate
- rate = {'buf': b'\x00\x01', 'val': ofproto.OFPQT_MIN_RATE}
- len = {'buf': b'\x00\x10', 'val': ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE}
- zfill = b'\x00' * 6
-
- buf = rate['buf'] \
- + zfill
-
- c = OFPQueuePropMinRate(rate['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- cls = OFPQueuePropHeader._QUEUE_PROPERTIES[self.c.cls_prop_type]
-
- eq_(self.rate['val'], self.c.cls_prop_type)
- eq_(self.rate['val'], self.c.rate)
- eq_(self.rate['val'], cls.cls_prop_type)
-
- eq_(self.len['val'], self.c.cls_prop_len)
- eq_(self.len['val'], cls.cls_prop_len)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.rate['val'], res.rate)
-
-
-class TestOFPPacketQueue(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPacketQueue
- """
-
- # OFP_PACKET_QUEUE_PQCK_STR
- # '!IH2x'...queue_id, len_, zfill
- queue_id = {'buf': b'\x4d\x4b\x3a\xd1', 'val': 1296775889}
- len_ = {'buf': b'\x00\x08',
- 'val': ofproto.OFP_QUEUE_PROP_HEADER_SIZE}
- zfill = b'\x00' * 2
-
- buf = queue_id['buf'] \
- + len_['buf'] \
- + zfill
-
- c = OFPPacketQueue(queue_id['val'],
- len_['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.queue_id['val'], self.c.queue_id)
- eq_(self.len_['val'], self.c.len)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.queue_id['val'], res.queue_id)
- eq_(self.len_['val'], res.len)
-
- def test_parser_append_prop(self):
- # OFP_QUEUE_PROP_HEADER_PACK_STR + OFP_QUEUE_PROP_MIN_RATE_PACK_STR
- # '!HH4xH6x'...type, len, zfill, rate, zfill
- len_ = {'buf': b'\x00\x10',
- 'val': ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE}
- a_type = {'buf': b'\x00\x01', 'val': ofproto.OFPQT_MIN_RATE}
- a_len = {'buf': b'\x00\x10',
- 'val': ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE}
- a_zfill0 = b'\x00' * 4
- a_rate = {'buf': b'\x00\x01', 'val': ofproto.OFPQT_MIN_RATE}
- a_zfill1 = b'\x00' * 6
-
- buf = self.queue_id['buf'] \
- + len_['buf'] \
- + self.zfill \
- + a_type['buf'] \
- + a_len['buf'] \
- + a_zfill0 \
- + a_rate['buf'] \
- + a_zfill1
-
- res = self.c.parser(buf, 0)
-
- eq_(self.queue_id['val'], res.queue_id)
- eq_(len_['val'], res.len)
-
- append_cls = res.properties[0]
-
- eq_(a_type['val'], append_cls.property)
- eq_(a_len['val'], append_cls.len)
- eq_(a_rate['val'], append_cls.rate)
-
-
-class TestOFPHello(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPHello
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_HELLO
- msg_len = ofproto.OFP_HEADER_SIZE
- xid = 2183948390
- data = b'\x00\x01\x02\x03'
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = struct.pack(fmt, version, msg_type, msg_len, xid) \
- + data
-
- res = OFPHello.parser(object, version, msg_type, msg_len, xid,
- bytearray(buf))
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(six.binary_type(buf), six.binary_type(res.buf))
-
- def test_serialize(self):
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPHello(Datapath)
- c.serialize()
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_HELLO, c.msg_type)
- eq_(0, c.xid)
-
-
-class TestOFPErrorMsg(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPErrorMsg
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x01', 'val': ofproto.OFPT_ERROR}
- msg_len = {'buf': b'\x00\x0c',
- 'val': ofproto.OFP_ERROR_MSG_SIZE}
- xid = {'buf': b'\x87\x8b\x26\x7c', 'val': 2274043516}
- type = {'buf': b'\xab\x3e', 'val': 43838}
- code = {'buf': b'\x5d\x3c', 'val': 23868}
- data = b'Error Message.'
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + type['buf'] \
- + code['buf'] \
- + data
-
- res = OFPErrorMsg.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type['val'], res.type)
- eq_(code['val'], res.code)
- eq_(data, res.data)
-
- def test_serialize(self):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- type = 1306
- code = 13774
- data = b'Error Message.'
-
- c = OFPErrorMsg(Datapath)
- c.type = type
- c.code = code
- c.data = data
-
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_ERROR, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_ERROR_MSG_PACK_STR.replace('!', '') \
- + str(len(data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_ERROR, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(type, res[4])
- eq_(code, res[5])
- eq_(data, res[6])
-
-
-class TestOFPEchoRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPEchoRequest
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x02', 'val': ofproto.OFPT_ECHO_REQUEST}
- msg_len = {'buf': b'\x00\x08',
- 'val': ofproto.OFP_HEADER_SIZE}
- xid = {'buf': b'\x84\x47\xef\x3f', 'val': 2219306815}
- data = b'Request Message.'
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + data
-
- res = OFPEchoRequest.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(data, res.data)
-
- def test_serialize(self):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- data = b'Request Message.'
-
- c = OFPEchoRequest(Datapath)
- c.data = data
-
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_ECHO_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + str(len(data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_ECHO_REQUEST, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(data, res[4])
-
-
-class TestOFPEchoReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPEchoReply
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x03', 'val': ofproto.OFPT_ECHO_REPLY}
- msg_len = {'buf': b'\x00\x08',
- 'val': ofproto.OFP_HEADER_SIZE}
- xid = {'buf': b'\x6e\x21\x3e\x62', 'val': 1847672418}
- data = b'Reply Message.'
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + data
-
- res = OFPEchoReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(data, res.data)
-
- def test_serialize(self):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- data = b'Reply Message.'
-
- c = OFPEchoReply(Datapath)
- c.data = data
-
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_ECHO_REPLY, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + str(len(data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_ECHO_REPLY, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(data, res[4])
-
-
-class TestOFPVendor(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPVendor
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x04', 'val': ofproto.OFPT_VENDOR}
- msg_len = {'buf': b'\x00\x0c',
- 'val': ofproto.OFP_VENDOR_HEADER_SIZE}
- xid = {'buf': b'\x05\x45\xdf\x18', 'val': 88465176}
- vendor = {'buf': b'\x53\xea\x25\x3e', 'val': 1407853886}
- data = b'Vendor Message.'
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + vendor['buf'] \
- + data
-
- res = OFPVendor.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(vendor['val'], res.vendor)
- eq_(data, res.data)
-
- def test_serialize(self):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- vendor = {'buf': b'\x38\x4b\xf9\x6c', 'val': 944503148}
- data = b'Reply Message.'
-
- c = OFPVendor(Datapath)
- c.vendor = vendor['val']
- c.data = data
-
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_VENDOR, c.msg_type)
- eq_(0, c.xid)
- eq_(vendor['val'], c.vendor)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_VENDOR_HEADER_PACK_STR.replace('!', '') \
- + str(len(data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_VENDOR, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(vendor['val'], res[4])
- eq_(data, res[5])
-
-
-# class TestNXTRequest(unittest.TestCase):
-class TestNiciraHeader(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NiciraHeader
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- subtype = ofproto.NXT_FLOW_MOD_TABLE_ID
-
- c = NiciraHeader(object, subtype)
- eq_(subtype, c.subtype)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- data = b'Reply Message.'
- subtype = ofproto.NXT_FLOW_MOD_TABLE_ID
-
- c = NiciraHeader(Datapath, subtype)
- c.data = data
-
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_VENDOR, c.msg_type)
- eq_(0, c.xid)
- eq_(ofproto_common.NX_EXPERIMENTER_ID, c.vendor)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NICIRA_HEADER_PACK_STR.replace('!', '') \
- + str(len(data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_VENDOR, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(ofproto_common.NX_EXPERIMENTER_ID, res[4])
- eq_(subtype, res[5])
- eq_(data, res[6])
-
-
-class TestNXTSetFlowFormat(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXTSetFlowFormat
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- flow_format = {'buf': b'\xdc\x6b\xf5\x24', 'val': 3698062628}
-
- c = NXTSetFlowFormat(object, flow_format['val'])
- eq_(flow_format['val'], c.format)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flow_format = {'buf': b'\x5a\x4e\x59\xad', 'val': 1515084205}
-
- c = NXTSetFlowFormat(Datapath, flow_format['val'])
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_VENDOR, c.msg_type)
- eq_(0, c.xid)
- eq_(ofproto_common.NX_EXPERIMENTER_ID, c.vendor)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NICIRA_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NX_SET_FLOW_FORMAT_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_VENDOR, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(ofproto_common.NX_EXPERIMENTER_ID, res[4])
- eq_(ofproto.NXT_SET_FLOW_FORMAT, res[5])
- eq_(flow_format['val'], res[6])
-
-
-class TestNXTFlowMod(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXTFlowMod
- """
-
- # NX_FLOW_MOD_PACK_STR
- # '!Q4HI3H6x'...cokkie, command, idle_timeout, head_timeout,
- # priority, buffer_id, out_port, flags, rule, zfill
- cookie = {'buf': b'\x04\x56\x27\xad\xbd\x43\xd6\x83',
- 'val': 312480851306993283}
- command = {'buf': b'\x61\xaa', 'val': 25002}
- idle_timeout = {'buf': b'\x4e\xff', 'val': 20223}
- hard_timeout = {'buf': b'\x80\x16', 'val': 32790}
- priority = {'buf': b'\x70\x5f', 'val': 28767}
- buffer_id = {'buf': b'\x7b\x97\x3a\x09', 'val': 2073508361}
- out_port = {'buf': b'\x11\x7d', 'val': 4477}
- flags = {'buf': b'\x5c\xb9', 'val': 23737}
- rule = nx_match.ClsRule()
- zfill = b'\x00' * 6
-
- port = {'buf': b'\x2a\xe0', 'val': 10976}
- actions = [OFPActionOutput(port['val'])]
-
- def _get_obj(self, append_action=False):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- actions = None
- if append_action:
- actions = self.actions
-
- c = NXTFlowMod(Datapath,
- self.cookie['val'],
- self.command['val'],
- self.idle_timeout['val'],
- self.hard_timeout['val'],
- self.priority['val'],
- self.buffer_id['val'],
- self.out_port['val'],
- self.flags['val'],
- self.rule,
- actions)
-
- return c
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- c = self._get_obj()
-
- eq_(self.cookie['val'], c.cookie)
- eq_(self.command['val'], c.command)
- eq_(self.idle_timeout['val'], c.idle_timeout)
- eq_(self.hard_timeout['val'], c.hard_timeout)
- eq_(self.priority['val'], c.priority)
- eq_(self.buffer_id['val'], c.buffer_id)
- eq_(self.out_port['val'], c.out_port)
- eq_(self.flags['val'], c.flags)
- eq_(self.rule.__hash__(), c.rule.__hash__())
-
- def test_init_append_actions(self):
- c = self._get_obj(True)
-
- action = c.actions[0]
- eq_(ofproto.OFPAT_OUTPUT, action.type)
- eq_(ofproto.OFP_ACTION_OUTPUT_SIZE, action.len)
- eq_(self.port['val'], action.port)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- c = self._get_obj()
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_VENDOR, c.msg_type)
- eq_(0, c.xid)
- eq_(ofproto_common.NX_EXPERIMENTER_ID, c.vendor)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NICIRA_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NX_FLOW_MOD_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_VENDOR, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(ofproto_common.NX_EXPERIMENTER_ID, res[4])
- eq_(ofproto.NXT_FLOW_MOD, res[5])
- eq_(self.cookie['val'], res[6])
- eq_(self.command['val'], res[7])
- eq_(self.idle_timeout['val'], res[8])
- eq_(self.hard_timeout['val'], res[9])
- eq_(self.priority['val'], res[10])
- eq_(self.buffer_id['val'], res[11])
- eq_(self.out_port['val'], res[12])
- eq_(self.flags['val'], res[13])
-
- def test_serialize_append_actions(self):
- c = self._get_obj(True)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_VENDOR, c.msg_type)
- eq_(0, c.xid)
- eq_(ofproto_common.NX_EXPERIMENTER_ID, c.vendor)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NICIRA_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NX_FLOW_MOD_PACK_STR.replace('!', '') \
- + ofproto.OFP_ACTION_OUTPUT_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_VENDOR, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(ofproto_common.NX_EXPERIMENTER_ID, res[4])
- eq_(ofproto.NXT_FLOW_MOD, res[5])
- eq_(self.cookie['val'], res[6])
- eq_(self.command['val'], res[7])
- eq_(self.idle_timeout['val'], res[8])
- eq_(self.hard_timeout['val'], res[9])
- eq_(self.priority['val'], res[10])
- eq_(self.buffer_id['val'], res[11])
- eq_(self.out_port['val'], res[12])
- eq_(self.flags['val'], res[13])
-
- # action
- eq_(0, res[14])
- eq_(ofproto.OFPAT_OUTPUT, res[15])
- eq_(ofproto.OFP_ACTION_OUTPUT_SIZE, res[16])
- eq_(self.port['val'], res[17])
- eq_(0xffe5, res[18])
-
-
-class TestNXTRoleRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXTRoleRequest
- """
-
- # NX_ROLE_PACK_STR
- # '!I'...role
- role = {'buf': b'\x62\x81\x27\x61', 'val': 1652631393}
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = NXTRoleRequest(Datapath, role['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.role['val'], self.c.role)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_VENDOR, self.c.msg_type)
- eq_(0, self.c.xid)
- eq_(ofproto_common.NX_EXPERIMENTER_ID, self.c.vendor)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NICIRA_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NX_ROLE_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_VENDOR, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
- eq_(ofproto_common.NX_EXPERIMENTER_ID, res[4])
- eq_(ofproto.NXT_ROLE_REQUEST, res[5])
- eq_(self.role['val'], res[6])
-
-
-class TestNXTFlowModTableId(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.NXTFlowModTableId
- """
-
- # NX_FLOW_MOD_TABLE_ID_PACK_STR
- # '!B7x'...set_, zfill
- set_ = {'buf': b'\x71', 'val': 113}
- zfill = b'\x00' * 7
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = NXTFlowModTableId(Datapath, set_['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.set_['val'], self.c.set)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_VENDOR, self.c.msg_type)
- eq_(0, self.c.xid)
- eq_(ofproto_common.NX_EXPERIMENTER_ID, self.c.vendor)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NICIRA_HEADER_PACK_STR.replace('!', '') \
- + ofproto.NX_FLOW_MOD_TABLE_ID_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_VENDOR, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
- eq_(ofproto_common.NX_EXPERIMENTER_ID, res[4])
- eq_(ofproto.NXT_FLOW_MOD_TABLE_ID, res[5])
- eq_(self.set_['val'], res[6])
-
-
-class TestOFPSwitchFeatures(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPSwitchFeatures
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPSwitchFeatures(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x06', 'val': ofproto.OFPT_FEATURES_REPLY}
- msg_len_val = ofproto.OFP_SWITCH_FEATURES_SIZE \
- + ofproto.OFP_PHY_PORT_SIZE
- msg_len = {'buf': b'\x00\x4c', 'val': msg_len_val}
- xid = {'buf': b'\xcc\x0a\x41\xd4', 'val': 3423224276}
-
- # OFP_SWITCH_FEATURES_PACK_STR
- # '!QIB3xII'...datapath_id, n_buffers, n_tables,
- # zfill, capabilities, actions
- datapath_id = {'buf': b'\x11\xa3\x72\x63\x61\xde\x39\x81',
- 'val': 1270985291017894273}
- n_buffers = {'buf': b'\x80\x14\xd7\xf6', 'val': 2148849654}
- n_tables = {'buf': b'\xe4', 'val': 228}
- zfill = b'\x00' * 3
- capabilities = {'buf': b'\x69\x4f\xe4\xc2', 'val': 1766843586}
- actions = {'buf': b'\x78\x06\xd9\x0c', 'val': 2013714700}
-
- # OFP_PHY_PORT_PACK_STR
- # '!H6s16sIIIIII'... port_no, hw_addr, name, config, state
- # curr, advertised, supported, peer
- port_no = {'buf': b'\xe7\x6b', 'val': 59243}
- hw_addr = '3c:d1:2b:8d:3f:d6'
- name = b'name'.ljust(16)
- config = {'buf': b'\x84\xb6\x8c\x53', 'val': 2226555987}
- state = {'buf': b'\x64\x07\xfb\xc9', 'val': 1678244809}
- curr = {'buf': b'\xa9\xe8\x0a\x2b', 'val': 2850556459}
- advertised = {'buf': b'\x78\xb9\x7b\x72', 'val': 2025421682}
- supported = {'buf': b'\x7e\x65\x68\xad', 'val': 2120575149}
- peer = {'buf': b'\xa4\x5b\x8b\xed', 'val': 2757463021}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + datapath_id['buf'] \
- + n_buffers['buf'] \
- + n_tables['buf'] \
- + zfill \
- + capabilities['buf'] \
- + actions['buf'] \
- + port_no['buf'] \
- + addrconv.mac.text_to_bin(hw_addr) \
- + name \
- + config['buf'] \
- + state['buf'] \
- + curr['buf'] \
- + advertised['buf'] \
- + supported['buf'] \
- + peer['buf']
-
- res = OFPSwitchFeatures.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(datapath_id['val'], res.datapath_id)
- eq_(n_buffers['val'], res.n_buffers)
- eq_(n_tables['val'], res.n_tables)
- eq_(capabilities['val'], res.capabilities)
- eq_(actions['val'], res.actions)
-
- # port
- port = res.ports[port_no['val']]
- eq_(port_no['val'], port.port_no)
- eq_(hw_addr, hw_addr)
- eq_(name, port.name)
- eq_(config['val'], port.config)
- eq_(state['val'], port.state)
- eq_(curr['val'], port.curr)
- eq_(advertised['val'], port.advertised)
- eq_(supported['val'], port.supported)
- eq_(peer['val'], port.peer)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPPortStatus(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPortStatus
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPPortStatus(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x0c', 'val': ofproto.OFPT_PORT_STATUS}
- msg_len = {'buf': b'\x00\x40',
- 'val': ofproto.OFP_PORT_STATUS_SIZE}
- xid = {'buf': b'\x06\x27\x8b\x7b', 'val': 103254907}
-
- # OFP_PORT_STATUS_PACK_STR
- # '!B7xH6s16sIIIIII'...reason, zfill, port_no, hw_addr,
- # name, config, state, curr,
- # advertised, supported, peer
- reason = {'buf': b'\x71', 'val': 113}
- zfill = b'\x00' * 7
- port_no = {'buf': b'\x48\xd8', 'val': 18648}
- hw_addr = '41:f7:a3:52:8f:6b'
- name = b'name'.ljust(16)
- config = {'buf': b'\xae\x73\x90\xec', 'val': 2926809324}
- state = {'buf': b'\x41\x37\x32\x1d', 'val': 1094136349}
- curr = {'buf': b'\xa9\x47\x13\x2c', 'val': 2840007468}
- advertised = {'buf': b'\xce\x6b\x4a\x87', 'val': 3463137927}
- supported = {'buf': b'\xb8\x06\x65\xa1', 'val': 3087426977}
- peer = {'buf': b'\x6a\x11\x52\x39', 'val': 1779520057}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + reason['buf'] \
- + zfill \
- + port_no['buf'] \
- + addrconv.mac.text_to_bin(hw_addr) \
- + name \
- + config['buf'] \
- + state['buf'] \
- + curr['buf'] \
- + advertised['buf'] \
- + supported['buf'] \
- + peer['buf']
-
- res = OFPPortStatus.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(reason['val'], res.reason)
-
- # desc
- desc = res.desc
- eq_(port_no['val'], desc.port_no)
- eq_(hw_addr, desc.hw_addr)
- eq_(name, desc.name)
- eq_(config['val'], desc.config)
- eq_(state['val'], desc.state)
- eq_(curr['val'], desc.curr)
- eq_(advertised['val'], desc.advertised)
- eq_(supported['val'], desc.supported)
- eq_(peer['val'], desc.peer)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPPacketIn(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPacketIn
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPPacketIn(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def _test_parser(self, padding=False):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x0a', 'val': ofproto.OFPT_PACKET_IN}
- msg_len = {'buf': b'\x00\x14',
- 'val': ofproto.OFP_PACKET_IN_SIZE}
- xid = {'buf': b'\xd0\x23\x8c\x34', 'val': 3491990580}
-
- # OFP_PACKET_IN_PACK_STR
- # '!IHHBx2x'...buffer_id, total_len,
- # in_port, reason, zfill, data
- buffer_id = {'buf': b'\xae\x73\x90\xec', 'val': 2926809324}
- total_len = {'buf': b'\x00\x10', 'val': 16}
- in_port = {'buf': b'\x08\x42', 'val': 2114}
- reason = {'buf': b'\x43', 'val': 67}
- zfill = b'\x00' * 1
- if padding:
- data = b'PACKET IN'.ljust(20)
- else:
- data = b'PACKET IN'.ljust(16)
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + buffer_id['buf'] \
- + total_len['buf'] \
- + in_port['buf'] \
- + reason['buf'] \
- + zfill \
- + data
-
- res = OFPPacketIn.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(buffer_id['val'], res.buffer_id)
- eq_(total_len['val'], res.total_len)
- eq_(in_port['val'], res.in_port)
- eq_(reason['val'], res.reason)
- eq_(data[0:16], res.data)
-
- return True
-
- def test_parser(self):
- ok_(self._test_parser())
-
- def test_parser_padding(self):
- ok_(self._test_parser(True))
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPGetConfigReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPGetConfigReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPGetConfigReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x0a', 'val': ofproto.OFPT_GET_CONFIG_REPLY}
- msg_len = {'buf': b'\x00\x14',
- 'val': ofproto.OFP_SWITCH_CONFIG_SIZE}
- xid = {'buf': b'\x94\xc4\xd2\xcd', 'val': 2495926989}
-
- # OFP_SWITCH_CONFIG_PACK_STR
- # '!HH'...flags, miss_send_len
- flags = {'buf': b'\xa0\xe2', 'val': 41186}
- miss_send_len = {'buf': b'\x36\x0e', 'val': 13838}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf'] \
- + flags['buf'] \
- + miss_send_len['buf']
-
- res = OFPGetConfigReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(flags['val'], res.flags)
- eq_(miss_send_len['val'], res.miss_send_len)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPBarrierReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPBarrierReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPBarrierReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x13', 'val': ofproto.OFPT_BARRIER_REPLY}
- msg_len = {'buf': b'\x00\x08',
- 'val': ofproto.OFP_HEADER_SIZE}
- xid = {'buf': b'\x66\xc4\xc3\xac', 'val': 1724171180}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- res = OFPBarrierReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPFlowRemoved(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPFlowRemoved
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPFlowRemoved(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x0a', 'val': ofproto.OFPT_FLOW_REMOVED}
- msg_len = {'buf': b'\x00\x14',
- 'val': ofproto.OFP_FLOW_REMOVED_SIZE}
- xid = {'buf': b'\x94\xc4\xd2\xcd', 'val': 2495926989}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_MATCH_PACK_STR
- # '!IH6s6sHBxHBB2xIIHH'...wildcards, in_port, dl_src, dl_dst, dl_vlan,
- # dl_vlan_pcp, dl_type, nw_tos, nw_proto,
- # nw_src, nw_dst, tp_src, tp_dst
- wildcards = {'buf': b'\xd2\x71\x25\x23', 'val': 3530630435}
- in_port = {'buf': b'\x37\x8b', 'val': 14219}
- dl_src = b'\x7f\x85\xc4\x70\x12\xda'
- dl_dst = b'\x0a\x51\x17\x58\xb0\xbb'
- dl_vlan = {'buf': b'\xc1\xf9', 'val': 49657}
- dl_vlan_pcp = {'buf': b'\x79', 'val': 121}
- zfill0 = b'\x00'
- dl_type = {'buf': b'\xa6\x9e', 'val': 42654}
- nw_tos = {'buf': b'\xde', 'val': 222}
- nw_proto = {'buf': b'\xe5', 'val': 229}
- zfil11 = b'\x00' * 2
- nw_src = {'buf': b'\x1b\x6d\x8d\x4b', 'val': 460164427}
- nw_dst = {'buf': b'\xab\x25\xe1\x20', 'val': 2871386400}
- tp_src = {'buf': b'\xd5\xc3', 'val': 54723}
- tp_dst = {'buf': b'\x78\xb9', 'val': 30905}
-
- buf += wildcards['buf'] \
- + in_port['buf'] \
- + dl_src \
- + dl_dst \
- + dl_vlan['buf'] \
- + dl_vlan_pcp['buf'] \
- + zfill0 \
- + dl_type['buf'] \
- + nw_tos['buf'] \
- + nw_proto['buf'] \
- + zfil11 \
- + nw_src['buf'] \
- + nw_dst['buf'] \
- + tp_src['buf'] \
- + tp_dst['buf']
-
- # OFP_FLOW_REMOVED_PACK_STR0
- # '!QHBxIIH2xQQ'...cookie, priority, reason, zfill,
- # duration_sec, duration_nsec, idle_timeout,
- # zfill, packet_count, byte_count
- cookie = {'buf': b'\x02\x79\xba\x00\xef\xab\xee\x44',
- 'val': 178378173441633860}
- priority = {'buf': b'\x02\xce', 'val': 718}
- reason = {'buf': b'\xa9', 'val': 169}
- zfill0 = b'\x00' * 1
- duration_sec = {'buf': b'\x86\x24\xa3\xba', 'val': 2250548154}
- duration_nsec = {'buf': b'\x94\x94\xc2\x23', 'val': 2492776995}
- idle_timeout = {'buf': b'\xeb\x7c', 'val': 60284}
- zfill1 = b'\x00' * 2
- packet_count = {'buf': b'\x5a\x0d\xf2\x03\x8e\x0a\xbb\x8d',
- 'val': 6489108735192644493}
- byte_count = {'buf': b'\x65\xc8\xd3\x72\x51\xb5\xbb\x7c',
- 'val': 7334344481123449724}
-
- buf += cookie['buf'] \
- + priority['buf'] \
- + reason['buf'] \
- + zfill0 \
- + duration_sec['buf'] \
- + duration_nsec['buf'] \
- + idle_timeout['buf'] \
- + zfill1 \
- + packet_count['buf'] \
- + byte_count['buf']
-
- res = OFPFlowRemoved.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(cookie['val'], res.cookie)
- eq_(priority['val'], res.priority)
- eq_(reason['val'], res.reason)
- eq_(duration_sec['val'], res.duration_sec)
- eq_(duration_nsec['val'], res.duration_nsec)
- eq_(idle_timeout['val'], res.idle_timeout)
- eq_(packet_count['val'], res.packet_count)
- eq_(byte_count['val'], res.byte_count)
-
- # match
- match = res.match
- eq_(wildcards['val'], match.wildcards)
- eq_(in_port['val'], match.in_port)
- eq_(dl_src, match.dl_src)
- eq_(dl_dst, match.dl_dst)
- eq_(dl_vlan['val'], match.dl_vlan)
- eq_(dl_vlan_pcp['val'], match.dl_vlan_pcp)
- eq_(dl_type['val'], match.dl_type)
- eq_(nw_tos['val'], match.nw_tos)
- eq_(nw_proto['val'], match.nw_proto)
- eq_(nw_src['val'], match.nw_src)
- eq_(nw_dst['val'], match.nw_dst)
- eq_(tp_src['val'], match.tp_src)
- eq_(tp_dst['val'], match.tp_dst)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPQueueGetConfigReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPQueueGetConfigReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPQueueGetConfigReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x0a',
- 'val': ofproto.OFPT_QUEUE_GET_CONFIG_REPLY}
- msg_len_val = ofproto.OFP_QUEUE_GET_CONFIG_REPLY_SIZE \
- + ofproto.OFP_PACKET_QUEUE_SIZE
- msg_len = {'buf': b'\x00\x14', 'val': msg_len_val}
- xid = {'buf': b'\x94\xc4\xd2\xcd', 'val': 2495926989}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_QUEUE_GET_CONFIG_REPLY_PACK_STR
- # '!H6x'...port, zfill
- port = {'buf': b'\xfe\x66', 'val': 65126}
- zfill = b'\x00' * 6
-
- buf += port['buf'] \
- + zfill
-
- # OFP_PACKET_QUEUE_PQCK_STR
- # '!IH2x'...queue_id, len_, zfill
- queue_id = {'buf': b'\x4d\x4b\x3a\xd1', 'val': 1296775889}
- len_ = {'buf': b'\x00\x08',
- 'val': ofproto.OFP_QUEUE_PROP_HEADER_SIZE}
- zfill = b'\x00' * 2
-
- buf += queue_id['buf'] \
- + len_['buf'] \
- + zfill
-
- res = OFPQueueGetConfigReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(port['val'], res.port)
-
- # queue
- queue = res.queues[0]
- eq_(queue_id['val'], queue.queue_id)
- eq_(len_['val'], queue.len)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPDescStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPDescStatsReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPDescStatsReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x11', 'val': ofproto.OFPT_STATS_REPLY}
- msg_len_val = ofproto.OFP_STATS_MSG_SIZE \
- + ofproto.OFP_DESC_STATS_SIZE
- msg_len = {'buf': b'\x04\x38', 'val': msg_len_val}
- xid = {'buf': b'\x94\xc4\xd2\xcd', 'val': 2495926989}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_STATS_MSG_PACK_STR
- # '!HH'...type_, flags
- type_ = {'buf': b'\x00\x00', 'val': ofproto.OFPST_DESC}
- flags = {'buf': b'\x30\xd9', 'val': 12505}
-
- buf += type_['buf'] \
- + flags['buf']
-
- # stats_type_cls = OFPDescStats
- # OFP_DESC_STATS_PACK_STR
- # '!256s256s256s32s256s'...mfr_desc, hw_desc, sw_desc,
- # serial_num, dp_desc
- mfr_desc = b'mfr_desc'.ljust(256)
- hw_desc = b'hw_desc'.ljust(256)
- sw_desc = b'sw_desc'.ljust(256)
- serial_num = b'serial_num'.ljust(32)
- dp_desc = b'dp_desc'.ljust(256)
-
- buf += mfr_desc \
- + hw_desc \
- + sw_desc \
- + serial_num \
- + dp_desc
-
- res = OFPDescStatsReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type_['val'], res.type)
- eq_(flags['val'], res.flags)
-
- # body
- body = res.body
- eq_(mfr_desc, body.mfr_desc)
- eq_(hw_desc, body.hw_desc)
- eq_(sw_desc, body.sw_desc)
- eq_(serial_num, body.serial_num)
- eq_(dp_desc, body.dp_desc)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPFlowStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPFlowStatsReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPFlowStatsReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x11', 'val': ofproto.OFPT_STATS_REPLY}
- msg_len_val = ofproto.OFP_STATS_MSG_SIZE \
- + ofproto.OFP_FLOW_STATS_SIZE
- msg_len = {'buf': b'\x00\x64', 'val': msg_len_val}
- xid = {'buf': b'\x94\xc4\xd2\xcd', 'val': 2495926989}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_STATS_MSG_PACK_STR
- # '!HH'...type_, flags
- type_ = {'buf': b'\x00\x01', 'val': ofproto.OFPST_FLOW}
- flags = {'buf': b'\x95\xf4', 'val': 38388}
-
- buf += type_['buf'] \
- + flags['buf']
-
- # stats_type_cls = OFPFlowStats
- # OFP_FLOW_STATS_0_PACK_STR
- # '!HBx'...length, table_id, zfill
- length = {'buf': b'\x00\x60', 'val': 96}
- table_id = {'buf': b'\x51', 'val': 81}
- zfill = b'\x00'
-
- buf += length['buf'] \
- + table_id['buf'] \
- + zfill
-
- # OFP_MATCH_PACK_STR
- # '!IH6s6sHBxHBB2xIIHH'...
- match = b'\x97\x7c\xa6\x1e' \
- + b'\x5e\xa0' \
- + b'\x70\x17\xdc\x80\x59\x9e' \
- + b'\x79\xc6\x56\x87\x92\x28' \
- + b'\xb1\x81' \
- + b'\xbe' \
- + b'\x00' \
- + b'\x01\xab' \
- + b'\x42' \
- + b'\xfe' \
- + b'\x00\x00' \
- + b'\xa4\x5d\x5c\x42' \
- + b'\xa2\x5c\x2e\x05' \
- + b'\x5a\x94' \
- + b'\x64\xd4'
-
- buf += match
-
- # OFP_FLOW_STATS_1_PACK_STR
- # '!IIHHH6xQQQ'...duration_sec, duration_nsec, priority,
- # idle_timeout, hard_timeout, zfill,
- # cookie, packet_count, byte_count
- duration_sec = {'buf': b'\x94\x19\xb3\xd2', 'val': 2484712402}
- duration_nsec = {'buf': b'\xee\x66\xcf\x7c', 'val': 3999715196}
- priority = {'buf': b'\xe1\xc0', 'val': 57792}
- idle_timeout = {'buf': b'\x8e\x10', 'val': 36368}
- hard_timeout = {'buf': b'\xd4\x99', 'val': 54425}
- zfill = b'\x00' * 6
- cookie = {'buf': b'\x0b\x01\xe8\xe5\xf0\x84\x8a\xe0',
- 'val': 793171083674290912}
- packet_count = {'buf': b'\x47\x5c\xc6\x05\x28\xff\x7c\xdb',
- 'val': 5142202600015232219}
- byte_count = {'buf': b'\x24\xe9\x4b\xee\xcb\x57\xd9\xc3',
- 'val': 2659740543924820419}
-
- buf += duration_sec['buf']
- buf += duration_nsec['buf']
- buf += priority['buf']
- buf += idle_timeout['buf']
- buf += hard_timeout['buf']
- buf += zfill
- buf += cookie['buf']
- buf += packet_count['buf']
- buf += byte_count['buf']
-
- # <action>_PACK_STR...type_, len_ [others...]
- type = {'buf': b'\x00\x00', 'val': ofproto.OFPAT_OUTPUT}
- len = {'buf': b'\x00\x08',
- 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
- port = {'buf': b'\x59\x2a', 'val': 22826}
- max_len = {'buf': b'\x00\x08',
- 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
-
- buf += type['buf'] \
- + len['buf'] \
- + port['buf'] \
- + max_len['buf']
-
- res = OFPFlowStatsReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type_['val'], res.type)
- eq_(flags['val'], res.flags)
-
- # body
- body = res.body[0]
- eq_(length['val'], body.length)
- eq_(table_id['val'], body.table_id)
- eq_(duration_sec['val'], body.duration_sec)
- eq_(duration_nsec['val'], body.duration_nsec)
- eq_(priority['val'], body.priority)
- eq_(idle_timeout['val'], body.idle_timeout)
- eq_(hard_timeout['val'], body.hard_timeout)
- eq_(cookie['val'], body.cookie)
- eq_(packet_count['val'], body.packet_count)
- eq_(byte_count['val'], body.byte_count)
-
- # action
- action = body.actions[0]
- eq_(type['val'], action.type)
- eq_(len['val'], action.len)
- eq_(port['val'], action.port)
- eq_(max_len['val'], action.max_len)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPAggregateStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPAggregateStatsReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPAggregateStatsReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x11', 'val': ofproto.OFPT_STATS_REPLY}
- msg_len_val = ofproto.OFP_STATS_MSG_SIZE \
- + ofproto.OFP_AGGREGATE_STATS_REPLY_SIZE
- msg_len = {'buf': b'\x00\x4c', 'val': msg_len_val}
- xid = {'buf': b'\xc6\xd6\xce\x38', 'val': 3335966264}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_STATS_MSG_PACK_STR
- # '!HH'...type_, flags
- type_ = {'buf': b'\x00\x02', 'val': ofproto.OFPST_AGGREGATE}
- flags = {'buf': b'\x65\x66', 'val': 25958}
-
- buf += type_['buf'] \
- + flags['buf']
-
- # stats_type_cls = OFPAggregateStats
- # OFP_AGGREGATE_STATS_REPLY_PACK_STR
- # '!QQI4x'...packet_count, byte_count, flow_count, zfill
- packet_count = {'buf': b'\x43\x95\x1b\xfb\x0f\xf6\xa7\xdd',
- 'val': 4869829337189623773}
- byte_count = {'buf': b'\x36\xda\x2d\x80\x2a\x95\x35\xdd',
- 'val': 3952521651464517085}
- flow_count = {'buf': b'\xc3\x0d\xc3\xed', 'val': 3272459245}
- zfill = b'\x00' * 4
-
- buf += packet_count['buf'] \
- + byte_count['buf'] \
- + flow_count['buf'] \
- + zfill
-
- res = OFPAggregateStatsReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type_['val'], res.type)
- eq_(flags['val'], res.flags)
-
- # body
- body = res.body[0]
- eq_(packet_count['val'], body.packet_count)
- eq_(byte_count['val'], body.byte_count)
- eq_(flow_count['val'], body.flow_count)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPTableStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPTableStatsReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPTableStatsReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x11', 'val': ofproto.OFPT_STATS_REPLY}
- msg_len_val = ofproto.OFP_STATS_MSG_SIZE \
- + ofproto.OFP_TABLE_STATS_SIZE
- msg_len = {'buf': b'\x00\x4c', 'val': msg_len_val}
- xid = {'buf': b'\xd6\xb4\x8d\xe6', 'val': 3602157030}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_STATS_MSG_PACK_STR
- # '!HH'...type_, flags
- type_ = {'buf': b'\x00\x03', 'val': ofproto.OFPST_TABLE}
- flags = {'buf': b'\xb3\xf0', 'val': 46064}
-
- buf += type_['buf'] \
- + flags['buf']
-
- # stats_type_cls = OFPTableStats
- # OFP_TABLE_STATS_PACK_STR
- # '!B3x32sIIIQQ'...table_id, zfill, name, wildcards, max_entries,
- # active_count, lookup_count, matched_count
- table_id = {'buf': b'\x5b', 'val': 91}
- zfill = b'\x00' * 3
- name = b'name'.ljust(32)
- wildcards = {'buf': b'\xc5\xaf\x6e\x12', 'val': 3316608530}
- max_entries = {'buf': b'\x95\x6c\x78\x4d', 'val': 2506913869}
- active_count = {'buf': b'\x78\xac\xa8\x1e', 'val': 2024581150}
- lookup_count = {'buf': b'\x40\x1d\x9c\x39\x19\xec\xd4\x1c',
- 'val': 4620020561814017052}
- matched_count = {'buf': b'\x27\x35\x02\xb6\xc5\x5e\x17\x65',
- 'val': 2825167325263435621}
-
- buf += table_id['buf'] \
- + zfill \
- + name \
- + wildcards['buf'] \
- + max_entries['buf'] \
- + active_count['buf'] \
- + lookup_count['buf'] \
- + matched_count['buf']
-
- res = OFPTableStatsReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type_['val'], res.type)
- eq_(flags['val'], res.flags)
-
- # body
- body = res.body[0]
- eq_(table_id['val'], body.table_id)
- eq_(name, body.name)
- eq_(wildcards['val'], body.wildcards)
- eq_(max_entries['val'], body.max_entries)
- eq_(active_count['val'], body.active_count)
- eq_(lookup_count['val'], body.lookup_count)
- eq_(matched_count['val'], body.matched_count)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPPortStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPortStatsReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPPortStatsReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x11', 'val': ofproto.OFPT_STATS_REPLY}
- msg_len_val = ofproto.OFP_STATS_MSG_SIZE \
- + ofproto.OFP_PORT_STATS_SIZE
- msg_len = {'buf': b'\x00\x74', 'val': msg_len_val}
- xid = {'buf': b'\xc2\xaf\x3d\xff', 'val': 3266264575}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_STATS_MSG_PACK_STR
- # '!HH'...type_, flags
- type_ = {'buf': b'\x00\x04', 'val': ofproto.OFPST_PORT}
- flags = {'buf': b'\xda\xde', 'val': 56030}
-
- buf += type_['buf'] \
- + flags['buf']
-
- # stats_type_cls = OFPPortStats
- # OFP_PORT_STATS_PACK_STR
- # '!H6xQQQQQQQQQQQQ'... port_no, zfill, rx_packets, tx_packets,
- # rx_bytes, tx_bytes, rx_dropped, tx_dropped,
- # rx_errors, tx_errors, rx_frame_err,
- # rx_over_err, rx_crc_err, collisions
- port_no = {'buf': b'\xe7\x6b', 'val': 59243}
- zfill = b'\x00' * 6
- rx_packets = {'buf': b'\x53\x44\x36\x61\xc4\x86\xc0\x37',
- 'val': 5999980397101236279}
- tx_packets = {'buf': b'\x27\xa4\x41\xd7\xd4\x53\x9e\x42',
- 'val': 2856480458895760962}
- rx_bytes = {'buf': b'\x55\xa1\x38\x60\x43\x97\x0d\x89',
- 'val': 6170274950576278921}
- tx_bytes = {'buf': b'\x77\xe1\xd5\x63\x18\xae\x63\xaa',
- 'val': 8638420181865882538}
- rx_dropped = {'buf': b'\x60\xe6\x20\x01\x24\xda\x4e\x5a',
- 'val': 6982303461569875546}
- tx_dropped = {'buf': b'\x09\x2d\x5d\x71\x71\xb6\x8e\xc7',
- 'val': 661287462113808071}
- rx_errors = {'buf': b'\x2f\x7e\x35\xb3\x66\x3c\x19\x0d',
- 'val': 3422231811478788365}
- tx_errors = {'buf': b'\x57\x32\x08\x2f\x88\x32\x40\x6b',
- 'val': 6283093430376743019}
- rx_frame_err = {'buf': b'\x0c\x28\x6f\xad\xce\x66\x6e\x8b',
- 'val': 876072919806406283}
- rx_over_err = {'buf': b'\x5a\x90\x8f\x9b\xfc\x82\x2e\xa0',
- 'val': 6525873760178941600}
- rx_crc_err = {'buf': b'\x73\x3a\x71\x17\xd6\x74\x69\x47',
- 'val': 8303073210207070535}
- collisions = {'buf': b'\x2f\x52\x0c\x79\x96\x03\x6e\x79',
- 'val': 3409801584220270201}
-
- buf += port_no['buf'] \
- + zfill \
- + rx_packets['buf'] \
- + tx_packets['buf'] \
- + rx_bytes['buf'] \
- + tx_bytes['buf'] \
- + rx_dropped['buf'] \
- + tx_dropped['buf'] \
- + rx_errors['buf'] \
- + tx_errors['buf'] \
- + rx_frame_err['buf'] \
- + rx_over_err['buf'] \
- + rx_crc_err['buf'] \
- + collisions['buf']
-
- res = OFPPortStatsReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type_['val'], res.type)
- eq_(flags['val'], res.flags)
-
- # body
- body = res.body[0]
- eq_(port_no['val'], body.port_no)
- eq_(rx_packets['val'], body.rx_packets)
- eq_(tx_packets['val'], body.tx_packets)
- eq_(rx_bytes['val'], body.rx_bytes)
- eq_(tx_bytes['val'], body.tx_bytes)
- eq_(rx_dropped['val'], body.rx_dropped)
- eq_(tx_dropped['val'], body.tx_dropped)
- eq_(rx_errors['val'], body.rx_errors)
- eq_(tx_errors['val'], body.tx_errors)
- eq_(rx_frame_err['val'], body.rx_frame_err)
- eq_(rx_over_err['val'], body.rx_over_err)
- eq_(rx_crc_err['val'], body.rx_crc_err)
- eq_(collisions['val'], body.collisions)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPQueueStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPQueueStatsReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPQueueStatsReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x11', 'val': ofproto.OFPT_STATS_REPLY}
- msg_len_val = ofproto.OFP_STATS_MSG_SIZE \
- + ofproto.OFP_QUEUE_STATS_SIZE
- msg_len = {'buf': b'\x00\x2c', 'val': msg_len_val}
- xid = {'buf': b'\x19\xfc\x28\x6c', 'val': 435955820}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_STATS_MSG_PACK_STR
- # '!HH'...type_, flags
- type_ = {'buf': b'\x00\x05', 'val': ofproto.OFPST_QUEUE}
- flags = {'buf': b'\x3b\x2b', 'val': 15147}
-
- buf += type_['buf'] \
- + flags['buf']
-
- # stats_type_cls = OFPQueueStats
- # OFP_QUEUE_STATS_PACK_STR
- # '!H2xIQQQ...port_no, queue_id, tx_bytes, tx_packets, tx_errors
- port_no = {'buf': b'\xe7\x6b', 'val': 59243}
- zfill = b'\x00' * 2
- queue_id = {'buf': b'\x2a\xa8\x7f\x32', 'val': 715685682}
- tx_bytes = {'buf': b'\x77\xe1\xd5\x63\x18\xae\x63\xaa',
- 'val': 8638420181865882538}
- tx_packets = {'buf': b'\x27\xa4\x41\xd7\xd4\x53\x9e\x42',
- 'val': 2856480458895760962}
- tx_errors = {'buf': b'\x57\x32\x08\x2f\x88\x32\x40\x6b',
- 'val': 6283093430376743019}
-
- buf += port_no['buf'] \
- + zfill \
- + queue_id['buf'] \
- + tx_bytes['buf'] \
- + tx_packets['buf'] \
- + tx_errors['buf']
-
- res = OFPQueueStatsReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type_['val'], res.type)
- eq_(flags['val'], res.flags)
-
- # body
- body = res.body[0]
- eq_(port_no['val'], body.port_no)
- eq_(queue_id['val'], body.queue_id)
- eq_(tx_bytes['val'], body.tx_bytes)
- eq_(tx_packets['val'], body.tx_packets)
- eq_(tx_errors['val'], body.tx_errors)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPVendorStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPVendorStatsReply
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPVendorStatsReply(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- version = {'buf': b'\x01', 'val': ofproto.OFP_VERSION}
- msg_type = {'buf': b'\x11', 'val': ofproto.OFPT_STATS_REPLY}
- # ofproto.OFP_STATS_MSG_SIZE + len(specific_data)
- msg_len = {'buf': b'\x00\x18',
- 'val': ofproto.OFP_STATS_MSG_SIZE + 12}
- xid = {'buf': b'\x94\xc4\xd2\xcd', 'val': 2495926989}
-
- buf = version['buf'] \
- + msg_type['buf'] \
- + msg_len['buf'] \
- + xid['buf']
-
- # OFP_STATS_MSG_PACK_STR
- # '!HH'...type_, flags
- type_ = {'buf': b'\xff\xff', 'val': ofproto.OFPST_VENDOR}
- flags = {'buf': b'\x30\xd9', 'val': 12505}
-
- buf += type_['buf'] \
- + flags['buf']
-
- # stats_type_cls = OFPVendorStats
- specific_data = b'specific_data'
-
- buf += specific_data
-
- res = OFPVendorStatsReply.parser(object,
- version['val'],
- msg_type['val'],
- msg_len['val'],
- xid['val'],
- buf)
-
- eq_(version['val'], res.version)
- eq_(msg_type['val'], res.msg_type)
- eq_(msg_len['val'], res.msg_len)
- eq_(xid['val'], res.xid)
- eq_(type_['val'], res.type)
- eq_(flags['val'], res.flags)
-
- # body
- body = res.body[0]
- eq_(specific_data, body)
-
- def test_serialize(self):
- # Not used.
- pass
-
-
-class TestOFPFeaturesRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPFeaturesRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPFeaturesRequest(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_FEATURES_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_FEATURES_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
-
-class TestOFPGetConfigRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPGetConfigRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPGetConfigRequest(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_GET_CONFIG_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_GET_CONFIG_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
-
-class TestOFPSetConfig(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPSetConfig
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- # OFP_SWITCH_CONFIG_PACK_STR
- # '!HH'...flags, miss_send_len
- flags = {'buf': b'\xa0\xe2', 'val': 41186}
- miss_send_len = {'buf': b'\x36\x0e', 'val': 13838}
-
- c = OFPSetConfig(Datapath,
- flags['val'],
- miss_send_len['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.flags['val'], self.c.flags)
- eq_(self.miss_send_len['val'], self.c.miss_send_len)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_SET_CONFIG, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_SWITCH_CONFIG_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_SET_CONFIG, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
- eq_(self.flags['val'], res[4])
- eq_(self.miss_send_len['val'], res[5])
-
-
-class TestOFPPacketOut(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPacketOut
- """
-
- port = 0x2ae0
- actions = [OFPActionOutput(port, max_len=0)]
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _get_obj(self, buffer_id, in_port, data=None):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPPacketOut(Datapath,
- buffer_id,
- in_port,
- self.actions,
- data)
- return c
-
- def test_init(self):
- buffer_id = 0xffffffff
- in_port = 0x40455
- data = 'Message'
-
- c = self._get_obj(buffer_id, in_port, data)
-
- eq_(buffer_id, c.buffer_id)
- eq_(in_port, c.in_port)
- eq_(data, c.data)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- buffer_id = 0xffffffff
- in_port = 0x9e07
- data = b'Message'
-
- c = self._get_obj(buffer_id, in_port, data)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_PACKET_OUT, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_PACKET_OUT_PACK_STR.replace('!', '') \
- + ofproto.OFP_ACTION_OUTPUT_PACK_STR.replace('!', '') \
- + str(len(data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_PACKET_OUT, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_PACKET_OUT_PACK_STR
- eq_(buffer_id, res[4])
- eq_(in_port, res[5])
- eq_(ofproto.OFP_ACTION_OUTPUT_SIZE, res[6])
-
- # OFP_ACTION_OUTPUT_PACK_STR
- eq_(ofproto.OFPAT_OUTPUT, res[7])
- eq_(ofproto.OFP_ACTION_OUTPUT_SIZE, res[8])
- eq_(self.port, res[9])
- eq_(0, res[10])
-
- # data
- eq_(data, res[11])
-
- @raises(AssertionError)
- def test_serialize_check_buffer_id(self):
- buffer_id = 0xffffff00
- in_port = 0xaa92
- data = 'Message'
-
- c = self._get_obj(buffer_id, in_port, data)
- c.serialize()
-
-
-class TestOFPFlowMod(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPFlowMod
- """
-
- # OFP_FLOW_MOD_PACK_STR0
- # '!QHHHHIHH'...cookie, command, idle_timeout, hard_timeout,
- # priority, buffer_id, out_port, flags
- cookie = {'buf': b'\x1d\x86\xce\x6e\x8d\xc0\xbe\xa8',
- 'val': 2127614848199081640}
- command = {'buf': b'\xe1\x55', 'val': 57685}
- idle_timeout = {'buf': b'\xf3\x6d', 'val': 62317}
- hard_timeout = {'buf': b'\x1c\xc5', 'val': 7365}
- priority = {'buf': b'\x9c\xe3', 'val': 40163}
- buffer_id = {'buf': b'\xf0\xa1\x80\x33', 'val': 4037115955}
- out_port = {'buf': b'\xfe\x0d', 'val': 65037}
- flags = {'buf': b'\x00\x87', 'val': 135}
-
- # OFP_MATCH_PACK_STR
- # '!IH6s6sHBxHBB2xIIHH'...wildcards, in_port, dl_src, dl_dst, dl_vlan,
- # dl_vlan_pcp, dl_type, nw_tos, nw_proto,
- # nw_src, nw_dst, tp_src, tp_dst
- wildcards = {'buf': b'\xd2\x71\x25\x23', 'val': 3530630435}
- in_port = {'buf': b'\x37\x8b', 'val': 14219}
- dl_src = b'\xdf\xcf\xe1\x5d\xcf\xc0'
- dl_dst = b'\x76\xb3\xfb\xc6\x21\x2f'
- dl_vlan = {'buf': b'\xc1\xf9', 'val': 49657}
- dl_vlan_pcp = {'buf': b'\x79', 'val': 121}
- zfill0 = b'\x00'
- dl_type = {'buf': b'\xa6\x9e', 'val': 42654}
- nw_tos = {'buf': b'\xde', 'val': 222}
- nw_proto = {'buf': b'\xe5', 'val': 229}
- zfil11 = b'\x00' * 2
- nw_src = {'buf': b'\x1b\x6d\x8d\x4b', 'val': 460164427}
- nw_dst = {'buf': b'\xab\x25\xe1\x20', 'val': 2871386400}
- tp_src = {'buf': b'\xd5\xc3', 'val': 54723}
- tp_dst = {'buf': b'\x78\xb9', 'val': 30905}
-
- match = OFPMatch(wildcards['val'],
- in_port['val'],
- dl_src,
- dl_dst,
- dl_vlan['val'],
- dl_vlan_pcp['val'],
- dl_type['val'],
- nw_tos['val'],
- nw_proto['val'],
- nw_src['val'],
- nw_dst['val'],
- tp_src['val'],
- tp_dst['val'])
-
- port = 0x2ae0
- actions = [OFPActionOutput(port, max_len=1000)]
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _get_obj(self, actions=None):
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPFlowMod(Datapath,
- self.match,
- self.cookie['val'],
- self.command['val'],
- self.idle_timeout['val'],
- self.hard_timeout['val'],
- self.priority['val'],
- self.buffer_id['val'],
- self.out_port['val'],
- self.flags['val'],
- actions)
-
- return c
-
- def test_init(self):
- c = self._get_obj()
-
- eq_(self.cookie['val'], c.cookie)
- eq_(self.command['val'], c.command)
- eq_(self.idle_timeout['val'], c.idle_timeout)
- eq_(self.hard_timeout['val'], c.hard_timeout)
- eq_(self.priority['val'], c.priority)
- eq_(self.buffer_id['val'], c.buffer_id)
- eq_(self.out_port['val'], c.out_port)
- eq_(self.flags['val'], c.flags)
-
- def test_init_actions(self):
- c = self._get_obj(self.actions)
- action = c.actions[0]
-
- eq_(self.port, action.port)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- c = self._get_obj(self.actions)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_FLOW_MOD, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_MATCH_PACK_STR.replace('!', '') \
- + ofproto.OFP_FLOW_MOD_PACK_STR0.replace('!', '') \
- + ofproto.OFP_ACTION_OUTPUT_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_FLOW_MOD, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_MATCH_PACK_STR
- eq_(self.wildcards['val'], res[4])
- eq_(self.in_port['val'], res[5])
- eq_(self.dl_src, res[6])
- eq_(self.dl_dst, res[7])
- eq_(self.dl_vlan['val'], res[8])
- eq_(self.dl_vlan_pcp['val'], res[9])
- eq_(self.dl_type['val'], res[10])
- eq_(self.nw_tos['val'], res[11])
- eq_(self.nw_proto['val'], res[12])
- eq_(self.nw_src['val'], res[13])
- eq_(self.nw_dst['val'], res[14])
- eq_(self.tp_src['val'], res[15])
- eq_(self.tp_dst['val'], res[16])
-
- # OFP_FLOW_MOD_PACK_STR0
- eq_(self.cookie['val'], res[17])
- eq_(self.command['val'], res[18])
- eq_(self.idle_timeout['val'], res[19])
- eq_(self.hard_timeout['val'], res[20])
- eq_(self.priority['val'], res[21])
- eq_(self.buffer_id['val'], res[22])
- eq_(self.out_port['val'], res[23])
- eq_(self.flags['val'], res[24])
-
- # OFP_ACTION_OUTPUT_PACK_STR
- eq_(ofproto.OFPAT_OUTPUT, res[25])
- eq_(ofproto.OFP_ACTION_OUTPUT_SIZE, res[26])
- eq_(self.port, res[27])
- eq_(1000, res[28])
-
-
-class TestOFPBarrierRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPBarrierRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- c = OFPBarrierRequest(Datapath)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- pass
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_BARRIER_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_BARRIER_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
-
-class TestOFPQueueGetConfigRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPQueueGetConfigRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- # OFP_QUEUE_GET_CONFIG_REQUEST_PACK_STR
- # '!H2x'...port, zfill
- port = {'buf': b'\xa0\xe2', 'val': 41186}
- zfill = b'\x00' * 2
-
- c = OFPQueueGetConfigRequest(Datapath,
- port['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.port['val'], self.c.port)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_QUEUE_GET_CONFIG_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- a = ofproto.OFP_HEADER_PACK_STR.replace('!', '')
- b = ofproto.OFP_QUEUE_GET_CONFIG_REQUEST_PACK_STR.replace('!', '')
- fmt = '!' + a + b
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_QUEUE_GET_CONFIG_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
- eq_(self.port['val'], res[4])
-
-
-class TestOFPDescStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPDescStatsRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flags = {'buf': b'\x00\x00', 'val': 0}
-
- c = OFPDescStatsRequest(Datapath, flags['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(ofproto.OFPST_DESC, self.c.type)
- eq_(self.flags['val'], self.c.flags)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_MSG_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_STATS_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_STATS_MSG_PACK_STR
- eq_(ofproto.OFPST_DESC, res[4])
- eq_(self.flags['val'], res[5])
-
-
-class TestOFPFlowStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPFlowStatsRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flags = {'buf': b'\x00\x00', 'val': 0}
-
- # OFP_MATCH_PACK_STR
- # '!IH6s6sHBxHBB2xIIHH'...wildcards, in_port, dl_src, dl_dst, dl_vlan,
- # dl_vlan_pcp, dl_type, nw_tos, nw_proto,
- # nw_src, nw_dst, tp_src, tp_dst
- wildcards = {'buf': b'\xd2\x71\x25\x23', 'val': 3530630435}
- in_port = {'buf': b'\x37\x8b', 'val': 14219}
- dl_src = b'\x58\xd0\x8a\x69\xa4\xfc'
- dl_dst = b'\xb6\xe2\xef\xb1\xa6\x2d'
- dl_vlan = {'buf': b'\xc1\xf9', 'val': 49657}
- dl_vlan_pcp = {'buf': b'\x79', 'val': 121}
- zfill0 = b'\x00'
- dl_type = {'buf': b'\xa6\x9e', 'val': 42654}
- nw_tos = {'buf': b'\xde', 'val': 222}
- nw_proto = {'buf': b'\xe5', 'val': 229}
- zfil11 = b'\x00' * 2
- nw_src = {'buf': b'\x1b\x6d\x8d\x4b', 'val': 460164427}
- nw_dst = {'buf': b'\xab\x25\xe1\x20', 'val': 2871386400}
- tp_src = {'buf': b'\xd5\xc3', 'val': 54723}
- tp_dst = {'buf': b'\x78\xb9', 'val': 30905}
-
- match = OFPMatch(wildcards['val'],
- in_port['val'],
- dl_src,
- dl_dst,
- dl_vlan['val'],
- dl_vlan_pcp['val'],
- dl_type['val'],
- nw_tos['val'],
- nw_proto['val'],
- nw_src['val'],
- nw_dst['val'],
- tp_src['val'],
- tp_dst['val'])
-
- # OFP_FLOW_STATS_REQUEST_ID_PORT_STR
- # '!BxH'...table_id, zfill, out_port
- table_id = {'buf': b'\xd1', 'val': 209}
- zfill = b'\x00' * 1
- out_port = {'buf': b'\xe4\x9a', 'val': 58522}
-
- c = OFPFlowStatsRequest(Datapath,
- flags['val'],
- match,
- table_id['val'],
- out_port['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(ofproto.OFPST_FLOW, self.c.type)
- eq_(self.flags['val'], self.c.flags)
- eq_(self.table_id['val'], self.c.table_id)
- eq_(self.out_port['val'], self.c.out_port)
-
- # match
- match = self.c.match
- eq_(self.match.__hash__(), match.__hash__())
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_MSG_PACK_STR.replace('!', '') \
- + ofproto.OFP_MATCH_PACK_STR.replace('!', '') \
- + ofproto.OFP_FLOW_STATS_REQUEST_ID_PORT_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_STATS_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_STATS_MSG_PACK_STR
- eq_(ofproto.OFPST_FLOW, res[4])
- eq_(self.flags['val'], res[5])
-
- # OFP_MATCH_PACK_STR
- eq_(self.wildcards['val'], res[6])
- eq_(self.in_port['val'], res[7])
- eq_(self.dl_src, res[8])
- eq_(self.dl_dst, res[9])
- eq_(self.dl_vlan['val'], res[10])
- eq_(self.dl_vlan_pcp['val'], res[11])
- eq_(self.dl_type['val'], res[12])
- eq_(self.nw_tos['val'], res[13])
- eq_(self.nw_proto['val'], res[14])
- eq_(self.nw_src['val'], res[15])
- eq_(self.nw_dst['val'], res[16])
- eq_(self.tp_src['val'], res[17])
- eq_(self.tp_dst['val'], res[18])
-
- # OFP_FLOW_STATS_REQUEST_ID_PORT_STR
- eq_(self.table_id['val'], res[19])
- eq_(self.out_port['val'], res[20])
-
-
-class TestOFPAggregateStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPAggregateStatsRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flags = {'buf': b'\x00\x00', 'val': 0}
-
- # OFP_MATCH_PACK_STR
- # '!IH6s6sHBxHBB2xIIHH'...wildcards, in_port, dl_src, dl_dst, dl_vlan,
- # dl_vlan_pcp, dl_type, nw_tos, nw_proto,
- # nw_src, nw_dst, tp_src, tp_dst
- wildcards = {'buf': b'\xea\x66\x4a\xd4', 'val': 3932572372}
- in_port = {'buf': b'\x64\xac', 'val': 25772}
- dl_src = b'\x90\x13\x60\x5e\x20\x4d'
- dl_dst = b'\xb5\x5d\x14\x5e\xb9\x22'
- dl_vlan = {'buf': b'\x8b\xeb', 'val': 35819}
- dl_vlan_pcp = {'buf': b'\xe8', 'val': 232}
- zfill0 = b'\x00'
- dl_type = {'buf': b'\62\xc9', 'val': 25289}
- nw_tos = {'buf': b'\xb5', 'val': 181}
- nw_proto = {'buf': b'\xc4', 'val': 196}
- zfil11 = b'\x00' * 2
- nw_src = {'buf': b'\xb7\xd1\xb7\xef', 'val': 3083974639}
- nw_dst = {'buf': b'\x7c\xc6\x18\x15', 'val': 2093357077}
- tp_src = {'buf': b'\x26\x9a', 'val': 9882}
- tp_dst = {'buf': b'\x7a\x89', 'val': 31369}
-
- match = OFPMatch(wildcards['val'],
- in_port['val'],
- dl_src,
- dl_dst,
- dl_vlan['val'],
- dl_vlan_pcp['val'],
- dl_type['val'],
- nw_tos['val'],
- nw_proto['val'],
- nw_src['val'],
- nw_dst['val'],
- tp_src['val'],
- tp_dst['val'])
-
- # OFP_FLOW_STATS_REQUEST_ID_PORT_STR
- # '!BxH'...table_id, zfill, out_port
- table_id = {'buf': b'\xd1', 'val': 209}
- zfill = b'\x00' * 1
- out_port = {'buf': b'\xb5\xe8', 'val': 46568}
-
- c = OFPAggregateStatsRequest(Datapath,
- flags['val'],
- match,
- table_id['val'],
- out_port['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(ofproto.OFPST_AGGREGATE, self.c.type)
- eq_(self.flags['val'], self.c.flags)
- eq_(self.table_id['val'], self.c.table_id)
- eq_(self.out_port['val'], self.c.out_port)
-
- # match
- match = self.c.match
- eq_(self.match.__hash__(), match.__hash__())
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_MSG_PACK_STR.replace('!', '') \
- + ofproto.OFP_MATCH_PACK_STR.replace('!', '') \
- + ofproto.OFP_FLOW_STATS_REQUEST_ID_PORT_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_STATS_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_STATS_MSG_PACK_STR
- eq_(ofproto.OFPST_AGGREGATE, res[4])
- eq_(self.flags['val'], res[5])
-
- # OFP_MATCH_PACK_STR
- eq_(self.wildcards['val'], res[6])
- eq_(self.in_port['val'], res[7])
- eq_(self.dl_src, res[8])
- eq_(self.dl_dst, res[9])
- eq_(self.dl_vlan['val'], res[10])
- eq_(self.dl_vlan_pcp['val'], res[11])
- eq_(self.dl_type['val'], res[12])
- eq_(self.nw_tos['val'], res[13])
- eq_(self.nw_proto['val'], res[14])
- eq_(self.nw_src['val'], res[15])
- eq_(self.nw_dst['val'], res[16])
- eq_(self.tp_src['val'], res[17])
- eq_(self.tp_dst['val'], res[18])
-
- # OFP_FLOW_STATS_REQUEST_ID_PORT_STR
- eq_(self.table_id['val'], res[19])
- eq_(self.out_port['val'], res[20])
-
-
-class TestOFPTableStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPTableStatsRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flags = {'buf': b'\x00\x00', 'val': 0}
-
- c = OFPTableStatsRequest(Datapath, flags['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(ofproto.OFPST_TABLE, self.c.type)
- eq_(self.flags['val'], self.c.flags)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_MSG_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_STATS_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_STATS_MSG_PACK_STR
- eq_(ofproto.OFPST_TABLE, res[4])
- eq_(self.flags['val'], res[5])
-
-
-class TestOFPPortStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPPortStatsRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flags = {'buf': b'\x00\x00', 'val': 0}
-
- # OFP_PORT_STATS_REQUEST_PACK_STR
- # '!H6x'...port_no, zfill
- port_no = {'buf': b'\x6d\x27', 'val': 27943}
-
- c = OFPPortStatsRequest(Datapath,
- flags['val'],
- port_no['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(ofproto.OFPST_PORT, self.c.type)
- eq_(self.flags['val'], self.c.flags)
- eq_(self.port_no['val'], self.c.port_no)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_MSG_PACK_STR.replace('!', '') \
- + ofproto.OFP_PORT_STATS_REQUEST_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_STATS_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_STATS_MSG_PACK_STR
- eq_(ofproto.OFPST_PORT, res[4])
- eq_(self.flags['val'], res[5])
-
- # OFP_PORT_STATS_REQUEST_PACK_STR
- eq_(self.port_no['val'], res[6])
-
-
-class TestOFPQueueStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPQueueStatsRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flags = {'buf': b'\x00\x00', 'val': 0}
-
- # OFP_QUEUE_STATS_REQUEST_PACK_STR
- # '!HxxI'...port_no, zfill, zfill, queue_id
- port_no = {'buf': b'\x0c\x2d', 'val': 3117}
- queue_id = {'buf': b'\x1b\xe6\xba\x36', 'val': 468105782}
-
- c = OFPQueueStatsRequest(Datapath,
- flags['val'],
- port_no['val'],
- queue_id['val'])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(ofproto.OFPST_QUEUE, self.c.type)
- eq_(self.flags['val'], self.c.flags)
- eq_(self.port_no['val'], self.c.port_no)
- eq_(self.queue_id['val'], self.c.queue_id)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_MSG_PACK_STR.replace('!', '') \
- + ofproto.OFP_QUEUE_STATS_REQUEST_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_STATS_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_STATS_MSG_PACK_STR
- eq_(ofproto.OFPST_QUEUE, res[4])
- eq_(self.flags['val'], res[5])
-
- # OFP_QUEUE_STATS_REQUEST_PACK_STR
- eq_(self.port_no['val'], res[6])
- eq_(self.queue_id['val'], res[7])
-
-
-class TestOFPVendorStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_0_parser.OFPVendorStatsRequest
- """
-
- class Datapath(object):
- ofproto = ofproto # copy to class attribute
- ofproto_parser = ofproto_v1_0_parser
-
- flags = {'buf': b'\x00\x00', 'val': 0}
-
- # OFP_VENDOR_STATS_MSG_PACK_STR
- # '!I'...vendor
- vendor = {'buf': b'\xff\xff\xff\xff', 'val': ofproto.OFPAT_VENDOR}
-
- specific_data = b'specific_data'
-
- c = OFPVendorStatsRequest(Datapath,
- flags['val'],
- vendor['val'],
- specific_data)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(ofproto.OFPST_VENDOR, self.c.type)
- eq_(self.flags['val'], self.c.flags)
- eq_(self.vendor['val'], self.c.vendor)
- eq_(self.specific_data, self.c.specific_data)
-
- def test_parser(self):
- # Not used.
- pass
-
- def test_serialize(self):
- self.c.serialize()
-
- eq_(ofproto.OFP_VERSION, self.c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, self.c.msg_type)
- eq_(0, self.c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_MSG_PACK_STR.replace('!', '') \
- + ofproto.OFP_VENDOR_STATS_MSG_PACK_STR.replace('!', '') \
- + str(len(self.specific_data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(self.c.buf))
-
- # OFP_HEADER_PACK_STR
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_STATS_REQUEST, res[1])
- eq_(len(self.c.buf), res[2])
- eq_(0, res[3])
-
- # OFP_STATS_MSG_PACK_STR
- eq_(ofproto.OFPST_VENDOR, res[4])
- eq_(self.flags['val'], res[5])
-
- # OFP_VENDOR_STATS_MSG_PACK_STR
- eq_(self.vendor['val'], res[6])
-
- # specific_data
- eq_(self.specific_data, res[7])
diff --git a/tests/unit/ofproto/test_parser_v12.py b/tests/unit/ofproto/test_parser_v12.py
deleted file mode 100644
index cf04803d..00000000
--- a/tests/unit/ofproto/test_parser_v12.py
+++ /dev/null
@@ -1,7560 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-import socket
-from struct import *
-from nose.tools import *
-from ryu.ofproto.ofproto_v1_2_parser import *
-from ryu.ofproto import ofproto_v1_2_parser
-from ryu.ofproto import ofproto_v1_2
-from ryu.ofproto import ofproto_protocol
-from ryu.ofproto import ether
-from ryu.ofproto.ofproto_parser import MsgBase
-from ryu import utils
-from ryu.lib import addrconv
-from ryu.lib import pack_utils
-
-LOG = logging.getLogger('test_ofproto_v12')
-
-
-_Datapath = ofproto_protocol.ProtocolDesc(version=ofproto_v1_2.OFP_VERSION)
-
-
-class TestRegisterParser(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser._register_parser
- """
-
- class _OFPDummy(MsgBase):
- def __init__(self, datapath):
- self.dummy = 'dummy'
-
- def parser(self):
- return self.dummy
-
- def test_cls_msg_type(self):
- msg_type = 0xff
- cls = self._OFPDummy(_Datapath)
- cls.cls_msg_type = msg_type
-
- res = ofproto_v1_2_parser._register_parser(cls)
- res_parser = ofproto_v1_2_parser._MSG_PARSERS[msg_type]
- del ofproto_v1_2_parser._MSG_PARSERS[msg_type]
-
- eq_(res.cls_msg_type, msg_type)
- ok_(res.dummy)
- eq_(res_parser(), 'dummy')
-
- @raises(AssertionError)
- def test_cls_msg_type_none(self):
- cls = OFPHello(_Datapath)
- cls.cls_msg_type = None
- ofproto_v1_2_parser._register_parser(cls)
-
- @raises(AssertionError)
- def test_cls_msg_type_already_registed(self):
- cls = OFPHello(_Datapath)
- ofproto_v1_2_parser._register_parser(cls)
-
-
-class TestMsgParser(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.msg_parser
- """
-
- def _test_msg_parser(self, xid, msg_len):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_HELLO
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- c = msg_parser(_Datapath, version, msg_type, msg_len, xid, buf)
-
- eq_(version, c.version)
- eq_(msg_type, c.msg_type)
- eq_(msg_len, c.msg_len)
- eq_(xid, c.xid)
-
- # buf
- fmt = ofproto.OFP_HEADER_PACK_STR
- res = struct.unpack(fmt, c.buf)
-
- eq_(version, res[0])
- eq_(msg_type, res[1])
- eq_(msg_len, res[2])
- eq_(xid, res[3])
-
- def test_parser_mid(self):
- xid = 2147483648
- msg_len = 8
- self._test_msg_parser(xid, msg_len)
-
- def test_parser_max(self):
- xid = 4294967295
- msg_len = 65535
- self._test_msg_parser(xid, msg_len)
-
- def test_parser_min(self):
- xid = 0
- msg_len = 0
- self._test_msg_parser(xid, msg_len)
-
-
-class TestOFPHello(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPHello
- """
-
- def _test_parser(self, xid):
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_HELLO
- msg_len = ofproto.OFP_HEADER_SIZE
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- res = OFPHello.parser(object, version, msg_type, msg_len, xid,
- bytearray(buf))
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(six.binary_type(buf), six.binary_type(res.buf))
-
- def test_parser_xid_min(self):
- xid = 0
- self._test_parser(xid)
-
- def test_parser_xid_mid(self):
- xid = 2183948390
- self._test_parser(xid)
-
- def test_parser_xid_max(self):
- xid = 4294967295
- self._test_parser(xid)
-
- def test_serialize(self):
- c = OFPHello(_Datapath)
- c.serialize()
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_HELLO, c.msg_type)
- eq_(0, c.xid)
-
-
-class TestOFPErrorMsg(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPErrorMsg
- """
-
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_ERROR
- msg_len = ofproto.OFP_ERROR_MSG_SIZE
- xid = 2495926989
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- def test_init(self):
- c = OFPErrorMsg(_Datapath)
- eq_(c.code, None)
- eq_(c.type, None)
- eq_(c.data, None)
-
- def _test_parser(self, type_, code, data=None):
-
- # OFP_ERROR_MSG_PACK_STR = '!HH'
- fmt = ofproto.OFP_ERROR_MSG_PACK_STR
- buf = self.buf + pack(fmt, type_, code)
-
- if data is not None:
- buf += data
-
- res = OFPErrorMsg.parser(object, self.version, self.msg_type,
- self.msg_len, self.xid, buf)
-
- eq_(res.version, self.version)
- eq_(res.msg_type, self.msg_type)
- eq_(res.msg_len, self.msg_len)
- eq_(res.xid, self.xid)
- eq_(res.type, type_)
- eq_(res.code, code)
-
- if data is not None:
- eq_(res.data, data)
-
- def test_parser_mid(self):
- type_ = 32768
- code = 32768
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_max(self):
- type_ = 65534
- code = 65535
- data = b'Error Message.'.ljust(65523)
- self._test_parser(type_, code, data)
-
- def test_parser_min(self):
- type_ = 0
- code = 0
- data = None
- self._test_parser(type_, code, data)
-
- def test_parser_p0_1(self):
- type_ = ofproto.OFPET_HELLO_FAILED
- code = ofproto.OFPHFC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_0(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_VERSION
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_1(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_2(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_STAT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_3(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_EXPERIMENTER
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_4(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_EXP_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_5(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_6(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_LEN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_7(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BUFFER_EMPTY
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_8(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BUFFER_UNKNOWN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_9(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_TABLE_ID
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_10(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_IS_SLAVE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_11(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_PORT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p1_12(self):
- type_ = ofproto.OFPET_BAD_REQUEST
- code = ofproto.OFPBRC_BAD_PACKET
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_0(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_1(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_LEN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_2(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_EXPERIMENTER
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_3(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_EXP_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_4(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_OUT_PORT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_5(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_ARGUMENT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_6(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_7(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_TOO_MANY
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_8(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_QUEUE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_9(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_OUT_GROUP
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_10(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_MATCH_INCONSISTENT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_11(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_UNSUPPORTED_ORDER
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_12(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_TAG
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_13(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_SET_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_14(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_SET_LEN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p2_15(self):
- type_ = ofproto.OFPET_BAD_ACTION
- code = ofproto.OFPBAC_BAD_SET_ARGUMENT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_0(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_UNKNOWN_INST
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_1(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_UNSUP_INST
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_2(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_BAD_TABLE_ID
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_3(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_UNSUP_METADATA
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_4(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_UNSUP_METADATA_MASK
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_5(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_BAD_EXPERIMENTER
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_6(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_BAD_EXP_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_7(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_BAD_LEN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p3_8(self):
- type_ = ofproto.OFPET_BAD_INSTRUCTION
- code = ofproto.OFPBIC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_0(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_1(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_LEN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_2(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_TAG
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_3(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_DL_ADDR_MASK
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_4(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_NW_ADDR_MASK
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_5(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_WILDCARDS
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_6(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_FIELD
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_7(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_VALUE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_8(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_MASK
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_9(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_BAD_PREREQ
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_10(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_DUP_FIELD
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p4_11(self):
- type_ = ofproto.OFPET_BAD_MATCH
- code = ofproto.OFPBMC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_0(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_UNKNOWN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_1(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_TABLE_FULL
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_2(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_BAD_TABLE_ID
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_3(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_OVERLAP
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_4(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_5(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_BAD_TIMEOUT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_6(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_BAD_COMMAND
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p5_7(self):
- type_ = ofproto.OFPET_FLOW_MOD_FAILED
- code = ofproto.OFPFMFC_BAD_FLAGS
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_0(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_GROUP_EXISTS
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_1(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_INVALID_GROUP
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_2(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_WEIGHT_UNSUPPORTED
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_3(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_OUT_OF_GROUPS
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_4(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_OUT_OF_BUCKETS
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_5(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_CHAINING_UNSUPPORTED
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_6(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_WATCH_UNSUPPORTED
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_7(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_LOOP
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_8(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_UNKNOWN_GROUP
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_9(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_CHAINED_GROUP
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_10(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_BAD_TYPE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_11(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_BAD_COMMAND
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_12(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_BAD_BUCKET
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_13(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_BAD_WATCH
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p6_14(self):
- type_ = ofproto.OFPET_GROUP_MOD_FAILED
- code = ofproto.OFPGMFC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p7_0(self):
- type_ = ofproto.OFPET_PORT_MOD_FAILED
- code = ofproto.OFPPMFC_BAD_PORT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p7_1(self):
- type_ = ofproto.OFPET_PORT_MOD_FAILED
- code = ofproto.OFPPMFC_BAD_HW_ADDR
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p7_2(self):
- type_ = ofproto.OFPET_PORT_MOD_FAILED
- code = ofproto.OFPPMFC_BAD_CONFIG
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p7_3(self):
- type_ = ofproto.OFPET_PORT_MOD_FAILED
- code = ofproto.OFPPMFC_BAD_ADVERTISE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p7_4(self):
- type_ = ofproto.OFPET_PORT_MOD_FAILED
- code = ofproto.OFPPMFC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p8_0(self):
- type_ = ofproto.OFPET_TABLE_MOD_FAILED
- code = ofproto.OFPTMFC_BAD_TABLE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p8_1(self):
- type_ = ofproto.OFPET_TABLE_MOD_FAILED
- code = ofproto.OFPTMFC_BAD_CONFIG
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p8_2(self):
- type_ = ofproto.OFPET_TABLE_MOD_FAILED
- code = ofproto.OFPTMFC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p9_0(self):
- type_ = ofproto.OFPET_QUEUE_OP_FAILED
- code = ofproto.OFPQOFC_BAD_PORT
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p9_1(self):
- type_ = ofproto.OFPET_QUEUE_OP_FAILED
- code = ofproto.OFPQOFC_BAD_QUEUE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p9_2(self):
- type_ = ofproto.OFPET_QUEUE_OP_FAILED
- code = ofproto.OFPQOFC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p10_0(self):
- type_ = ofproto.OFPET_SWITCH_CONFIG_FAILED
- code = ofproto.OFPSCFC_BAD_FLAGS
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p10_1(self):
- type_ = ofproto.OFPET_SWITCH_CONFIG_FAILED
- code = ofproto.OFPSCFC_BAD_LEN
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p10_2(self):
- type_ = ofproto.OFPET_SWITCH_CONFIG_FAILED
- code = ofproto.OFPSCFC_EPERM
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p11_0(self):
- type_ = ofproto.OFPET_ROLE_REQUEST_FAILED
- code = ofproto.OFPRRFC_STALE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p11_1(self):
- type_ = ofproto.OFPET_ROLE_REQUEST_FAILED
- code = ofproto.OFPRRFC_UNSUP
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_p11_2(self):
- type_ = ofproto.OFPET_ROLE_REQUEST_FAILED
- code = ofproto.OFPRRFC_BAD_ROLE
- data = b'Error Message.'
- self._test_parser(type_, code, data)
-
- def test_parser_experimenter(self):
- type_ = 0xffff
- exp_type = 1
- experimenter = 1
- data = b'Error Experimenter Message.'
-
- # OFP_ERROR_EXPERIMENTER_MSG_PACK_STR = '!HHI'
- fmt = ofproto.OFP_ERROR_EXPERIMENTER_MSG_PACK_STR
- buf = self.buf + pack(fmt, type_, exp_type, experimenter) \
- + data
-
- res = OFPErrorMsg.parser(object, self.version, self.msg_type,
- self.msg_len, self.xid, buf)
-
- eq_(res.version, self.version)
- eq_(res.msg_type, self.msg_type)
- eq_(res.msg_len, self.msg_len)
- eq_(res.xid, self.xid)
- eq_(res.type, type_)
- eq_(res.exp_type, exp_type)
- eq_(res.experimenter, experimenter)
- eq_(res.data, data)
-
- def _test_serialize(self, type_, code, data):
- # OFP_ERROR_MSG_PACK_STR = '!HH'
- fmt = ofproto.OFP_ERROR_MSG_PACK_STR
- buf = self.buf + pack(fmt, type_, code) + data
-
- # initialization
- c = OFPErrorMsg(_Datapath)
- c.type = type_
- c.code = code
- c.data = data
-
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_ERROR, c.msg_type)
- eq_(0, c.xid)
- eq_(len(buf), c.msg_len)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_ERROR_MSG_PACK_STR.replace('!', '') \
- + str(len(c.data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_ERROR)
- eq_(res[2], len(buf))
- eq_(res[3], 0)
- eq_(res[4], type_)
- eq_(res[5], code)
- eq_(res[6], data)
-
- def test_serialize_mid(self):
- type_ = 32768
- code = 32768
- data = b'Error Message.'
- self._test_serialize(type_, code, data)
-
- def test_serialize_max(self):
- type_ = 65535
- code = 65535
- data = b'Error Message.'.ljust(65523)
- self._test_serialize(type_, code, data)
-
- def test_serialize_min_except_data(self):
- type_ = ofproto.OFPET_HELLO_FAILED
- code = ofproto.OFPHFC_INCOMPATIBLE
- data = b'Error Message.'
- self._test_serialize(type_, code, data)
-
- @raises(AssertionError)
- def test_serialize_check_data(self):
- c = OFPErrorMsg(_Datapath)
- c.serialize()
-
- def _test_serialize_p(self, type_, code):
- self._test_serialize(type_, code, b'Error Message.')
-
- def test_serialize_p0_1(self):
- self._test_serialize_p(ofproto.OFPET_HELLO_FAILED,
- ofproto.OFPHFC_EPERM)
-
- def test_serialize_p1_0(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_VERSION)
-
- def test_serialize_p1_1(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_TYPE)
-
- def test_serialize_p1_2(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_STAT)
-
- def test_serialize_p1_3(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_EXPERIMENTER)
-
- def test_serialize_p1_4(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_EXP_TYPE)
-
- def test_serialize_p1_5(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_EPERM)
-
- def test_serialize_p1_6(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_LEN)
-
- def test_serialize_p1_7(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BUFFER_EMPTY)
-
- def test_serialize_p1_8(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BUFFER_UNKNOWN)
-
- def test_serialize_p1_9(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_TABLE_ID)
-
- def test_serialize_p1_10(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_IS_SLAVE)
-
- def test_serialize_p1_11(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_PORT)
-
- def test_serialize_p1_12(self):
- self._test_serialize_p(ofproto.OFPET_BAD_REQUEST,
- ofproto.OFPBRC_BAD_PACKET)
-
- def test_serialize_p2_0(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_TYPE)
-
- def test_serialize_p2_1(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_LEN)
-
- def test_serialize_p2_2(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_EXPERIMENTER)
-
- def test_serialize_p2_3(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_EXP_TYPE)
-
- def test_serialize_p2_4(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_OUT_PORT)
-
- def test_serialize_p2_5(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_ARGUMENT)
-
- def test_serialize_p2_6(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_EPERM)
-
- def test_serialize_p2_7(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_TOO_MANY)
-
- def test_serialize_p2_8(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_QUEUE)
-
- def test_serialize_p2_9(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_OUT_GROUP)
-
- def test_serialize_p2_10(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_MATCH_INCONSISTENT)
-
- def test_serialize_p2_11(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_UNSUPPORTED_ORDER)
-
- def test_serialize_p2_12(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_TAG)
-
- def test_serialize_p2_13(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_SET_TYPE)
-
- def test_serialize_p2_14(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_SET_LEN)
-
- def test_serialize_p2_15(self):
- self._test_serialize_p(ofproto.OFPET_BAD_ACTION,
- ofproto.OFPBAC_BAD_SET_ARGUMENT)
-
- def test_serialize_p3_0(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_UNKNOWN_INST)
-
- def test_serialize_p3_1(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_UNSUP_INST)
-
- def test_serialize_p3_2(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_BAD_TABLE_ID)
-
- def test_serialize_p3_3(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_UNSUP_METADATA)
-
- def test_serialize_p3_4(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_UNSUP_METADATA_MASK)
-
- def test_serialize_p3_5(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_BAD_EXPERIMENTER)
-
- def test_serialize_p3_6(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_BAD_EXP_TYPE)
-
- def test_serialize_p3_7(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_BAD_LEN)
-
- def test_serialize_p3_8(self):
- self._test_serialize_p(ofproto.OFPET_BAD_INSTRUCTION,
- ofproto.OFPBIC_EPERM)
-
- def test_serialize_p4_0(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_TYPE)
-
- def test_serialize_p4_1(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_LEN)
-
- def test_serialize_p4_2(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_TAG)
-
- def test_serialize_p4_3(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_DL_ADDR_MASK)
-
- def test_serialize_p4_4(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_NW_ADDR_MASK)
-
- def test_serialize_p4_5(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_WILDCARDS)
-
- def test_serialize_p4_6(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_FIELD)
-
- def test_serialize_p4_7(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_VALUE)
-
- def test_serialize_p4_8(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_MASK)
-
- def test_serialize_p4_9(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_BAD_PREREQ)
-
- def test_serialize_p4_10(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_DUP_FIELD)
-
- def test_serialize_p4_11(self):
- self._test_serialize_p(ofproto.OFPET_BAD_MATCH,
- ofproto.OFPBMC_EPERM)
-
- def test_serialize_p5_0(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_UNKNOWN)
-
- def test_serialize_p5_1(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_TABLE_FULL)
-
- def test_serialize_p5_2(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_BAD_TABLE_ID)
-
- def test_serialize_p5_3(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_OVERLAP)
-
- def test_serialize_p5_4(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_EPERM)
-
- def test_serialize_p5_5(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_BAD_TIMEOUT)
-
- def test_serialize_p5_6(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_BAD_COMMAND)
-
- def test_serialize_p5_7(self):
- self._test_serialize_p(ofproto.OFPET_FLOW_MOD_FAILED,
- ofproto.OFPFMFC_BAD_FLAGS)
-
- def test_serialize_p6_0(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_GROUP_EXISTS)
-
- def test_serialize_p6_1(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_INVALID_GROUP)
-
- def test_serialize_p6_2(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_WEIGHT_UNSUPPORTED)
-
- def test_serialize_p6_3(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_OUT_OF_GROUPS)
-
- def test_serialize_p6_4(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_OUT_OF_BUCKETS)
-
- def test_serialize_p6_5(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_CHAINING_UNSUPPORTED)
-
- def test_serialize_p6_6(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_WATCH_UNSUPPORTED)
-
- def test_serialize_p6_7(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_LOOP)
-
- def test_serialize_p6_8(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_UNKNOWN_GROUP)
-
- def test_serialize_p6_9(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_CHAINED_GROUP)
-
- def test_serialize_p6_10(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_BAD_TYPE)
-
- def test_serialize_p6_11(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_BAD_COMMAND)
-
- def test_serialize_p6_12(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_BAD_BUCKET)
-
- def test_serialize_p6_13(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_BAD_WATCH)
-
- def test_serialize_p6_14(self):
- self._test_serialize_p(ofproto.OFPET_GROUP_MOD_FAILED,
- ofproto.OFPGMFC_EPERM)
-
- def test_serialize_p7_0(self):
- self._test_serialize_p(ofproto.OFPET_PORT_MOD_FAILED,
- ofproto.OFPPMFC_BAD_PORT)
-
- def test_serialize_p7_1(self):
- self._test_serialize_p(ofproto.OFPET_PORT_MOD_FAILED,
- ofproto.OFPPMFC_BAD_HW_ADDR)
-
- def test_serialize_p7_2(self):
- self._test_serialize_p(ofproto.OFPET_PORT_MOD_FAILED,
- ofproto.OFPPMFC_BAD_CONFIG)
-
- def test_serialize_p7_3(self):
- self._test_serialize_p(ofproto.OFPET_PORT_MOD_FAILED,
- ofproto.OFPPMFC_BAD_ADVERTISE)
-
- def test_serialize_p7_4(self):
- self._test_serialize_p(ofproto.OFPET_PORT_MOD_FAILED,
- ofproto.OFPPMFC_EPERM)
-
- def test_serialize_p8_0(self):
- self._test_serialize_p(ofproto.OFPET_TABLE_MOD_FAILED,
- ofproto.OFPTMFC_BAD_TABLE)
-
- def test_serialize_p8_1(self):
- self._test_serialize_p(ofproto.OFPET_TABLE_MOD_FAILED,
- ofproto.OFPTMFC_BAD_CONFIG)
-
- def test_serialize_p8_2(self):
- self._test_serialize_p(ofproto.OFPET_TABLE_MOD_FAILED,
- ofproto.OFPTMFC_EPERM)
-
- def test_serialize_p9_0(self):
- self._test_serialize_p(ofproto.OFPET_QUEUE_OP_FAILED,
- ofproto.OFPQOFC_BAD_PORT)
-
- def test_serialize_p9_1(self):
- self._test_serialize_p(ofproto.OFPET_QUEUE_OP_FAILED,
- ofproto.OFPQOFC_BAD_QUEUE)
-
- def test_serialize_p9_2(self):
- self._test_serialize_p(ofproto.OFPET_QUEUE_OP_FAILED,
- ofproto.OFPQOFC_EPERM)
-
- def test_serialize_p10_0(self):
- self._test_serialize_p(ofproto.OFPET_SWITCH_CONFIG_FAILED,
- ofproto.OFPSCFC_BAD_FLAGS)
-
- def test_serialize_p10_1(self):
- self._test_serialize_p(ofproto.OFPET_SWITCH_CONFIG_FAILED,
- ofproto.OFPSCFC_BAD_LEN)
-
- def test_serialize_p10_2(self):
- self._test_serialize_p(ofproto.OFPET_SWITCH_CONFIG_FAILED,
- ofproto.OFPSCFC_EPERM)
-
- def test_serialize_p11_0(self):
- self._test_serialize_p(ofproto.OFPET_ROLE_REQUEST_FAILED,
- ofproto.OFPRRFC_STALE)
-
- def test_serialize_p11_1(self):
- self._test_serialize_p(ofproto.OFPET_ROLE_REQUEST_FAILED,
- ofproto.OFPRRFC_UNSUP)
-
- def test_serialize_p11_2(self):
- self._test_serialize_p(ofproto.OFPET_ROLE_REQUEST_FAILED,
- ofproto.OFPRRFC_BAD_ROLE)
-
-
-class TestOFPErrorExperimenterMsg(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPErrorExperimenterMsg
- """
-
- def test_init(self):
- c = OFPErrorExperimenterMsg(_Datapath)
- eq_(c.type, 65535)
- eq_(c.exp_type, None)
- eq_(c.experimenter, None)
- eq_(c.data, None)
-
- def _test_parser(self, exp_type, experimenter, data=None):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_ERROR
- msg_len = ofproto.OFP_ERROR_MSG_SIZE
- xid = 2495926989
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_ERROR_EXPERIMENTER_MSG_PACK_STR = '!HHI'
- type_ = 0xffff
- fmt = ofproto.OFP_ERROR_EXPERIMENTER_MSG_PACK_STR
- buf += pack(fmt, type_, exp_type, experimenter)
-
- if data is not None:
- buf += data
-
- res = OFPErrorExperimenterMsg.parser(
- object, version, msg_type, msg_len, xid, buf)
-
- eq_(res.version, version)
- eq_(res.msg_type, msg_type)
- eq_(res.msg_len, msg_len)
- eq_(res.xid, xid)
- eq_(res.type, type_)
- eq_(res.exp_type, exp_type)
- eq_(res.experimenter, experimenter)
-
- if data is not None:
- eq_(res.data, data)
-
- def test_parser_mid(self):
- exp_type = 32768
- experimenter = 2147483648
- data = b'Error Experimenter Message.'
- self._test_parser(exp_type, experimenter, data)
-
- def test_parser_max(self):
- exp_type = 65535
- experimenter = 4294967295
- data = b'Error Experimenter Message.'.ljust(65519)
- self._test_parser(exp_type, experimenter, data)
-
- def test_parser_min(self):
- exp_type = 0
- experimenter = 0
- self._test_parser(exp_type, experimenter)
-
-
-class TestOFPEchoRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPEchoRequest
- """
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_ECHO_REQUEST
- msg_len = ofproto.OFP_HEADER_SIZE
- xid = 2495926989
-
- def test_init(self):
- c = OFPEchoRequest(_Datapath)
- eq_(c.data, None)
-
- def _test_parser(self, data=None):
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, self.version, self.msg_type,
- self.msg_len, self.xid)
-
- if data is not None:
- buf += data
-
- res = OFPEchoRequest.parser(object, self.version, self.msg_type,
- self.msg_len, self.xid, buf)
-
- eq_(res.version, self.version)
- eq_(res.msg_type, self.msg_type)
- eq_(res.msg_len, self.msg_len)
- eq_(res.xid, self.xid)
-
- if data is not None:
- eq_(res.data, data)
-
- def test_parser_mid(self):
- data = b'Request Message.'
- self._test_parser(data)
-
- def test_parser_max(self):
- data = b'Request Message.'.ljust(65527)
- self._test_parser(data)
-
- def test_parser_min(self):
- data = None
- self._test_parser(data)
-
- def _test_serialize(self, data):
- c = OFPEchoRequest(_Datapath)
- c.data = data
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_ECHO_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
-
- if data is not None:
- fmt += str(len(c.data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_ECHO_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
-
- if data is not None:
- eq_(res[4], data)
-
- def test_serialize_mid(self):
- data = b'Request Message.'
- self._test_serialize(data)
-
- def test_serialize_max(self):
- data = b'Request Message.'.ljust(65527)
- self._test_serialize(data)
-
- def test_serialize_min(self):
- data = None
- self._test_serialize(data)
-
-
-class TestOFPEchoReply(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPEchoReply
- """
-
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_ECHO_REPLY
- msg_len = ofproto.OFP_HEADER_SIZE
- xid = 2495926989
-
- def test_init(self):
- c = OFPEchoReply(_Datapath)
- eq_(c.data, None)
-
- def _test_parser(self, data):
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, self.version, self.msg_type,
- self.msg_len, self.xid)
-
- if data is not None:
- buf += data
-
- res = OFPEchoReply.parser(object, self.version, self.msg_type,
- self.msg_len, self.xid, buf)
-
- eq_(res.version, self.version)
- eq_(res.msg_type, self.msg_type)
- eq_(res.msg_len, self.msg_len)
- eq_(res.xid, self.xid)
-
- if data is not None:
- eq_(res.data, data)
-
- def test_parser_mid(self):
- data = b'Reply Message.'
- self._test_parser(data)
-
- def test_parser_max(self):
- data = b'Reply Message.'.ljust(65527)
- self._test_parser(data)
-
- def test_parser_min(self):
- data = None
- self._test_parser(data)
-
- def _test_serialize(self, data):
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, self.version, self.msg_type,
- self.msg_len, self.xid) + data
-
- c = OFPEchoReply(_Datapath)
- c.data = data
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_ECHO_REPLY, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + str(len(c.data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_ECHO_REPLY)
- eq_(res[2], len(buf))
- eq_(res[3], 0)
- eq_(res[4], data)
-
- def test_serialize_mid(self):
- data = b'Reply Message.'
- self._test_serialize(data)
-
- def test_serialize_max(self):
- data = b'Reply Message.'.ljust(65527)
- self._test_serialize(data)
-
- @raises(AssertionError)
- def test_serialize_check_data(self):
- c = OFPEchoReply(_Datapath)
- c.serialize()
-
-
-class TestOFPExperimenter(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPExperimenter
- """
-
- c = OFPExperimenter(_Datapath)
-
- def _test_parser(self, xid, experimenter, exp_type):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_EXPERIMENTER
- msg_len = ofproto.OFP_EXPERIMENTER_HEADER_SIZE
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_EXPERIMENTER_HEADER_PACK_STR
- # '!II'...experimenter, exp_type
- fmt = ofproto.OFP_EXPERIMENTER_HEADER_PACK_STR
- buf += pack(fmt, experimenter, exp_type)
-
- res = OFPExperimenter.parser(object, version, msg_type,
- msg_len, xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(experimenter, res.experimenter)
- eq_(exp_type, res.exp_type)
-
- def test_parser_mid(self):
- xid = 2495926989
- experimenter = 2147483648
- exp_type = 1
- self._test_parser(xid, experimenter, exp_type)
-
- def test_parser_max(self):
- xid = 4294967295
- experimenter = 4294967295
- exp_type = 65535
- self._test_parser(xid, experimenter, exp_type)
-
- def test_parser_min(self):
- xid = 0
- experimenter = 0
- exp_type = 0
- self._test_parser(xid, experimenter, exp_type)
-
-
-class TestOFPPort(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPort
- """
-
- def test_init(self):
- # OFP_PORT_PACK_STR
- # '!I4x6s2x16sIIIIIIII'... port_no, pad(4), hw_addr, pad(2),
- # name, config, state, curr, advertised,
- # peer, curr_speed, max_speed
- port_no = 1119692796
- hw_addr = 'c0:26:53:c4:29:e2'
- name = b'name'.ljust(16)
- config = 2226555987
- state = 1678244809
- curr = 2850556459
- advertised = 2025421682
- supported = 2120575149
- peer = 2757463021
- curr_speed = 2641353507
- max_speed = 1797291672
-
- fmt = ofproto.OFP_PORT_PACK_STR
-
- c = OFPPort(port_no, hw_addr, name, config, state, curr,
- advertised, supported, peer, curr_speed, max_speed)
-
- eq_(port_no, c.port_no)
- eq_(hw_addr, c.hw_addr)
- eq_(name, c.name)
- eq_(config, c.config)
- eq_(state, c.state)
- eq_(curr, c.curr)
- eq_(advertised, c.advertised)
- eq_(supported, c.supported)
- eq_(peer, c.peer)
- eq_(curr_speed, c.curr_speed)
- eq_(max_speed, c.max_speed)
-
- def _test_parser(self, port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed):
- name = b'name'.ljust(16)
- fmt = ofproto.OFP_PORT_PACK_STR
- buf = pack(fmt, port_no, addrconv.mac.text_to_bin(hw_addr), name,
- config, state, curr,
- advertised, supported, peer, curr_speed, max_speed)
-
- res = OFPPort.parser(buf, 0)
-
- eq_(port_no, res.port_no)
- eq_(hw_addr, res.hw_addr)
- eq_(name, res.name)
- eq_(config, res.config)
- eq_(state, res.state)
- eq_(curr, res.curr)
- eq_(advertised, res.advertised)
- eq_(supported, res.supported)
- eq_(peer, res.peer)
- eq_(curr_speed, res.curr_speed)
- eq_(max_speed, res.max_speed)
-
- def test_parser_mid(self):
- port_no = 1119692796
- hw_addr = 'c0:26:53:c4:29:e2'
- config = 2226555987
- state = 1678244809
- curr = 2850556459
- advertised = 2025421682
- supported = 2120575149
- peer = 2757463021
- curr_speed = 2641353507
- max_speed = 1797291672
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_max(self):
- port_no = ofproto.OFPP_ANY
- hw_addr = 'ff:ff:ff:ff:ff:ff'
- config = 4294967295
- state = 4294967295
- curr = 4294967295
- advertised = 4294967295
- supported = 4294967295
- peer = 4294967295
- curr_speed = 4294967295
- max_speed = 4294967295
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_min(self):
- port_no = 0
- hw_addr = '00:00:00:00:00:00'
- config = 0
- state = 0
- curr = 0
- advertised = 0
- supported = 0
- peer = 0
- curr_speed = 0
- max_speed = 0
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p1(self):
- port_no = ofproto.OFPP_MAX
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_PORT_DOWN
- state = ofproto.OFPPS_LINK_DOWN
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_10MB_HD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p2(self):
- port_no = ofproto.OFPP_IN_PORT
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_RECV
- state = ofproto.OFPPS_BLOCKED
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_10MB_FD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p3(self):
- port_no = ofproto.OFPP_TABLE
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_FWD
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_100MB_HD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p4(self):
- port_no = ofproto.OFPP_NORMAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_100MB_FD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p5(self):
- port_no = ofproto.OFPP_FLOOD
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_1GB_HD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p6(self):
- port_no = ofproto.OFPP_ALL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_1GB_FD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p7(self):
- port_no = ofproto.OFPP_CONTROLLER
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_10GB_FD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p8(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_40GB_FD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p9(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_100GB_FD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p10(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_1TB_FD
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p11(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_OTHER
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p12(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_COPPER
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p13(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_FIBER
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p14(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_AUTONEG
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p15(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_PAUSE
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p16(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = 'c0:26:53:c4:29:e2'
- config = ofproto.OFPPC_NO_PACKET_IN
- state = ofproto.OFPPS_LIVE
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_PAUSE_ASYM
- self._test_parser(port_no, hw_addr, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
-
-class TestOFPFeaturesRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPFeaturesRequest
- """
-
- def test_serialize(self):
- c = OFPFeaturesRequest(_Datapath)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_FEATURES_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_FEATURES_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
-
-
-class TestOFPSwitchFeatures(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPSwitchFeatures
- """
-
- def _test_parser(self, xid, datapath_id, n_buffers,
- n_tables, capabilities, reserved, port_cnt=0):
-
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_FEATURES_REPLY
- msg_len = ofproto.OFP_SWITCH_FEATURES_SIZE \
- + ofproto.OFP_PORT_SIZE * port_cnt
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_SWITCH_FEATURES_PACK_STR
- # '!QIB3xII'...datapath_id, n_buffers, n_tables,
- # pad(3), capabilities, reserved
-
- fmt = ofproto.OFP_SWITCH_FEATURES_PACK_STR
- buf += pack(fmt, datapath_id, n_buffers, n_tables,
- capabilities, reserved)
-
- for i in range(port_cnt):
- # OFP_PORT_PACK_STR
- # '!I4x6s2x16sIIIIIIII'... port_no, pad(4), hw_addr, pad(2),
- # name, config, state, curr, advertised,
- # peer, curr_speed, max_speed
- port_no = i
-
- fmt = ofproto.OFP_PORT_PACK_STR
- buf += pack(fmt, port_no, b'\x00' * 6, b'\x00' * 16, 0, 0, 0,
- 0, 0, 0, 0, 0)
-
- res = OFPSwitchFeatures.parser(object, version, msg_type,
- msg_len, xid, buf)
-
- eq_(res.version, version)
- eq_(res.msg_type, msg_type)
- eq_(res.msg_len, msg_len)
- eq_(res.xid, xid)
-
- eq_(res.datapath_id, datapath_id)
- eq_(res.n_buffers, n_buffers)
- eq_(res.n_tables, n_tables)
- eq_(res.capabilities, capabilities)
- eq_(res._reserved, reserved)
-
- for i in range(port_cnt):
- eq_(res.ports[i].port_no, i)
-
- def test_parser_mid(self):
- xid = 2495926989
- datapath_id = 1270985291017894273
- n_buffers = 2148849654
- n_tables = 228
- capabilities = 1766843586
- reserved = 2013714700
- port_cnt = 1
-
- self._test_parser(xid, datapath_id, n_buffers, n_tables,
- capabilities, reserved, port_cnt)
-
- def test_parser_max(self):
- xid = 4294967295
- datapath_id = 18446744073709551615
- n_buffers = 4294967295
- n_tables = 255
- capabilities = 4294967295
- reserved = 4294967295
- port_cnt = 1023
-
- self._test_parser(xid, datapath_id, n_buffers, n_tables,
- capabilities, reserved, port_cnt)
-
- def test_parser_min(self):
- xid = 0
- datapath_id = 0
- n_buffers = 0
- n_tables = 0
- capabilities = 0
- reserved = 0
- port_cnt = 0
-
- self._test_parser(xid, datapath_id, n_buffers, n_tables,
- capabilities, reserved, port_cnt)
-
-
-class TestOFPGetConfigRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGetConfigRequest
- """
-
- def test_serialize(self):
- c = OFPGetConfigRequest(_Datapath)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_GET_CONFIG_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_GET_CONFIG_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
-
-
-class TestOFPGetConfigReply(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGetConfigReply
- """
-
- def _test_parser(self, xid, flags, miss_send_len):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_GET_CONFIG_REPLY
- msg_len = ofproto.OFP_SWITCH_CONFIG_SIZE
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_SWITCH_CONFIG_PACK_STR
- # '!HH'...flags, miss_send_len
- fmt = ofproto.OFP_SWITCH_CONFIG_PACK_STR
- buf += pack(fmt, flags, miss_send_len)
-
- res = OFPGetConfigReply.parser(object, version, msg_type,
- msg_len, xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(flags, res.flags)
- eq_(miss_send_len, res.miss_send_len)
-
- def test_parser_mid(self):
- xid = 3423224276
- flags = 41186
- miss_send_len = 13838
- self._test_parser(xid, flags, miss_send_len)
-
- def test_parser_max(self):
- xid = 4294967295
- flags = 65535
- miss_send_len = 65535
- self._test_parser(xid, flags, miss_send_len)
-
- def test_parser_min(self):
- xid = 0
- flags = ofproto.OFPC_FRAG_NORMAL
- miss_send_len = 0
- self._test_parser(xid, flags, miss_send_len)
-
- def test_parser_p1(self):
- xid = 3423224276
- flags = ofproto.OFPC_FRAG_DROP
- miss_send_len = 13838
- self._test_parser(xid, flags, miss_send_len)
-
- def test_parser_p2(self):
- xid = 3423224276
- flags = ofproto.OFPC_FRAG_REASM
- miss_send_len = 13838
- self._test_parser(xid, flags, miss_send_len)
-
- def test_parser_p3(self):
- xid = 3423224276
- flags = ofproto.OFPC_FRAG_MASK
- miss_send_len = 13838
- self._test_parser(xid, flags, miss_send_len)
-
- def test_parser_p4(self):
- xid = 3423224276
- flags = ofproto.OFPC_INVALID_TTL_TO_CONTROLLER
- miss_send_len = 13838
- self._test_parser(xid, flags, miss_send_len)
-
-
-class TestOFPSetConfig(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPSetConfig
- """
-
- def test_init(self):
- # OFP_SWITCH_CONFIG_PACK_STR
- # '!HH'...flags, miss_send_len
- flags = 41186
- miss_send_len = 13838
-
- c = OFPSetConfig(_Datapath, flags, miss_send_len)
-
- eq_(flags, c.flags)
- eq_(miss_send_len, c.miss_send_len)
-
- def _test_serialize(self, flags, miss_send_len):
- c = OFPSetConfig(_Datapath, flags, miss_send_len)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_SET_CONFIG, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_SWITCH_CONFIG_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_SET_CONFIG)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], flags)
- eq_(res[5], miss_send_len)
-
- def test_serialize_mid(self):
- flags = 41186
- miss_send_len = 13838
- self._test_serialize(flags, miss_send_len)
-
- def test_serialize_max(self):
- flags = 65535
- miss_send_len = 65535
- self._test_serialize(flags, miss_send_len)
-
- def test_serialize_min(self):
- flags = ofproto.OFPC_FRAG_NORMAL
- miss_send_len = 0
- self._test_serialize(flags, miss_send_len)
-
- def test_serialize_p1(self):
- flags = ofproto.OFPC_FRAG_DROP
- miss_send_len = 13838
- self._test_serialize(flags, miss_send_len)
-
- def test_serialize_p2(self):
- flags = ofproto.OFPC_FRAG_REASM
- miss_send_len = 13838
- self._test_serialize(flags, miss_send_len)
-
- def test_serialize_p3(self):
- flags = ofproto.OFPC_FRAG_MASK
- miss_send_len = 13838
- self._test_serialize(flags, miss_send_len)
-
- def test_serialize_p4(self):
- flags = ofproto.OFPC_INVALID_TTL_TO_CONTROLLER
- miss_send_len = 13838
- self._test_serialize(flags, miss_send_len)
-
- @raises(AssertionError)
- def test_serialize_check_flags(self):
- flags = None
- miss_send_len = 13838
- c = OFPSetConfig(_Datapath, flags, miss_send_len)
- c.serialize()
-
- @raises(AssertionError)
- def test_serialize_check_miss_send_len(self):
- flags = 41186
- miss_send_len = None
- c = OFPSetConfig(_Datapath, flags, miss_send_len)
- c.serialize()
-
-
-class TestOFPPacketIn(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPacketIn
- """
-
- def _test_parser(self, xid, buffer_id, total_len=0,
- reason=0, table_id=0, data=None):
- if data is None:
- data = b''
-
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_PACKET_IN
- msg_len = ofproto.OFP_PACKET_IN_SIZE + len(data)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_PACKET_IN_PACK_STR
- fmt = ofproto.OFP_PACKET_IN_PACK_STR
- buf += pack(fmt, buffer_id, total_len, reason, table_id)
-
- # match
- buf_match = bytearray()
- match = OFPMatch()
- match.serialize(buf_match, 0)
- buf += six.binary_type(buf_match)
-
- # data
- buf += b'\x00' * 2
- buf += data
-
- res = OFPPacketIn.parser(object, version, msg_type, msg_len,
- xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(buffer_id, res.buffer_id)
- eq_(total_len, res.total_len)
- eq_(reason, res.reason)
- eq_(table_id, res.table_id)
- ok_(hasattr(res, 'match'))
- eq_(ofproto.OFPMT_OXM, res.match.type)
-
- if data:
- eq_(data[:total_len], res.data)
-
- def test_data_is_total_len(self):
- xid = 3423224276
- buffer_id = 2926809324
- reason = 128
- table_id = 3
- data = b'PacketIn'
- total_len = len(data)
- self._test_parser(xid, buffer_id, total_len, reason, table_id, data)
-
- def test_data_is_not_total_len(self):
- xid = 3423224276
- buffer_id = 2926809324
- reason = 128
- table_id = 3
- data = b'PacketIn'
- total_len = len(data) - 1
- self._test_parser(xid, buffer_id, total_len, reason, table_id, data)
-
- def test_parser_max(self):
- # 65535(!H max) - 24(without data) = 65511
- xid = 4294967295
- buffer_id = 4294967295
- reason = 255
- table_id = 255
- data = b'data'.ljust(65511)
- total_len = len(data)
- self._test_parser(xid, buffer_id, total_len, reason, table_id, data)
-
- def test_parser_min(self):
- xid = 0
- buffer_id = 0
- reason = ofproto.OFPR_NO_MATCH
- table_id = 0
- total_len = 0
- self._test_parser(xid, buffer_id, total_len, reason, table_id)
-
- def test_parser_p1(self):
- data = b'data'.ljust(8)
- xid = 3423224276
- buffer_id = 2926809324
- total_len = len(data)
- reason = ofproto.OFPR_ACTION
- table_id = 3
- self._test_parser(xid, buffer_id, total_len, reason, table_id, data)
-
- def test_parser_p2(self):
- data = b'data'.ljust(8)
- xid = 3423224276
- buffer_id = 2926809324
- total_len = len(data)
- reason = ofproto.OFPR_INVALID_TTL
- table_id = 3
- self._test_parser(xid, buffer_id, total_len, reason, table_id, data)
-
-
-class TestOFPFlowRemoved(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPFlowRemoved
- """
-
- def _test_parser(self, xid, cookie, priority,
- reason, table_id, duration_sec,
- duration_nsec, idle_timeout, hard_timeout,
- packet_count, byte_count):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_FLOW_REMOVED
- msg_len = ofproto.OFP_FLOW_REMOVED_SIZE
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_FLOW_REMOVED_PACK_STR0
- # '!QHBBIIHHQQ' ...cookie, priority, reason, table_id,
- # duration_sec, duration_nsec, idle_timeout,
- # hard_timeout, packet_count, byte_count
-
- fmt = ofproto.OFP_FLOW_REMOVED_PACK_STR0
- buf += pack(fmt, cookie, priority, reason, table_id,
- duration_sec, duration_nsec, idle_timeout,
- hard_timeout, packet_count, byte_count)
-
- # OFP_MATCH_PACK_STR
- match = OFPMatch()
- buf_match = bytearray()
- match.serialize(buf_match, 0)
-
- buf += six.binary_type(buf_match)
-
- res = OFPFlowRemoved.parser(object, version, msg_type,
- msg_len, xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(cookie, res.cookie)
- eq_(priority, res.priority)
- eq_(reason, res.reason)
- eq_(table_id, res.table_id)
- eq_(duration_sec, res.duration_sec)
- eq_(duration_nsec, res.duration_nsec)
- eq_(idle_timeout, res.idle_timeout)
- eq_(hard_timeout, res.hard_timeout)
- eq_(packet_count, res.packet_count)
- eq_(byte_count, res.byte_count)
- ok_(hasattr(res, 'match'))
- eq_(ofproto.OFPMT_OXM, res.match.type)
-
- def test_parser_mid(self):
- xid = 3423224276
- cookie = 178378173441633860
- priority = 718
- reason = 128
- table_id = 169
- duration_sec = 2250548154
- duration_nsec = 2492776995
- idle_timeout = 60284
- hard_timeout = 60285
- packet_count = 6489108735192644493
- byte_count = 7334344481123449724
- self._test_parser(xid, cookie, priority,
- reason, table_id, duration_sec,
- duration_nsec, idle_timeout, hard_timeout,
- packet_count, byte_count)
-
- def test_parser_max(self):
- xid = 4294967295
- cookie = 18446744073709551615
- priority = 65535
- reason = 255
- table_id = 255
- duration_sec = 4294967295
- duration_nsec = 4294967295
- idle_timeout = 65535
- hard_timeout = 65535
- packet_count = 18446744073709551615
- byte_count = 18446744073709551615
- self._test_parser(xid, cookie, priority,
- reason, table_id, duration_sec,
- duration_nsec, idle_timeout, hard_timeout,
- packet_count, byte_count)
-
- def test_parser_min(self):
- xid = 0
- cookie = 0
- priority = 0
- reason = ofproto.OFPRR_IDLE_TIMEOUT
- table_id = 0
- duration_sec = 0
- duration_nsec = 0
- idle_timeout = 0
- hard_timeout = 0
- packet_count = 0
- byte_count = 0
- self._test_parser(xid, cookie, priority,
- reason, table_id, duration_sec,
- duration_nsec, idle_timeout, hard_timeout,
- packet_count, byte_count)
-
- def test_parser_p1(self):
- xid = 3423224276
- cookie = 178378173441633860
- priority = 718
- reason = ofproto.OFPRR_HARD_TIMEOUT
- table_id = 169
- duration_sec = 2250548154
- duration_nsec = 2492776995
- idle_timeout = 60284
- hard_timeout = 60285
- packet_count = 6489108735192644493
- byte_count = 7334344481123449724
- self._test_parser(xid, cookie, priority,
- reason, table_id, duration_sec,
- duration_nsec, idle_timeout, hard_timeout,
- packet_count, byte_count)
-
- def test_parser_p2(self):
- xid = 3423224276
- cookie = 178378173441633860
- priority = 718
- reason = ofproto.OFPRR_DELETE
- table_id = 169
- duration_sec = 2250548154
- duration_nsec = 2492776995
- idle_timeout = 60284
- hard_timeout = 60285
- packet_count = 6489108735192644493
- byte_count = 7334344481123449724
- self._test_parser(xid, cookie, priority,
- reason, table_id, duration_sec,
- duration_nsec, idle_timeout, hard_timeout,
- packet_count, byte_count)
-
- def test_parser_p3(self):
- xid = 3423224276
- cookie = 178378173441633860
- priority = 718
- reason = ofproto.OFPRR_GROUP_DELETE
- table_id = 169
- duration_sec = 2250548154
- duration_nsec = 2492776995
- idle_timeout = 60284
- hard_timeout = 60285
- packet_count = 6489108735192644493
- byte_count = 7334344481123449724
- self._test_parser(xid, cookie, priority,
- reason, table_id, duration_sec,
- duration_nsec, idle_timeout, hard_timeout,
- packet_count, byte_count)
-
-
-class TestOFPPortStatus(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPortStatus
- """
-
- def _test_parser(self, xid, reason,
- port_no, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed):
-
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_PORT_STATUS
- msg_len = ofproto.OFP_PORT_STATUS_SIZE
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_PORT_STATUS_PACK_STR = '!B7x' + _OFP_PORT_PACK_STR
- # '!B7x'...reason, pad(7)
- # OFP_PORT_PACK_STR
- # '!I4x6s2x16sIIIIIIII'... port_no, pad(4), hw_addr, pad(2),
- # name, config, state, curr, advertised,
- # peer, curr_speed, max_speed
- hw_addr = '80:ff:9a:e3:72:85'
- name = b'name'.ljust(16)
-
- fmt = ofproto.OFP_PORT_STATUS_PACK_STR
- buf += pack(fmt, reason, port_no, addrconv.mac.text_to_bin(hw_addr),
- name, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- res = OFPPortStatus.parser(object, version, msg_type, msg_len,
- xid, buf)
-
- eq_(reason, res.reason)
- eq_(port_no, res.desc.port_no)
- eq_(hw_addr, res.desc.hw_addr)
- eq_(name, res.desc.name)
- eq_(config, res.desc.config)
- eq_(state, res.desc.state)
- eq_(curr, res.desc.curr)
- eq_(advertised, res.desc.advertised)
- eq_(supported, res.desc.supported)
- eq_(peer, res.desc.peer)
- eq_(curr_speed, res.desc.curr_speed)
- eq_(max_speed, res.desc.max_speed)
-
- def test_parser_mid(self):
- xid = 3423224276
- reason = 128
- port_no = 1119692796
- config = 2226555987
- state = 1678244809
- curr = 2850556459
- advertised = 2025421682
- supported = 2120575149
- peer = 2757463021
- curr_speed = 2641353507
- max_speed = 1797291672
- self._test_parser(xid, reason,
- port_no, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_max(self):
- xid = 4294967295
- reason = 255
- port_no = ofproto.OFPP_ANY
- config = 4294967295
- state = 4294967295
- curr = 4294967295
- advertised = 4294967295
- supported = 4294967295
- peer = 4294967295
- curr_speed = 4294967295
- max_speed = 4294967295
- self._test_parser(xid, reason,
- port_no, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_min(self):
- xid = 0
- reason = 0
- port_no = 0
- config = 0
- state = 0
- curr = 0
- advertised = 0
- supported = 0
- peer = 0
- curr_speed = 0
- max_speed = 0
- self._test_parser(xid, reason,
- port_no, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p1(self):
- xid = 3423224276
- reason = ofproto.OFPPR_DELETE
- port_no = ofproto.OFPP_MAX
- config = ofproto.OFPPC_PORT_DOWN
- state = ofproto.OFPPS_LINK_DOWN
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_10MB_HD
- self._test_parser(xid, reason,
- port_no, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
- def test_parser_p2(self):
- xid = 3423224276
- reason = ofproto.OFPPR_MODIFY
- port_no = ofproto.OFPP_MAX
- config = ofproto.OFPPC_PORT_DOWN
- state = ofproto.OFPPS_LINK_DOWN
- curr = advertised = supported \
- = peer = curr_speed = max_speed \
- = ofproto.OFPPF_10MB_HD
- self._test_parser(xid, reason,
- port_no, config, state, curr, advertised,
- supported, peer, curr_speed, max_speed)
-
-
-class TestOFPPacketOut(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPacketOut
- """
-
- def _test_init(self, in_port):
- buffer_id = 0xffffffff
- data = b'Message'
- out_port = 0x00002ae0
- actions = [OFPActionOutput(out_port, 0)]
-
- c = OFPPacketOut(_Datapath, buffer_id, in_port, actions, data)
-
- eq_(buffer_id, c.buffer_id)
- eq_(in_port, c.in_port)
- eq_(0, c.actions_len)
- eq_(data, c.data)
- eq_(actions, c.actions)
-
- def test_init(self):
- in_port = 0x00040455
- self._test_init(in_port)
-
- @raises(AssertionError)
- def test_init_check_in_port(self):
- in_port = None
- self._test_init(in_port)
-
- def _test_serialize(self, buffer_id, in_port, action_cnt=0, data=None):
- actions = []
- for i in range(action_cnt):
- actions.append(ofproto_v1_2_parser.OFPActionOutput(i, 0))
-
- c = OFPPacketOut(_Datapath, buffer_id, in_port, actions, data)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_PACKET_OUT, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR \
- + ofproto.OFP_PACKET_OUT_PACK_STR[1:] \
- + ofproto.OFP_ACTION_OUTPUT_PACK_STR[1:] * action_cnt
-
- if data is not None:
- fmt += str(len(data)) + 's'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_PACKET_OUT)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], buffer_id)
- eq_(res[5], in_port)
- eq_(res[6], ofproto.OFP_ACTION_OUTPUT_SIZE * action_cnt)
-
- for i in range(action_cnt):
- index = 7 + i * 4
- eq_(res[index], ofproto.OFPAT_OUTPUT)
- eq_(res[index + 1], ofproto.OFP_ACTION_OUTPUT_SIZE)
- eq_(res[index + 2], i)
- eq_(res[index + 3], 0)
-
- if data:
- eq_(res[-1], data)
-
- def test_serialize_true(self):
- buffer_id = 0xffffffff
- in_port = 0x00040455
- action_cnt = 2
- data = b'Message'
- self._test_serialize(buffer_id, in_port, action_cnt, data)
-
- def test_serialize_none(self):
- buffer_id = 0xffffffff
- in_port = 0x00040455
- self._test_serialize(buffer_id, in_port)
-
- def test_serialize_max(self):
- buffer_id = 0xffffffff
- in_port = 4294967295
- action_cnt = 1
- data = b'Message'.ljust(65495)
- self._test_serialize(buffer_id, in_port, action_cnt, data)
-
- def test_serialize_min(self):
- buffer_id = 0
- in_port = 0
- self._test_serialize(buffer_id, in_port)
-
- def test_serialize_p1(self):
- buffer_id = 2147483648
- in_port = ofproto.OFPP_CONTROLLER
- self._test_serialize(buffer_id, in_port)
-
- @raises(AssertionError)
- def test_serialize_check_buffer_id(self):
- buffer_id = 2147483648
- in_port = 1
- action_cnt = 0
- data = b'DATA'
- self._test_serialize(buffer_id, in_port, action_cnt, data)
-
-
-class TestOFPFlowMod(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPFlowMod
- """
-
- def test_init(self):
- # OFP_FLOW_MOD_PACK_STR0
- # '!QQBBHHHIIIH2x'...cookie, cookie_mask, table_id, command,
- # idle_timeout, hard_timeout, priority, buffer_id,
- # out_port, out_group, flags
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
- table_id = 3
- command = 0
- idle_timeout = 62317
- hard_timeout = 7365
- priority = 40163
- buffer_id = 4037115955
- out_port = 65037
- out_group = 6606
- flags = 135
- instructions = [OFPInstructionGotoTable(table_id)]
-
- in_port = 1
- match = OFPMatch()
- match.set_in_port(in_port)
-
- c = OFPFlowMod(_Datapath, cookie, cookie_mask, table_id, command,
- idle_timeout, hard_timeout, priority, buffer_id,
- out_port, out_group, flags, match, instructions)
-
- eq_(cookie, c.cookie)
- eq_(cookie_mask, c.cookie_mask)
- eq_(table_id, c.table_id)
- eq_(command, c.command)
- eq_(idle_timeout, c.idle_timeout)
- eq_(hard_timeout, c.hard_timeout)
- eq_(priority, c.priority)
- eq_(buffer_id, c.buffer_id)
- eq_(out_port, c.out_port)
- eq_(out_group, c.out_group)
- eq_(flags, c.flags)
- eq_(in_port, c.match._flow.in_port)
- eq_(instructions[0], c.instructions[0])
-
- def _test_serialize(self, cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags, inst_cnt=0):
- dl_type = 0x0800
- match = OFPMatch()
- match.set_dl_type(dl_type)
-
- insts = []
- for i in range(inst_cnt):
- insts.append(OFPInstructionGotoTable(i))
-
- c = OFPFlowMod(_Datapath, cookie, cookie_mask, table_id, command,
- idle_timeout, hard_timeout, priority, buffer_id,
- out_port, out_group, flags, match, insts)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_FLOW_MOD, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR \
- + ofproto.OFP_FLOW_MOD_PACK_STR0[1:] \
- + 'HHHBB' \
- + MTEthType.pack_str[1:] + '6x' \
- + ofproto.OFP_INSTRUCTION_GOTO_TABLE_PACK_STR[1:] * inst_cnt
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_FLOW_MOD)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], cookie)
- eq_(res[5], cookie_mask)
- eq_(res[6], table_id)
- eq_(res[7], command)
- eq_(res[8], idle_timeout)
- eq_(res[9], hard_timeout)
- eq_(res[10], priority)
- eq_(res[11], buffer_id)
- eq_(res[12], out_port)
- eq_(res[13], out_group)
- eq_(res[14], flags)
-
- # OFP_MATCH (type, length, class, [field, hashmask], n_byte, ip_proto)
- eq_(res[15], ofproto.OFPMT_OXM)
- eq_(res[16], 10) # OFP_MATCH_STR + MTEthType.pack_str
- eq_(res[17], ofproto.OFPXMC_OPENFLOW_BASIC)
- eq_(res[18] >> 1, ofproto.OFPXMT_OFB_ETH_TYPE)
- eq_(res[18] & 0b0001, 0)
- eq_(res[19], calcsize(MTEthType.pack_str))
- eq_(res[20], dl_type)
-
- # insts (type, length, table_id)
- for i in range(inst_cnt):
- index = 21 + 3 * i
- eq_(res[index], ofproto.OFPIT_GOTO_TABLE)
- eq_(res[index + 1], ofproto.OFP_INSTRUCTION_GOTO_TABLE_SIZE)
- eq_(res[index + 2], i)
-
- def test_serialize_mid(self):
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
- table_id = 3
- command = 128
- idle_timeout = 62317
- hard_timeout = 7365
- priority = 40163
- buffer_id = 4037115955
- out_port = 65037
- out_group = 6606
- flags = 135
- inst_cnt = 1
- self._test_serialize(cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags, inst_cnt)
-
- def test_serialize_max(self):
- cookie = 18446744073709551615
- cookie_mask = 18446744073709551615
- table_id = 255
- command = 255
- idle_timeout = 65535
- hard_timeout = 65535
- priority = 65535
- buffer_id = 0xffffffff
- out_port = 0xffffffff
- out_group = 0xffffffff
- flags = 65535
- inst_cnt = 0xff
- self._test_serialize(cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags, inst_cnt)
-
- def test_serialize_min(self):
- cookie = 0
- cookie_mask = 0
- table_id = 0
- command = ofproto.OFPFC_ADD
- idle_timeout = 0
- hard_timeout = 0
- priority = 0
- buffer_id = 0
- out_port = 0
- out_group = 0
- flags = 0
- self._test_serialize(cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags)
-
- def test_serialize_p1(self):
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
- table_id = 3
- command = 1
- idle_timeout = 62317
- hard_timeout = 7365
- priority = 40163
- buffer_id = 4037115955
- out_port = 65037
- out_group = 6606
- flags = 1 << 0
- self._test_serialize(cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags)
-
- def test_serialize_p2(self):
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
- table_id = 3
- command = 2
- idle_timeout = 62317
- hard_timeout = 7365
- priority = 40163
- buffer_id = 4037115955
- out_port = 65037
- out_group = 6606
- flags = 1 << 0
- self._test_serialize(cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags)
-
- def test_serialize_p3(self):
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
- table_id = 3
- command = 3
- idle_timeout = 62317
- hard_timeout = 7365
- priority = 40163
- buffer_id = 4037115955
- out_port = 65037
- out_group = 6606
- flags = 1 << 1
- self._test_serialize(cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags)
-
- def test_serialize_p4(self):
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
- table_id = 3
- command = 4
- idle_timeout = 62317
- hard_timeout = 7365
- priority = 40163
- buffer_id = 4037115955
- out_port = 65037
- out_group = 6606
- flags = 1 << 2
- self._test_serialize(cookie, cookie_mask, table_id,
- command, idle_timeout, hard_timeout,
- priority, buffer_id, out_port,
- out_group, flags)
-
-
-class TestOFPInstructionGotoTable(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPInstructionGotoTable
- """
-
- # OFP_INSTRUCTION_GOTO_TABLE_PACK_STR
- # '!HHB3x'...type, len, table_id, pad(3)
- type_ = ofproto.OFPIT_GOTO_TABLE
- len_ = ofproto.OFP_INSTRUCTION_GOTO_TABLE_SIZE
-
- fmt = ofproto.OFP_INSTRUCTION_GOTO_TABLE_PACK_STR
-
- def test_init(self):
- table_id = 3
- c = OFPInstructionGotoTable(table_id)
-
- eq_(self.type_, c.type)
- eq_(self.len_, c.len)
- eq_(table_id, c.table_id)
-
- def _test_parser(self, table_id):
- buf = pack(self.fmt, self.type_, self.len_, table_id)
- res = OFPInstructionGotoTable.parser(buf, 0)
-
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
- eq_(res.table_id, table_id)
-
- def test_parser_mid(self):
- self._test_parser(3)
-
- def test_parser_max(self):
- self._test_parser(255)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, table_id):
- c = OFPInstructionGotoTable(table_id)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], table_id)
-
- def test_serialize_mid(self):
- self._test_serialize(3)
-
- def test_serialize_max(self):
- self._test_serialize(255)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPInstructionWriteMetadata(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPInstructionWriteMetadata
- """
-
- # OFP_INSTRUCTION_WRITE_METADATA_PACK_STR
- # '!HH4xQQ'...type, len, pad(4), metadata, metadata_mask
- type_ = ofproto.OFPIT_WRITE_METADATA
- len_ = ofproto.OFP_INSTRUCTION_WRITE_METADATA_SIZE
- metadata = 0x1212121212121212
- metadata_mask = 0xff00ff00ff00ff00
-
- fmt = ofproto.OFP_INSTRUCTION_WRITE_METADATA_PACK_STR
-
- def test_init(self):
- c = OFPInstructionWriteMetadata(self.metadata,
- self.metadata_mask)
-
- eq_(self.type_, c.type)
- eq_(self.len_, c.len)
- eq_(self.metadata, c.metadata)
- eq_(self.metadata_mask, c.metadata_mask)
-
- def _test_parser(self, metadata, metadata_mask):
- buf = pack(self.fmt, self.type_, self.len_,
- metadata, metadata_mask)
-
- res = OFPInstructionWriteMetadata.parser(buf, 0)
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
- eq_(res.metadata, metadata)
- eq_(res.metadata_mask, metadata_mask)
-
- def test_parser_metadata_mid(self):
- self._test_parser(self.metadata, self.metadata_mask)
-
- def test_parser_metadata_max(self):
- metadata = 0xffffffffffffffff
- self._test_parser(metadata, self.metadata_mask)
-
- def test_parser_metadata_min(self):
- metadata = 0
- self._test_parser(metadata, self.metadata_mask)
-
- def test_parser_metadata_mask_max(self):
- metadata_mask = 0xffffffffffffffff
- self._test_parser(self.metadata, metadata_mask)
-
- def test_parser_metadata_mask_min(self):
- metadata_mask = 0
- self._test_parser(self.metadata, metadata_mask)
-
- def _test_serialize(self, metadata, metadata_mask):
- c = OFPInstructionWriteMetadata(metadata,
- metadata_mask)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], metadata)
- eq_(res[3], metadata_mask)
-
- def test_serialize_metadata_mid(self):
- self._test_serialize(self.metadata, self.metadata_mask)
-
- def test_serialize_metadata_max(self):
- metadata = 0xffffffffffffffff
- self._test_serialize(metadata, self.metadata_mask)
-
- def test_serialize_metadata_min(self):
- metadata = 0
- self._test_serialize(metadata, self.metadata_mask)
-
- def test_serialize_metadata_mask_max(self):
- metadata_mask = 0xffffffffffffffff
- self._test_serialize(self.metadata, metadata_mask)
-
- def test_serialize_metadata_mask_min(self):
- metadata_mask = 0
- self._test_serialize(self.metadata, metadata_mask)
-
-
-class TestOFPInstructionActions(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPInstructionActions
- """
- # OFP_INSTRUCTION_ACTIONS_PACK_STR
- # '!HH4x'...type, len, pad(4)
- type_ = ofproto.OFPIT_WRITE_ACTIONS
- len_ = ofproto.OFP_INSTRUCTION_ACTIONS_SIZE \
- + ofproto.OFP_ACTION_OUTPUT_SIZE
-
- fmt = ofproto.OFP_INSTRUCTION_ACTIONS_PACK_STR
- buf = pack(fmt, type_, len_)
-
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = 0x00002ae0
- max_len = ofproto.OFP_ACTION_OUTPUT_SIZE
- actions = [OFPActionOutput(port, max_len)]
- buf_actions = bytearray()
- actions[0].serialize(buf_actions, 0)
-
- buf += six.binary_type(buf_actions)
-
- def test_init(self):
- c = OFPInstructionActions(self.type_, self.actions)
-
- eq_(self.type_, c.type)
- eq_(self.actions, c.actions)
-
- def _test_parser(self, action_cnt):
- # OFP_INSTRUCTION_ACTIONS_PACK_STR
- # '!HH4x'...type, len, pad(4)
- len_ = ofproto.OFP_INSTRUCTION_ACTIONS_SIZE \
- + (ofproto.OFP_ACTION_OUTPUT_SIZE * action_cnt)
-
- fmt = ofproto.OFP_INSTRUCTION_ACTIONS_PACK_STR
- buf = pack(fmt, self.type_, len_)
-
- actions = []
- for a in range(action_cnt):
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = a
- action = OFPActionOutput(port, self.max_len)
- actions.append(action)
- buf_actions = bytearray()
- actions[a].serialize(buf_actions, 0)
- buf += six.binary_type(buf_actions)
-
- res = OFPInstructionActions.parser(buf, 0)
-
- # 8
- eq_(res.len, len_)
- eq_(res.type, self.type_)
-
- # 8 + 16 * action_cnt < 65535 byte
- # action_cnt <= 4095
- for a in range(action_cnt):
- eq_(res.actions[a].type, actions[a].type)
- eq_(res.actions[a].len, actions[a].len)
- eq_(res.actions[a].port, actions[a].port)
- eq_(res.actions[a].max_len, actions[a].max_len)
-
- def test_parser_mid(self):
- self._test_parser(2047)
-
- def test_parser_max(self):
- self._test_parser(4095)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, action_cnt):
- # OFP_INSTRUCTION_ACTIONS_PACK_STR
- # '!HH4x'...type, len, pad(4)
- len_ = ofproto.OFP_INSTRUCTION_ACTIONS_SIZE \
- + (ofproto.OFP_ACTION_OUTPUT_SIZE * action_cnt)
-
- actions = []
- for a in range(action_cnt):
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = a
- action = OFPActionOutput(port, self.max_len)
- actions.append(action)
-
- c = OFPInstructionActions(self.type_, actions)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- fmt = '!' \
- + ofproto.OFP_INSTRUCTION_ACTIONS_PACK_STR.replace('!', '')
-
- for a in range(action_cnt):
- fmt += ofproto.OFP_ACTION_OUTPUT_PACK_STR.replace('!', '')
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(res[0], self.type_)
- eq_(res[1], len_)
-
- for a in range(action_cnt):
- d = 2 + a * 4
- eq_(res[d], actions[a].type)
- eq_(res[d + 1], actions[a].len)
- eq_(res[d + 2], actions[a].port)
- eq_(res[d + 3], actions[a].max_len)
-
- def test_serialize_mid(self):
- self._test_serialize(2047)
-
- def test_serialize_max(self):
- self._test_serialize(4095)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionHeader(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionHeader
- """
-
- def test_init(self):
- # OFP_ACTION_HEADER_PACK_STR
- # '!HH4x'...type, len, pad(4)
- type_ = ofproto.OFPAT_OUTPUT
- len_ = ofproto.OFP_ACTION_HEADER_SIZE
-
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- buf = pack(fmt, type_, len_)
-
- c = OFPActionHeader(type_, len_)
-
- eq_(type_, c.type)
- eq_(len_, c.len)
-
- def _test_serialize(self, type_, len_):
- # OFP_ACTION_HEADER_PACK_STR
- # '!HH4x'...type, len, pad(4)
-
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- buf = pack(fmt, type_, len_)
-
- c = OFPActionHeader(type_, len_)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(res[0], type_)
- eq_(res[1], len_)
-
- def test_serialize_mid(self):
- type_ = 11
- len_ = 8
- self._test_serialize(type_, len_)
-
- def test_serialize_max(self):
- type_ = 0xffff
- len_ = 0xffff
- self._test_serialize(type_, len_)
-
- def test_serialize_min(self):
- type_ = 0
- len_ = 0
- self._test_serialize(type_, len_)
-
-
-class TestOFPActionOutput(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionOutput
- """
-
- # OFP_ACTION_OUTPUT_PACK_STR
- # '!HHIH6x'...type, len, port, max_len, pad(6)
- type_ = ofproto.OFPAT_OUTPUT
- len_ = ofproto.OFP_ACTION_OUTPUT_SIZE
-
- def test_init(self):
- port = 6606
- max_len = 1500
- fmt = ofproto.OFP_ACTION_OUTPUT_PACK_STR
- c = OFPActionOutput(port, max_len)
- eq_(port, c.port)
- eq_(max_len, c.max_len)
-
- def _test_parser(self, port, max_len):
- fmt = ofproto.OFP_ACTION_OUTPUT_PACK_STR
- buf = pack(fmt, self.type_, self.len_, port, max_len)
-
- c = OFPActionOutput(port, max_len)
-
- res = c.parser(buf, 0)
-
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
- eq_(res.port, port)
- eq_(res.max_len, max_len)
-
- def test_parser_mid(self):
- port = 6606
- max_len = 16
- self._test_parser(port, max_len)
-
- def test_parser_max(self):
- port = 4294967295
- max_len = 0xffff
- self._test_parser(port, max_len)
-
- def test_parser_min(self):
- port = 0
- max_len = 0
- self._test_parser(port, max_len)
-
- def test_parser_p1(self):
- port = 6606
- max_len = 0xffe5
- self._test_parser(port, max_len)
-
- def _test_serialize(self, port, max_len):
- c = OFPActionOutput(port, max_len)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- fmt = ofproto.OFP_ACTION_OUTPUT_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], port)
- eq_(res[3], max_len)
-
- def test_serialize_mid(self):
- port = 6606
- max_len = 16
- self._test_serialize(port, max_len)
-
- def test_serialize_max(self):
- port = 4294967295
- max_len = 0xffff
- self._test_serialize(port, max_len)
-
- def test_serialize_min(self):
- port = 0
- max_len = 0
- self._test_serialize(port, max_len)
-
- def test_serialize_p1(self):
- port = 6606
- max_len = 0xffe5
- self._test_serialize(port, max_len)
-
-
-class TestOFPActionGroup(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionGroup
- """
-
- # OFP_ACTION_GROUP_PACK_STR
- # '!HHI'...type, len, group_id
- type_ = ofproto.OFPAT_GROUP
- len_ = ofproto.OFP_ACTION_GROUP_SIZE
- group_id = 6606
-
- fmt = ofproto.OFP_ACTION_GROUP_PACK_STR
-
- def test_init(self):
- c = OFPActionGroup(self.group_id)
- eq_(self.group_id, c.group_id)
-
- def _test_parser(self, group_id):
- buf = pack(self.fmt, self.type_, self.len_, group_id)
-
- res = OFPActionGroup.parser(buf, 0)
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
- eq_(res.group_id, group_id)
-
- def test_parser_mid(self):
- self._test_parser(self.group_id)
-
- def test_parser_max(self):
- self._test_parser(4294967295)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, group_id):
- c = OFPActionGroup(group_id)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], group_id)
-
- def test_serialize_mid(self):
- self._test_serialize(self.group_id)
-
- def test_serialize_max(self):
- self._test_serialize(4294967295)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionSetQueue(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionSetQueue
- """
-
- # OFP_ACTION_SET_QUEUE_PACK_STR
- # '!HHI'...type, len, queue_id
- type_ = ofproto.OFPAT_SET_QUEUE
- len_ = ofproto.OFP_ACTION_SET_QUEUE_SIZE
- queue_id = 6606
-
- fmt = ofproto.OFP_ACTION_SET_QUEUE_PACK_STR
-
- def test_init(self):
- c = OFPActionSetQueue(self.queue_id)
- eq_(self.queue_id, c.queue_id)
-
- def _test_parser(self, queue_id):
- buf = pack(self.fmt, self.type_, self.len_, queue_id)
-
- res = OFPActionSetQueue.parser(buf, 0)
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
- eq_(res.queue_id, queue_id)
-
- def test_parser_mid(self):
- self._test_parser(self.queue_id)
-
- def test_parser_max(self):
- self._test_parser(4294967295)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, queue_id):
- c = OFPActionSetQueue(queue_id)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], queue_id)
-
- def test_serialize_mid(self):
- self._test_serialize(self.queue_id)
-
- def test_serialize_max(self):
- self._test_serialize(4294967295)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionSetMplsTtl(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionSetMplsTtl
- """
-
- # OFP_ACTION_MPLS_TTL_PACK_STR
- # '!HHB3x'...type, len, mpls_ttl, pad(3)
- type_ = ofproto.OFPAT_SET_MPLS_TTL
- len_ = ofproto.OFP_ACTION_MPLS_TTL_SIZE
- mpls_ttl = 254
-
- fmt = ofproto.OFP_ACTION_MPLS_TTL_PACK_STR
-
- def test_init(self):
- c = OFPActionSetMplsTtl(self.mpls_ttl)
- eq_(self.mpls_ttl, c.mpls_ttl)
-
- def _test_parser(self, mpls_ttl):
- buf = pack(self.fmt, self.type_, self.len_, mpls_ttl)
-
- res = OFPActionSetMplsTtl.parser(buf, 0)
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
- eq_(res.mpls_ttl, mpls_ttl)
-
- def test_parser_mid(self):
- self._test_parser(self.mpls_ttl)
-
- def test_parser_max(self):
- self._test_parser(255)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, mpls_ttl):
- c = OFPActionSetMplsTtl(mpls_ttl)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], mpls_ttl)
-
- def test_serialize_mid(self):
- self._test_serialize(self.mpls_ttl)
-
- def test_serialize_max(self):
- self._test_serialize(255)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionDecMplsTtl(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionDecMplsTtl
- """
-
- type_ = ofproto.OFPAT_DEC_MPLS_TTL
- len_ = ofproto.OFP_ACTION_MPLS_TTL_SIZE
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- buf = pack(fmt, type_, len_)
- c = OFPActionDecMplsTtl()
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
-
-
-class TestOFPActionSetNwTtl(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionSetNwTtl
- """
-
- # OFP_ACTION_NW_TTL_PACK_STR
- # '!HHB3x'...type, len, nw_ttl, pad(3)
- type_ = ofproto.OFPAT_SET_NW_TTL
- len_ = ofproto.OFP_ACTION_NW_TTL_SIZE
- nw_ttl = 240
-
- fmt = ofproto.OFP_ACTION_NW_TTL_PACK_STR
-
- def test_init(self):
- c = OFPActionSetNwTtl(self.nw_ttl)
- eq_(self.nw_ttl, c.nw_ttl)
-
- def _test_parser(self, nw_ttl):
- buf = pack(self.fmt, self.type_, self.len_, nw_ttl)
-
- res = OFPActionSetNwTtl.parser(buf, 0)
- eq_(res.type, self.type_)
- eq_(res.len, self.len_)
- eq_(res.nw_ttl, nw_ttl)
-
- def test_parser_mid(self):
- self._test_parser(self.nw_ttl)
-
- def test_parser_max(self):
- self._test_parser(255)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, nw_ttl):
- c = OFPActionSetNwTtl(nw_ttl)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], nw_ttl)
-
- def test_serialize_mid(self):
- self._test_serialize(self.nw_ttl)
-
- def test_serialize_max(self):
- self._test_serialize(255)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionDecNwTtl(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionDecNwTtl
- """
-
- type_ = ofproto.OFPAT_DEC_NW_TTL
- len_ = ofproto.OFP_ACTION_NW_TTL_SIZE
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- buf = pack(fmt, type_, len_)
- c = OFPActionDecNwTtl()
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
-
-
-class TestOFPActionCopyTtlOut(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionCopyTtlOut
- """
-
- type_ = ofproto.OFPAT_COPY_TTL_OUT
- len_ = ofproto.OFP_ACTION_HEADER_SIZE
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- buf = pack(fmt, type_, len_)
- c = OFPActionCopyTtlOut()
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
-
-
-class TestOFPActionCopyTtlIn(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionCopyTtlIn
- """
-
- # OFP_ACTION_HEADER_PACK_STR
- # '!HH'...type, len
- type_ = ofproto.OFPAT_COPY_TTL_IN
- len_ = ofproto.OFP_ACTION_HEADER_SIZE
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- buf = pack(fmt, type_, len_)
- c = OFPActionCopyTtlIn()
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(res.len, self.len_)
- eq_(res.type, self.type_)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
-
-
-class TestOFPActionPushVlan(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionPushVlan
- """
-
- # OFP_ACTION_PUSH_PACK_STR
- # '!HHH2x'...type, len, ethertype, pad(2)
- type_ = ofproto.OFPAT_PUSH_VLAN
- len_ = ofproto.OFP_ACTION_PUSH_SIZE
- fmt = ofproto.OFP_ACTION_PUSH_PACK_STR
-
- def test_init(self):
- ethertype = 0x8100
- c = OFPActionPushVlan(ethertype)
- eq_(ethertype, c.ethertype)
-
- def _test_parser(self, ethertype):
- buf = pack(self.fmt, self.type_, self.len_, ethertype)
-
- res = OFPActionPushVlan.parser(buf, 0)
- eq_(res.type, self.type_)
- eq_(res.len, self.len_)
- eq_(res.ethertype, ethertype)
-
- def test_parser_mid(self):
- self._test_parser(0x8100)
-
- def test_parser_max(self):
- self._test_parser(0xffff)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, ethertype):
- c = OFPActionPushVlan(ethertype)
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], ethertype)
-
- def test_serialize_mid(self):
- self._test_serialize(0x8100)
-
- def test_serialize_max(self):
- self._test_serialize(0xffff)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionPushMpls(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionPushMpls
- """
-
- # OFP_ACTION_PUSH_PACK_STR
- # '!HHH2x'...type, len, ethertype, pad(2)
- type_ = ofproto.OFPAT_PUSH_MPLS
- len_ = ofproto.OFP_ACTION_PUSH_SIZE
- fmt = ofproto.OFP_ACTION_PUSH_PACK_STR
-
- def test_init(self):
- ethertype = 0x8100
- c = OFPActionPushMpls(ethertype)
- eq_(ethertype, c.ethertype)
-
- def _test_parser(self, ethertype):
- buf = pack(self.fmt, self.type_, self.len_, ethertype)
-
- res = OFPActionPushMpls.parser(buf, 0)
- eq_(res.type, self.type_)
- eq_(res.len, self.len_)
- eq_(res.ethertype, ethertype)
-
- def test_parser_mid(self):
- self._test_parser(0x8100)
-
- def test_parser_max(self):
- self._test_parser(0xffff)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, ethertype):
- c = OFPActionPushMpls(ethertype)
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], ethertype)
-
- def test_serialize_mid(self):
- self._test_serialize(0x8100)
-
- def test_serialize_max(self):
- self._test_serialize(0xffff)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionPopVlan(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionPopVlan
- """
-
- # OFP_ACTION_HEADER_PACK_STR
- # '!HH'...type, len
- type_ = ofproto.OFPAT_POP_VLAN
- len_ = ofproto.OFP_ACTION_HEADER_SIZE
- fmt = ofproto.OFP_ACTION_HEADER_PACK_STR
- buf = pack(fmt, type_, len_)
- c = OFPActionPopVlan()
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
- eq_(self.type_, res.type)
- eq_(self.len_, res.len)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
-
-
-class TestOFPActionPopMpls(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionPopMpls
- """
-
- # OFP_ACTION_POP_MPLS_PACK_STR
- # '!HHH2x'...type, len, ethertype, pad(2)
- type_ = ofproto.OFPAT_POP_MPLS
- len_ = ofproto.OFP_ACTION_POP_MPLS_SIZE
- fmt = ofproto.OFP_ACTION_POP_MPLS_PACK_STR
-
- def test_init(self):
- ethertype = 0x8100
- c = OFPActionPopMpls(ethertype)
- eq_(ethertype, c.ethertype)
-
- def _test_parser(self, ethertype):
- buf = pack(self.fmt, self.type_, self.len_, ethertype)
-
- res = OFPActionPopMpls.parser(buf, 0)
- eq_(res.type, self.type_)
- eq_(res.len, self.len_)
- eq_(res.ethertype, ethertype)
-
- def test_parser_mid(self):
- self._test_parser(0x8100)
-
- def test_parser_max(self):
- self._test_parser(0xffff)
-
- def test_parser_min(self):
- self._test_parser(0)
-
- def _test_serialize(self, ethertype):
- c = OFPActionPopMpls(ethertype)
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], ethertype)
-
- def test_serialize_mid(self):
- self._test_serialize(0x8100)
-
- def test_serialize_max(self):
- self._test_serialize(0xffff)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
-
-class TestOFPActionSetField(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionSetField
- """
-
- type_ = ofproto.OFPAT_SET_FIELD
- header = ofproto.OXM_OF_IN_PORT
- in_port = 6606
-
- field = MTInPort(header, in_port)
- length = ofproto.OFP_ACTION_SET_FIELD_SIZE + field.oxm_len()
- len_ = utils.round_up(length, 8)
-
- fmt = '!HHII4x'
- buf = pack(fmt, type_, len_, header, in_port)
-
- c = OFPActionSetField(field)
-
- def test_init(self):
- eq_(self.field, self.c.field)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(res.type, self.type_)
- eq_(res.len, self.len_)
- eq_(res.field.header, self.header)
- eq_(res.field.value, self.in_port)
-
- def test_serialize(self):
- buf = bytearray()
- self.c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
-
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], self.header)
- eq_(res[3], self.in_port)
-
-
-class TestOFPActionExperimenter(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPActionExperimenter
- """
-
- # OFP_ACTION_EXPERIMENTER_HEADER_PACK_STR v1.2
- # '!HHI'...type, len, experimenter
- type_ = ofproto.OFPAT_EXPERIMENTER
- len_ = ofproto.OFP_ACTION_EXPERIMENTER_HEADER_SIZE
- fmt = ofproto.OFP_ACTION_EXPERIMENTER_HEADER_PACK_STR
-
- def test_init(self):
- experimenter = 4294967295
- c = OFPActionExperimenter(experimenter)
- eq_(experimenter, c.experimenter)
-
- def _test_parser(self, experimenter):
- buf = pack(self.fmt, self.type_, self.len_, experimenter)
-
- res = OFPActionExperimenter.parser(buf, 0)
- eq_(res.type, self.type_)
- eq_(res.len, self.len_)
- eq_(res.experimenter, experimenter)
-
- def test_parser_mid(self):
- experimenter = 2147483648
- self._test_parser(experimenter)
-
- def test_parser_max(self):
- experimenter = 4294967295
- self._test_parser(experimenter)
-
- def test_parser_min(self):
- experimenter = 0
- self._test_parser(experimenter)
-
- def _test_serialize(self, experimenter):
- c = OFPActionExperimenter(experimenter)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- res = struct.unpack(self.fmt, six.binary_type(buf))
- eq_(res[0], self.type_)
- eq_(res[1], self.len_)
- eq_(res[2], experimenter)
-
- def test_serialize_mid(self):
- experimenter = 2147483648
- self._test_serialize(experimenter)
-
- def test_serialize_max(self):
- experimenter = 4294967295
- self._test_serialize(experimenter)
-
- def test_serialize_min(self):
- experimenter = 0
- self._test_serialize(experimenter)
-
-
-class TestOFPBucket(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPBucket
- """
-
- def test_init(self):
- # OFP_BUCKET_PACK_STR
- # '!HHII4x'...len, weight, watch_port, watch_group, pad(4)
- weight = 4386
- watch_port = 6606
- watch_group = 3
-
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = 3
- max_len = 1500
- actions = [OFPActionOutput(port, max_len)]
-
- c = OFPBucket(weight, watch_port, watch_group, actions)
- eq_(weight, c.weight)
- eq_(watch_port, c.watch_port)
- eq_(watch_group, c.watch_group)
- eq_(1, len(c.actions))
- eq_(port, c.actions[0].port)
- eq_(max_len, c.actions[0].max_len)
-
- def _test_parser(self, weight, watch_port, watch_group, action_cnt):
- # OFP_BUCKET_PACK_STR
- # '!HHII4x'...len, weight, watch_port, watch_group, pad(4)
- len_ = ofproto.OFP_BUCKET_SIZE \
- + (ofproto.OFP_ACTION_OUTPUT_SIZE * action_cnt)
-
- fmt = ofproto.OFP_BUCKET_PACK_STR
- buf = pack(fmt, len_, weight, watch_port, watch_group)
-
- actions = []
- for a in range(action_cnt):
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = a
- max_len = ofproto.OFP_ACTION_OUTPUT_SIZE
- action = OFPActionOutput(port, max_len)
- actions.append(action)
- buf_actions = bytearray()
- actions[a].serialize(buf_actions, 0)
- buf += six.binary_type(buf_actions)
-
- res = OFPBucket.parser(buf, 0)
-
- # 16
- eq_(weight, res.weight)
- eq_(watch_port, res.watch_port)
- eq_(watch_group, res.watch_group)
-
- # 16 + 16 * action_cnt < 65535 byte
- # action_cnt <= 4094
- for a in range(action_cnt):
- eq_(actions[a].type, res.actions[a].type)
- eq_(actions[a].len, res.actions[a].len)
- eq_(actions[a].port, res.actions[a].port)
- eq_(actions[a].max_len, res.actions[a].max_len)
-
- def test_parser_mid(self):
- weight = 4386
- watch_port = 6606
- watch_group = 3
- action_cnt = 2047
- self._test_parser(weight, watch_port,
- watch_group, action_cnt)
-
- def test_parser_max(self):
- weight = 65535
- watch_port = 4294967295
- watch_group = 4294967295
- action_cnt = 4094
- self._test_parser(weight, watch_port,
- watch_group, action_cnt)
-
- def test_parser_min(self):
- weight = 0
- watch_port = 0
- watch_group = 0
- action_cnt = 0
- self._test_parser(weight, watch_port,
- watch_group, action_cnt)
-
- def _test_serialize(self, weight, watch_port, watch_group,
- action_cnt):
- # OFP_BUCKET_PACK_STR
- # '!HHII4x'...len, weight, watch_port, watch_group, pad(4)
- len_ = ofproto.OFP_BUCKET_SIZE \
- + (ofproto.OFP_ACTION_OUTPUT_SIZE * action_cnt)
-
- actions = []
- for a in range(action_cnt):
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = a
- max_len = ofproto.OFP_ACTION_OUTPUT_SIZE
- action = OFPActionOutput(port, max_len)
- actions.append(action)
-
- c = OFPBucket(weight, watch_port, watch_group, actions)
-
- buf = bytearray()
- c.serialize(buf, 0)
-
- fmt = ofproto.OFP_BUCKET_PACK_STR
- for a in range(action_cnt):
- fmt += ofproto.OFP_ACTION_OUTPUT_PACK_STR[1:]
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(res[0], len_)
- eq_(res[1], weight)
- eq_(res[2], watch_port)
- eq_(res[3], watch_group)
-
- for a in range(action_cnt):
- d = 4 + a * 4
- eq_(res[d], actions[a].type)
- eq_(res[d + 1], actions[a].len)
- eq_(res[d + 2], actions[a].port)
- eq_(res[d + 3], actions[a].max_len)
-
- def test_serialize_mid(self):
- weight = 4386
- watch_port = 6606
- watch_group = 3
- action_cnt = 2047
- self._test_serialize(weight, watch_port,
- watch_group, action_cnt)
-
- def test_serialize_max(self):
- weight = 65535
- watch_port = 4294967295
- watch_group = 4294967295
- action_cnt = 4094
- self._test_serialize(weight, watch_port,
- watch_group, action_cnt)
-
- def test_serialize_min(self):
- weight = 0
- watch_port = 0
- watch_group = 0
- action_cnt = 0
- self._test_serialize(weight, watch_port,
- watch_group, action_cnt)
-
-
-class TestOFPGroupMod(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGroupMod
- """
-
- def test_init(self):
- # OFP_GROUP_MOD_PACK_STR
- # '!HBBI'...command, type, pad, group_id
- command = ofproto.OFPFC_ADD
- type_ = ofproto.OFPGT_SELECT
- group_id = 6606
-
- # OFP_BUCKET
- weight = 4386
- watch_port = 8006
- watch_group = 3
-
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = 10
- max_len = 2000
- actions = [OFPActionOutput(port, max_len)]
-
- buckets = [OFPBucket(weight, watch_port, watch_group, actions)]
-
- c = OFPGroupMod(_Datapath, command, type_, group_id, buckets)
- eq_(command, c.command)
- eq_(type_, c.type)
- eq_(group_id, c.group_id)
- eq_(1, len(c.buckets))
- eq_(1, len(c.buckets[0].actions))
- eq_(port, c.buckets[0].actions[0].port)
- eq_(max_len, c.buckets[0].actions[0].max_len)
-
- def _test_serialize(self, command, type_, group_id, bucket_cnt):
- len_ = ofproto.OFP_BUCKET_SIZE \
- + ofproto.OFP_ACTION_OUTPUT_SIZE
-
- buckets = []
- for b in range(bucket_cnt):
- # OFP_BUCKET
- weight = watch_port = watch_group = port = b
- actions = [OFPActionOutput(port, 0)]
- bucket = OFPBucket(weight, watch_port, watch_group, actions)
- buckets.append(bucket)
-
- c = OFPGroupMod(_Datapath, command, type_, group_id, buckets)
-
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_GROUP_MOD, c.msg_type)
- eq_(0, c.xid)
- eq_(len(c.buf), c.msg_len)
-
- # 16 byte
- fmt = ofproto.OFP_HEADER_PACK_STR \
- + ofproto.OFP_GROUP_MOD_PACK_STR[1:]
-
- # 16 + (16 + 16) * bucket_cnt < 65535 byte
- # bucket_cnt <= 2047
- for b in range(bucket_cnt):
- fmt += ofproto.OFP_BUCKET_PACK_STR[1:] \
- + ofproto.OFP_ACTION_OUTPUT_PACK_STR[1:]
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- msg_len = ofproto.OFP_GROUP_MOD_SIZE \
- + (len_ * bucket_cnt)
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_GROUP_MOD)
- eq_(res[2], msg_len)
- eq_(res[3], 0)
- eq_(res[4], command)
- eq_(res[5], type_)
- eq_(res[6], group_id)
-
- for d in range(bucket_cnt):
- e = 7 + d * 8
- eq_(res[e + 1], buckets[d].weight)
- eq_(res[e + 2], buckets[d].watch_port)
- eq_(res[e + 3], buckets[d].watch_group)
- eq_(res[e + 4], buckets[d].actions[0].type)
- eq_(res[e + 5], buckets[d].actions[0].len)
- eq_(res[e + 6], buckets[d].actions[0].port)
- eq_(res[e + 7], buckets[d].actions[0].max_len)
-
- def test_serialize_mid(self):
- command = 32768
- type_ = 128
- group_id = 6606
- bucket_cnt = 1023
- self._test_serialize(command, type_, group_id, bucket_cnt)
-
- def test_serialize_max(self):
- command = 65535
- type_ = 255
- group_id = 4294967295
- bucket_cnt = 2047
- self._test_serialize(command, type_, group_id, bucket_cnt)
-
- def test_serialize_min(self):
- command = 0
- type_ = 0
- group_id = 0
- bucket_cnt = 0
- self._test_serialize(command, type_, group_id, bucket_cnt)
-
- def test_serialize_p1(self):
- command = 1
- type_ = 1
- group_id = 6606
- bucket_cnt = 1023
- self._test_serialize(command, type_, group_id, bucket_cnt)
-
- def test_serialize_p2(self):
- command = 1
- type_ = 2
- group_id = 6606
- bucket_cnt = 1023
- self._test_serialize(command, type_, group_id, bucket_cnt)
-
- def test_serialize_p3(self):
- command = 2
- type_ = 3
- group_id = 6606
- bucket_cnt = 1023
- self._test_serialize(command, type_, group_id, bucket_cnt)
-
-
-class TestOFPPortMod(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPortMod
- """
-
- # OFP_PORT_MOD_PACK_STR v1.2
- # '!I4xs2xIII4x'...port_no, pad(4), hw_addr, pad(2),
- # config, mask, advertise, pad(4)
- port_no = 1119692796
- hw_addr = 'e8:fe:5e:a9:68:6c'
- config = 2226555987
- mask = 1678244809
- advertise = 2025421682
-
- def test_init(self):
- c = OFPPortMod(_Datapath, self.port_no, self.hw_addr,
- self.config, self.mask, self.advertise)
- eq_(self.port_no, c.port_no)
- eq_(self.hw_addr, c.hw_addr)
- eq_(self.config, c.config)
- eq_(self.mask, c.mask)
- eq_(self.advertise, c.advertise)
-
- def _test_serialize(self, port_no, hw_addr, config, mask, advertise):
- c = OFPPortMod(_Datapath, port_no, hw_addr, config,
- mask, advertise)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_PORT_MOD, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_PORT_MOD_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_PORT_MOD)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], port_no)
- eq_(res[5], addrconv.mac.text_to_bin(hw_addr))
- eq_(res[6], config)
- eq_(res[7], mask)
- eq_(res[8], advertise)
-
- def test_serialize_mid(self):
- self._test_serialize(self.port_no, self.hw_addr,
- self.config, self.mask, self.advertise)
-
- def test_serialize_max(self):
- port_no = ofproto.OFPP_ANY
- hw_addr = 'ff:ff:ff:ff:ff:ff'
- config = 0xffffffff
- mask = 0xffffffff
- advertise = 0xffffffff
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_min(self):
- port_no = 0
- hw_addr = '00:00:00:00:00:00'
- config = 0
- mask = 0
- advertise = 0
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p1(self):
- port_no = ofproto.OFPP_MAX
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_PORT_DOWN
- mask = ofproto.OFPPC_PORT_DOWN
- advertise = ofproto.OFPPF_10MB_HD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p2(self):
- port_no = ofproto.OFPP_IN_PORT
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_RECV
- mask = ofproto.OFPPC_NO_RECV
- advertise = ofproto.OFPPF_10MB_FD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p3(self):
- port_no = ofproto.OFPP_TABLE
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_FWD
- mask = ofproto.OFPPC_NO_FWD
- advertise = ofproto.OFPPF_100MB_HD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p4(self):
- port_no = ofproto.OFPP_NORMAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_100MB_FD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p5(self):
- port_no = ofproto.OFPP_FLOOD
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_1GB_HD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p6(self):
- port_no = ofproto.OFPP_ALL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_1GB_FD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p7(self):
- port_no = ofproto.OFPP_CONTROLLER
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_10GB_FD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p8(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_40GB_FD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p9(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_100GB_FD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p10(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_1TB_FD
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p11(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_OTHER
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p12(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_COPPER
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p13(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_FIBER
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p14(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_AUTONEG
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p15(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_PAUSE
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
- def test_serialize_p16(self):
- port_no = ofproto.OFPP_LOCAL
- hw_addr = self.hw_addr
- config = ofproto.OFPPC_NO_PACKET_IN
- mask = ofproto.OFPPC_NO_PACKET_IN
- advertise = ofproto.OFPPF_PAUSE_ASYM
- self._test_serialize(port_no, hw_addr, config, mask, advertise)
-
-
-class TestOFPTableMod(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPTableMod
- """
-
- # OFP_PORT_TABLE_PACK_STR v1.2
- # '!B3xI'...table_id, pad(3), config
- table_id = 3
- config = 2226555987
-
- def test_init(self):
- c = OFPTableMod(_Datapath, self.table_id, self.config)
- eq_(self.table_id, c.table_id)
- eq_(self.config, c.config)
-
- def _test_serialize(self, table_id, config):
- c = OFPTableMod(_Datapath, table_id, config)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_TABLE_MOD, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_TABLE_MOD_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_TABLE_MOD)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], table_id)
- eq_(res[5], config)
-
- def test_serialize_mid(self):
- self._test_serialize(self.table_id, self.config)
-
- def test_serialize_max(self):
- table_id = ofproto.OFPTT_ALL
- config = 0xffffffff
- self._test_serialize(table_id, config)
-
- def test_serialize_min(self):
- table_id = 0
- config = 0
- self._test_serialize(table_id, config)
-
- def test_serialize_p1(self):
- table_id = ofproto.OFPTT_MAX
- config = ofproto.OFPTC_TABLE_MISS_CONTINUE
- self._test_serialize(table_id, config)
-
- def test_serialize_p2(self):
- table_id = ofproto.OFPTT_MAX
- config = ofproto.OFPTC_TABLE_MISS_DROP
- self._test_serialize(table_id, config)
-
- def test_serialize_p3(self):
- table_id = ofproto.OFPTT_MAX
- config = ofproto.OFPTC_TABLE_MISS_MASK
- self._test_serialize(table_id, config)
-
-
-class TestOFPStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPStatsRequest
- """
-
- type_ = ofproto.OFPST_DESC
- c = OFPStatsRequest(_Datapath, type_)
-
- def test_init(self):
- eq_(self.type_, self.c.type)
- eq_(0, self.c.flags)
-
- def test_serialize_body(self):
- len_ = ofproto.OFP_HEADER_SIZE \
- + ofproto.OFP_STATS_REQUEST_SIZE
- self.c.buf = bytearray(len_)
- self.c._serialize_body()
-
- fmt = ofproto.OFP_STATS_REQUEST_PACK_STR
- res = struct.unpack_from(fmt, six.binary_type(self.c.buf),
- ofproto.OFP_HEADER_SIZE)
-
- eq_(res[0], self.type_)
- eq_(res[1], 0)
-
-
-class TestOFPStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPStatsReply
- """
-
- c = OFPStatsReply(_Datapath)
-
- def test_parser_single_struct_true(self):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_STATS_REPLY
- msg_len = ofproto.OFP_STATS_REPLY_SIZE \
- + ofproto.OFP_AGGREGATE_STATS_REPLY_SIZE
- xid = 2495926989
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_STATS_REPLY_PACK_STR
- # '!HH4x'...type, flags, pad(4)
- type_ = ofproto.OFPST_AGGREGATE
- flags = 41802
-
- fmt = ofproto.OFP_STATS_REPLY_PACK_STR
- buf += pack(fmt, type_, flags)
-
- # OFP_AGGREGATE_STATS_REPLY_PACK_STR
- packet_count = 5142202600015232219
- byte_count = 2659740543924820419
- flow_count = 1344694860
- body = OFPAggregateStatsReply(packet_count, byte_count, flow_count)
-
- fmt = ofproto.OFP_AGGREGATE_STATS_REPLY_PACK_STR
- buf += pack(fmt, packet_count, byte_count, flow_count)
-
- res = self.c.parser(object, version, msg_type, msg_len, xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(type_, res.type)
- eq_(flags, res.flags)
- eq_(packet_count, res.body.packet_count)
- eq_(byte_count, res.body.byte_count)
- eq_(flow_count, res.body.flow_count)
-
- def test_parser_single_struct_flase(self):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_STATS_REPLY
- msg_len = ofproto.OFP_STATS_REPLY_SIZE \
- + ofproto.OFP_QUEUE_STATS_SIZE
- xid = 2495926989
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_STATS_REPLY_PACK_STR
- # '!HH4x'...type, flags, pad(4)
- type_ = ofproto.OFPST_QUEUE
- flags = 11884
-
- fmt = ofproto.OFP_STATS_REPLY_PACK_STR
- buf += pack(fmt, type_, flags)
-
- # OFP_QUEUE_STATS_PACK_STR
- port_no = 41186
- queue_id = 6606
- tx_bytes = 8638420181865882538
- tx_packets = 2856480458895760962
- tx_errors = 6283093430376743019
- body = [OFPQueueStats(port_no, queue_id, tx_bytes, tx_packets,
- tx_errors)]
-
- fmt = ofproto.OFP_QUEUE_STATS_PACK_STR
- buf += pack(fmt, port_no, queue_id, tx_bytes, tx_packets, tx_errors)
-
- res = self.c.parser(object, version, msg_type, msg_len, xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(type_, res.type)
- eq_(flags, res.flags)
- eq_(port_no, res.body[0].port_no)
- eq_(queue_id, res.body[0].queue_id)
- eq_(tx_bytes, res.body[0].tx_bytes)
- eq_(tx_packets, res.body[0].tx_packets)
- eq_(tx_errors, res.body[0].tx_errors)
-
- def test_parser_max(self):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_STATS_REPLY
- msg_len = ofproto.OFP_STATS_REPLY_SIZE
- xid = 0xffffffff
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_STATS_REPLY_PACK_STR
- # '!HH4x'...type, flags, pad(4)
- type_ = ofproto.OFPST_QUEUE
- flags = 0xffff
-
- fmt = ofproto.OFP_STATS_REPLY_PACK_STR
- buf += pack(fmt, type_, flags)
- res = self.c.parser(object, version, msg_type, msg_len, xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(type_, res.type)
- eq_(flags, res.flags)
-
- def test_parser_min(self):
- # OFP_HEADER_PACK_STR
- # '!BBHI'...version, msg_type, msg_len, xid
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_STATS_REPLY
- msg_len = ofproto.OFP_STATS_REPLY_SIZE
- xid = 0
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_STATS_REPLY_PACK_STR
- # '!HH4x'...type, flags, pad(4)
- type_ = ofproto.OFPST_QUEUE
- flags = 0
-
- fmt = ofproto.OFP_STATS_REPLY_PACK_STR
- buf += pack(fmt, type_, flags)
- res = self.c.parser(object, version, msg_type, msg_len, xid, buf)
-
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(type_, res.type)
- eq_(flags, res.flags)
-
-
-class TestOFPDescStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPDescStatsRequest
- """
-
- def test_serialize(self):
- c = OFPDescStatsRequest(_Datapath)
- c.serialize()
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_REQUEST_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_DESC)
- eq_(res[5], 0)
-
-
-class TestOFPDescStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPDescStats
- """
-
- # OFP_DESC_STATS_PACK_STR
- # '!256s256s256s32s256s'...mfr_desc, hw_desc, sw_desc, serial_num, dp_desc
- mfr_desc = b'mfr_desc'.ljust(256)
- hw_desc = b'hw_desc'.ljust(256)
- sw_desc = b'sw_desc'.ljust(256)
- serial_num = b'serial_num'.ljust(32)
- dp_desc = b'dp_desc'.ljust(256)
-
- buf = mfr_desc \
- + hw_desc \
- + sw_desc \
- + serial_num \
- + dp_desc
-
- c = OFPDescStats(mfr_desc, hw_desc, sw_desc, serial_num, dp_desc)
-
- def test_init(self):
- eq_(self.mfr_desc, self.c.mfr_desc)
- eq_(self.hw_desc, self.c.hw_desc)
- eq_(self.sw_desc, self.c.sw_desc)
- eq_(self.serial_num, self.c.serial_num)
- eq_(self.dp_desc, self.c.dp_desc)
-
- def test_parser(self):
- res = self.c.parser(self.buf, 0)
-
- eq_(self.mfr_desc, res.mfr_desc)
- eq_(self.hw_desc, res.hw_desc)
- eq_(self.sw_desc, res.sw_desc)
- eq_(self.serial_num, res.serial_num)
- eq_(self.dp_desc, res.dp_desc)
-
-
-class TestOFPFlowStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPFlowStatsRequest
- """
-
- # OFP_FLOW_STATS_REQUEST_PACK_STR
- # '!B3xII4xQQ'...table_id, pad(3), out_port, out_group, pad(4),
- # cookie, cookie_mask
- table_id = 3
- out_port = 65037
- out_group = 6606
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
-
- def test_init(self):
- match = OFPMatch()
- in_port = 3
- match.set_in_port(in_port)
-
- c = OFPFlowStatsRequest(_Datapath, self.table_id, self.out_port,
- self.out_group, self.cookie, self.cookie_mask,
- match)
-
- eq_(self.table_id, c.table_id)
- eq_(self.out_port, c.out_port)
- eq_(self.out_group, c.out_group)
- eq_(self.cookie, c.cookie)
- eq_(self.cookie_mask, c.cookie_mask)
- eq_(in_port, c.match._flow.in_port)
-
- def _test_serialize(self, table_id, out_port, out_group,
- cookie, cookie_mask):
- match = OFPMatch()
- dl_type = 0x800
- match.set_dl_type(dl_type)
-
- c = OFPFlowStatsRequest(_Datapath, table_id, out_port,
- out_group, cookie, cookie_mask, match)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR \
- + ofproto.OFP_STATS_REQUEST_PACK_STR[1:] \
- + ofproto.OFP_FLOW_STATS_REQUEST_PACK_STR[1:] \
- + 'HHHBB' \
- + MTEthType.pack_str[1:] + '6x'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- size = ofproto.OFP_STATS_REPLY_SIZE \
- + ofproto.OFP_FLOW_STATS_REQUEST_SIZE \
- + calcsize(MTEthType.pack_str + '6x')
- eq_(res[2], size)
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_FLOW)
- eq_(res[5], 0)
- eq_(res[6], table_id)
- eq_(res[7], out_port)
- eq_(res[8], out_group)
- eq_(res[9], cookie)
- eq_(res[10], cookie_mask)
- # match
- eq_(res[11], ofproto.OFPMT_OXM)
- eq_(res[12], 10)
- eq_(res[13], ofproto.OFPXMC_OPENFLOW_BASIC)
- eq_(res[14] >> 1, ofproto.OFPXMT_OFB_ETH_TYPE)
- eq_(res[14] & 0b0001, 0)
- eq_(res[15], calcsize(MTEthType.pack_str))
- eq_(res[16], dl_type)
-
- def test_serialize_mid(self):
- self._test_serialize(self.table_id, self.out_port, self.out_group,
- self.cookie, self.cookie_mask)
-
- def test_serialize_max(self):
- table_id = 0xff
- out_port = 0xffff
- out_group = 0xffff
- cookie = 0xffffffff
- cookie_mask = 0xffffffff
- self._test_serialize(table_id, out_port, out_group,
- cookie, cookie_mask)
-
- def test_serialize_min(self):
- table_id = 0
- out_port = 0
- out_group = 0
- cookie = 0
- cookie_mask = 0
- self._test_serialize(table_id, out_port, out_group,
- cookie, cookie_mask)
-
- def test_serialize_p1(self):
- table_id = ofproto.OFPTT_MAX
- self._test_serialize(table_id, self.out_port, self.out_group,
- self.cookie, self.cookie_mask)
-
-
-class TestOFPFlowStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPFlowStats
- """
-
- def test_init(self):
- length = ofproto.OFP_FLOW_STATS_SIZE
- table_id = 81
- duration_sec = 2484712402
- duration_nsec = 3999715196
- priority = 57792
- idle_timeout = 36368
- hard_timeout = 54425
- cookie = 793171083674290912
- packet_count = 5142202600015232219
- byte_count = 2659740543924820419
-
- match = OFPMatch()
- in_port = 2
- match.set_in_port(in_port)
-
- goto_table = 3
- instructions = [OFPInstructionGotoTable(goto_table)]
- c = OFPFlowStats(table_id, duration_sec, duration_nsec,
- priority, idle_timeout, hard_timeout, cookie,
- packet_count, byte_count, match, instructions)
-
- eq_(table_id, c.table_id)
- eq_(duration_sec, c.duration_sec)
- eq_(duration_nsec, c.duration_nsec)
- eq_(priority, c.priority)
- eq_(idle_timeout, c.idle_timeout)
- eq_(hard_timeout, c.hard_timeout)
- eq_(cookie, c.cookie)
- eq_(packet_count, c.packet_count)
- eq_(byte_count, c.byte_count)
- eq_(in_port, c.match._flow.in_port)
- eq_(goto_table, c.instructions[0].table_id)
-
- def _test_parser(self, table_id, duration_sec, duration_nsec,
- priority, idle_timeout, hard_timeout, cookie,
- packet_count, byte_count, inst_cnt=0):
-
- length = ofproto.OFP_FLOW_STATS_SIZE \
- + calcsize(MTEthType.pack_str[1:] + '6x') \
- + ofproto.OFP_INSTRUCTION_GOTO_TABLE_SIZE * inst_cnt
-
- # OFP_FLOW_STATS_PACK_STR
- buf = pack(ofproto.OFP_FLOW_STATS_PACK_STR,
- length, table_id, duration_sec, duration_nsec,
- priority, idle_timeout, hard_timeout, cookie,
- packet_count, byte_count)
-
- # match
- match = OFPMatch()
- dl_type = 0x0800
- match.set_dl_type(dl_type)
- match_buf = bytearray()
- match.serialize(match_buf, 0)
- buf += six.binary_type(match_buf)
-
- # instructions
- # 56 + 8 + 8 * inst_cnt <= 65535
- # inst_cnt <= 8183
- for i in range(inst_cnt):
- inst = OFPInstructionGotoTable(1)
- inst_buf = bytearray()
- inst.serialize(inst_buf, 0)
- buf += six.binary_type(inst_buf)
-
- # parse
- res = OFPFlowStats.parser(buf, 0)
- eq_(length, res.length)
- eq_(table_id, res.table_id)
- eq_(duration_sec, res.duration_sec)
- eq_(duration_nsec, res.duration_nsec)
- eq_(priority, res.priority)
- eq_(idle_timeout, res.idle_timeout)
- eq_(hard_timeout, res.hard_timeout)
- eq_(cookie, res.cookie)
- eq_(packet_count, res.packet_count)
- eq_(byte_count, res.byte_count)
- eq_(dl_type, res.match.fields[0].value)
- for i in range(inst_cnt):
- eq_(1, res.instructions[i].table_id)
-
- def test_parser_mid(self):
- table_id = 81
- duration_sec = 2484712402
- duration_nsec = 3999715196
- priority = 57792
- idle_timeout = 36368
- hard_timeout = 54425
- cookie = 793171083674290912
- packet_count = 5142202600015232219
- byte_count = 2659740543924820419
- inst_cnt = 2
-
- self._test_parser(table_id, duration_sec, duration_nsec,
- priority, idle_timeout, hard_timeout, cookie,
- packet_count, byte_count, inst_cnt)
-
- def test_parser_max(self):
- table_id = 0xff
- duration_sec = 0xffff
- duration_nsec = 0xffff
- priority = 0xffff
- idle_timeout = 0xff
- hard_timeout = 0xff
- cookie = 0xffffffffffffffff
- packet_count = 0xffffffffffffffff
- byte_count = 0xffffffffffffffff
- inst_cnt = 8183
-
- self._test_parser(table_id, duration_sec, duration_nsec,
- priority, idle_timeout, hard_timeout, cookie,
- packet_count, byte_count, inst_cnt)
-
- def test_parser_min(self):
- self._test_parser(0, 0, 0, 0, 0, 0, 0, 0, 0)
-
-
-class TestOFPAggregateStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPAggregateStatsRequest
- """
-
- # OFP_AGGREGATE_STATS_REQUEST_PACK_STR
- # '!B3xII4xQQ'...table_id, pad(3), out_port, out_group, pad(4),
- # cookie, cookie_mask
- table_id = 3
- out_port = 65037
- out_group = 6606
- cookie = 2127614848199081640
- cookie_mask = 2127614848199081641
-
- def test_init(self):
- match = OFPMatch()
- dl_type = 0x800
- match.set_dl_type(dl_type)
- c = OFPAggregateStatsRequest(_Datapath, self.table_id,
- self.out_port, self.out_group,
- self.cookie, self.cookie_mask,
- match)
-
- eq_(self.table_id, c.table_id)
- eq_(self.out_port, c.out_port)
- eq_(self.out_group, c.out_group)
- eq_(self.cookie, c.cookie)
- eq_(self.cookie_mask, c.cookie_mask)
- eq_(dl_type, c.match._flow.dl_type)
-
- def _test_serialize(self, table_id, out_port, out_group,
- cookie, cookie_mask):
- match = OFPMatch()
- dl_type = 0x800
- match.set_dl_type(dl_type)
- c = OFPAggregateStatsRequest(_Datapath, table_id,
- out_port, out_group, cookie,
- cookie_mask, match)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR \
- + ofproto.OFP_STATS_REQUEST_PACK_STR[1:] \
- + ofproto.OFP_AGGREGATE_STATS_REQUEST_PACK_STR[1:] \
- + 'HHHBB' \
- + MTEthType.pack_str[1:] + '6x'
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_AGGREGATE)
- eq_(res[5], 0)
- eq_(res[6], table_id)
- eq_(res[7], out_port)
- eq_(res[8], out_group)
- eq_(res[9], cookie)
- eq_(res[10], cookie_mask)
- # match
- eq_(res[11], ofproto.OFPMT_OXM)
- eq_(res[12], 10)
- eq_(res[13], ofproto.OFPXMC_OPENFLOW_BASIC)
- eq_(res[14] >> 1, ofproto.OFPXMT_OFB_ETH_TYPE)
- eq_(res[14] & 0b0001, 0)
- eq_(res[15], calcsize(MTEthType.pack_str))
- eq_(res[16], dl_type)
-
- def test_serialize_mid(self):
- self._test_serialize(self.table_id, self.out_port, self.out_group,
- self.cookie, self.cookie_mask)
-
- def test_serialize_max(self):
- table_id = 0xff
- out_port = 0xffffffff
- out_group = 0xffffffff
- cookie = 0xffffffff
- cookie_mask = 0xffffffff
- self._test_serialize(table_id, out_port, out_group,
- cookie, cookie_mask)
-
- def test_serialize_min(self):
- table_id = 0
- out_port = 0
- out_group = 0
- cookie = 0
- cookie_mask = 0
- self._test_serialize(table_id, out_port, out_group,
- cookie, cookie_mask)
-
- def test_serialize_p1(self):
- table_id = ofproto.OFPTT_MAX
- self._test_serialize(table_id, self.out_port, self.out_group,
- self.cookie, self.cookie_mask)
-
-
-class TestOFPAggregateStatsReply(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPAggregateStatsReply
- """
-
- # OFP_AGGREGATE_STATS_REPLY_PACK_STR
- # '!QQI4x'...packet_count, byte_count, flow_count, pad(4)
- packet_count = 5142202600015232219
- byte_count = 2659740543924820419
- flow_count = 1344694860
-
- def test_init(self):
- c = OFPAggregateStatsReply(self.packet_count, self.byte_count,
- self.flow_count)
-
- eq_(c.packet_count, self.packet_count)
- eq_(c.byte_count, self.byte_count)
- eq_(c.flow_count, self.flow_count)
-
- def _test_parser(self, packet_count, byte_count, flow_count):
- fmt = ofproto.OFP_AGGREGATE_STATS_REPLY_PACK_STR
- buf = pack(fmt, packet_count, byte_count, flow_count)
-
- res = OFPAggregateStatsReply.parser(buf, 0)
- eq_(packet_count, res.packet_count)
- eq_(byte_count, res.byte_count)
- eq_(flow_count, res.flow_count)
-
- def test_parser_mid(self):
- self._test_parser(self.packet_count, self.byte_count,
- self.flow_count)
-
- def test_parser_max(self):
- packet_count = 18446744073709551615
- byte_count = 18446744073709551615
- flow_count = 4294967295
- self._test_parser(packet_count, byte_count,
- flow_count)
-
- def test_parser_min(self):
- packet_count = 0
- byte_count = 0
- flow_count = 0
- self._test_parser(packet_count, byte_count,
- flow_count)
-
-
-class TestOFPTableStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPTableStatsRequest
- """
-
- def test_serialize(self):
- c = OFPTableStatsRequest(_Datapath)
- c.serialize()
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_REQUEST_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_TABLE)
- eq_(res[5], 0)
-
-
-class TestOFPTableStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPTableStats
- """
-
- def test_init(self):
- table_id = 91
- name = 'name'
- match = 1270985291017894273
- wildcards = 3316608530
- write_actions = 2484712402
- apply_actions = 3999715196
- write_setfields = 5142202600015232219
- apply_setfields = 2659740543924820419
- metadata_match = 2127614848199081640
- metadata_write = 2127614848199081641
- instructions = 1119692796
- config = 2226555987
- max_entries = 2506913869
- active_count = 2024581150
- lookup_count = 4620020561814017052
- matched_count = 2825167325263435621
-
- res = OFPTableStats(table_id, name, match, wildcards, write_actions,
- apply_actions, write_setfields, apply_setfields,
- metadata_match, metadata_write, instructions,
- config, max_entries, active_count, lookup_count,
- matched_count)
-
- eq_(table_id, res.table_id)
- eq_(name, res.name)
- eq_(match, res.match)
- eq_(wildcards, res.wildcards)
- eq_(write_actions, res.write_actions)
- eq_(apply_actions, res.apply_actions)
- eq_(write_setfields, res.write_setfields)
- eq_(apply_setfields, res.apply_setfields)
- eq_(metadata_match, res.metadata_match)
- eq_(metadata_write, res.metadata_write)
- eq_(instructions, res.instructions)
- eq_(config, res.config)
- eq_(max_entries, res.max_entries)
- eq_(active_count, res.active_count)
- eq_(lookup_count, res.lookup_count)
- eq_(matched_count, res.matched_count)
-
- def _test_parser(self, table_id, name, match, wildcards, write_actions,
- apply_actions, write_setfields, apply_setfields,
- metadata_match, metadata_write, instructions, config,
- max_entries, active_count, lookup_count, matched_count):
- # OFP_TABLE_STATS_PACK_STR
- # '!B7x32sQQIIQQQQIIIIQQ'
- # ...table_id, name, match, wildcards, write_actions, apply_actions,
- # write_setfields, apply_setfields', metadata_match, metadata_write,
- # instructions, config, max_entries,
- # active_count, lookup_count, matched_count
- fmt = ofproto.OFP_TABLE_STATS_PACK_STR
- buf = pack(fmt, table_id, name,
- match, wildcards, write_actions,
- apply_actions, write_setfields, apply_setfields,
- metadata_match, metadata_write, instructions, config,
- max_entries, active_count, lookup_count, matched_count)
-
- res = OFPTableStats.parser(buf, 0)
-
- eq_(table_id, res.table_id)
- eq_(name, res.name.replace(b'\x00', b''))
- eq_(match, res.match)
- eq_(wildcards, res.wildcards)
- eq_(write_actions, res.write_actions)
- eq_(apply_actions, res.apply_actions)
- eq_(write_setfields, res.write_setfields)
- eq_(apply_setfields, res.apply_setfields)
- eq_(metadata_match, res.metadata_match)
- eq_(metadata_write, res.metadata_write)
- eq_(instructions, res.instructions)
- eq_(config, res.config)
- eq_(max_entries, res.max_entries)
- eq_(active_count, res.active_count)
- eq_(lookup_count, res.lookup_count)
- eq_(matched_count, res.matched_count)
-
- def test_parser_mid(self):
- table_id = 91
- name = b'name'
- match = 1270985291017894273
- wildcards = 3316608530
- write_actions = 2484712402
- apply_actions = 3999715196
- write_setfields = 5142202600015232219
- apply_setfields = 2659740543924820419
- metadata_match = 2127614848199081640
- metadata_write = 2127614848199081641
- instructions = 1119692796
- config = 2226555987
- max_entries = 2506913869
- active_count = 2024581150
- lookup_count = 4620020561814017052
- matched_count = 2825167325263435621
-
- self._test_parser(table_id, name, match, wildcards, write_actions,
- apply_actions, write_setfields, apply_setfields,
- metadata_match, metadata_write, instructions, config,
- max_entries, active_count, lookup_count,
- matched_count)
-
- def test_parser_max(self):
- # '!B7x32sQQIIQQQQIIIIQQ'
- table_id = 0xff
- name = b'a' * 32
- match = 0xffffffffffffffff
- wildcards = 0xffffffffffffffff
- write_actions = 0xffffffff
- apply_actions = 0xffffffff
- write_setfields = 0xffffffffffffffff
- apply_setfields = 0xffffffffffffffff
- metadata_match = 0xffffffffffffffff
- metadata_write = 0xffffffffffffffff
- instructions = 0xffffffff
- config = 0xffffffff
- max_entries = 0xffffffff
- active_count = 0xffffffff
- lookup_count = 0xffffffffffffffff
- matched_count = 0xffffffffffffffff
-
- self._test_parser(table_id, name, match, wildcards, write_actions,
- apply_actions, write_setfields, apply_setfields,
- metadata_match, metadata_write, instructions, config,
- max_entries, active_count, lookup_count,
- matched_count)
-
- def test_parser_min(self):
- table_id = 0
- name = b''
- match = 0
- wildcards = 0
- write_actions = 0
- apply_actions = 0
- write_setfields = 0
- apply_setfields = 0
- metadata_match = 0
- metadata_write = 0
- instructions = 0
- config = 0
- max_entries = 0
- active_count = 0
- lookup_count = 0
- matched_count = 0
-
- self._test_parser(table_id, name, match, wildcards, write_actions,
- apply_actions, write_setfields, apply_setfields,
- metadata_match, metadata_write, instructions, config,
- max_entries, active_count, lookup_count,
- matched_count)
-
- def _test_parser_p(self, ofpxmt, ofpit, ofptc):
- table_id = 91
- name = b'name'
- match = ofpxmt
- wildcards = ofpxmt
- write_actions = 2484712402
- apply_actions = 3999715196
- write_setfields = ofpxmt
- apply_setfields = ofpxmt
- metadata_match = 2127614848199081640
- metadata_write = 2127614848199081641
- instructions = ofpit
- config = ofptc
- max_entries = 2506913869
- active_count = 2024581150
- lookup_count = 4620020561814017052
- matched_count = 2825167325263435621
-
- self._test_parser(table_id, name, match, wildcards, write_actions,
- apply_actions, write_setfields, apply_setfields,
- metadata_match, metadata_write, instructions, config,
- max_entries, active_count, lookup_count,
- matched_count)
-
- def test_parser_p1(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IN_PORT,
- ofproto.OFPIT_GOTO_TABLE,
- ofproto.OFPTC_TABLE_MISS_CONTINUE)
-
- def test_parser_p2(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IN_PHY_PORT,
- ofproto.OFPIT_WRITE_METADATA,
- ofproto.OFPTC_TABLE_MISS_DROP)
-
- def test_parser_p3(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_METADATA,
- ofproto.OFPIT_WRITE_ACTIONS,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p4(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ETH_DST,
- ofproto.OFPIT_APPLY_ACTIONS,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p5(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ETH_SRC,
- ofproto.OFPIT_CLEAR_ACTIONS,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p6(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ETH_TYPE,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p7(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_VLAN_VID,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p8(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_VLAN_PCP,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p9(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IP_DSCP,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p10(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IP_ECN,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p11(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IP_PROTO,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p12(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV4_SRC,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p13(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV4_DST,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p14(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_TCP_SRC,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p15(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_TCP_DST,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p16(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_UDP_SRC,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p17(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_UDP_DST,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p18(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_SCTP_SRC,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p19(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_SCTP_DST,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p20(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ICMPV4_TYPE,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p21(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ICMPV4_CODE,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p22(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ARP_OP,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p23(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ARP_SPA,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p24(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ARP_TPA,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p25(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ARP_SHA,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p26(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ARP_THA,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p27(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV6_SRC,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p28(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV6_DST,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p29(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV6_FLABEL,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p30(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ICMPV6_TYPE,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p31(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_ICMPV6_CODE,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p32(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV6_ND_TARGET,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p33(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV6_ND_SLL,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p34(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_IPV6_ND_TLL,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p35(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_MPLS_LABEL,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
- def test_parser_p36(self):
- self._test_parser_p(ofproto.OFPXMT_OFB_MPLS_TC,
- ofproto.OFPIT_EXPERIMENTER,
- ofproto.OFPTC_TABLE_MISS_MASK)
-
-
-class TestOFPPortStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPortStatsRequest
- """
-
- # OFP_PORT_STATS_REQUEST_PACK_STR
- # '!I4x'...port_no, pad(4)
- port_no = 41186
-
- def test_init(self):
- c = OFPPortStatsRequest(_Datapath, self.port_no)
- eq_(self.port_no, c.port_no)
-
- def _test_serialize(self, port_no):
- c = OFPPortStatsRequest(_Datapath, port_no)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_REQUEST_PACK_STR.replace('!', '') \
- + ofproto.OFP_PORT_STATS_REQUEST_PACK_STR.replace('!', '')
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_PORT)
- eq_(res[5], 0)
- eq_(res[6], port_no)
-
- def test_serialize_mid(self):
- self._test_serialize(self.port_no)
-
- def test_serialize_max(self):
- self._test_serialize(ofproto.OFPP_ANY)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
- def test_serialize_p1(self):
- self._test_serialize(ofproto.OFPP_MAX)
-
- def test_serialize_p2(self):
- self._test_serialize(ofproto.OFPP_IN_PORT)
-
- def test_serialize_p3(self):
- self._test_serialize(ofproto.OFPP_TABLE)
-
- def test_serialize_p4(self):
- self._test_serialize(ofproto.OFPP_NORMAL)
-
- def test_serialize_p5(self):
- self._test_serialize(ofproto.OFPP_FLOOD)
-
- def test_serialize_p6(self):
- self._test_serialize(ofproto.OFPP_ALL)
-
- def test_serialize_p7(self):
- self._test_serialize(ofproto.OFPP_CONTROLLER)
-
- def test_serialize_p8(self):
- self._test_serialize(ofproto.OFPP_LOCAL)
-
-
-class TestOFPPortStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPortStats
- """
-
- def test_init(self):
- port_no = 6606
- rx_packets = 5999980397101236279
- tx_packets = 2856480458895760962
- rx_bytes = 6170274950576278921
- tx_bytes = 8638420181865882538
- rx_dropped = 6982303461569875546
- tx_dropped = 661287462113808071
- rx_errors = 3422231811478788365
- tx_errors = 6283093430376743019
- rx_frame_err = 876072919806406283
- rx_over_err = 6525873760178941600
- rx_crc_err = 8303073210207070535
- collisions = 3409801584220270201
-
- res = OFPPortStats(port_no, rx_packets, tx_packets,
- rx_bytes, tx_bytes, rx_dropped, tx_dropped,
- rx_errors, tx_errors, rx_frame_err,
- rx_over_err, rx_crc_err, collisions)
-
- eq_(port_no, res.port_no)
- eq_(rx_packets, res.rx_packets)
- eq_(tx_packets, res.tx_packets)
- eq_(rx_bytes, res.rx_bytes)
- eq_(tx_bytes, res.tx_bytes)
- eq_(rx_dropped, res.rx_dropped)
- eq_(tx_dropped, res.tx_dropped)
- eq_(rx_errors, res.rx_errors)
- eq_(tx_errors, res.tx_errors)
- eq_(rx_frame_err, res.rx_frame_err)
- eq_(rx_over_err, res.rx_over_err)
- eq_(rx_crc_err, res.rx_crc_err)
- eq_(collisions, res.collisions)
-
- def _test_parser(self, port_no, rx_packets, tx_packets,
- rx_bytes, tx_bytes, rx_dropped, tx_dropped,
- rx_errors, tx_errors, rx_frame_err,
- rx_over_err, rx_crc_err, collisions):
-
- # OFP_PORT_STATS_PACK_STR = '!H6xQQQQQQQQQQQQ'
- fmt = ofproto.OFP_PORT_STATS_PACK_STR
- buf = pack(fmt, port_no, rx_packets, tx_packets, rx_bytes, tx_bytes,
- rx_dropped, tx_dropped, rx_errors, tx_errors, rx_frame_err,
- rx_over_err, rx_crc_err, collisions)
-
- res = OFPPortStats.parser(buf, 0)
-
- eq_(port_no, res.port_no)
- eq_(rx_packets, res.rx_packets)
- eq_(tx_packets, res.tx_packets)
- eq_(rx_bytes, res.rx_bytes)
- eq_(tx_bytes, res.tx_bytes)
- eq_(rx_dropped, res.rx_dropped)
- eq_(tx_dropped, res.tx_dropped)
- eq_(rx_errors, res.rx_errors)
- eq_(tx_errors, res.tx_errors)
- eq_(rx_frame_err, res.rx_frame_err)
- eq_(rx_over_err, res.rx_over_err)
- eq_(rx_crc_err, res.rx_crc_err)
- eq_(collisions, res.collisions)
-
- def test_parser_mid(self):
- port_no = 6606
- rx_packets = 5999980397101236279
- tx_packets = 2856480458895760962
- rx_bytes = 6170274950576278921
- tx_bytes = 8638420181865882538
- rx_dropped = 6982303461569875546
- tx_dropped = 661287462113808071
- rx_errors = 3422231811478788365
- tx_errors = 6283093430376743019
- rx_frame_err = 876072919806406283
- rx_over_err = 6525873760178941600
- rx_crc_err = 8303073210207070535
- collisions = 3409801584220270201
-
- self._test_parser(port_no, rx_packets, tx_packets, rx_bytes, tx_bytes,
- rx_dropped, tx_dropped, rx_errors, tx_errors,
- rx_frame_err, rx_over_err, rx_crc_err, collisions)
-
- def test_parser_max(self):
- port_no = 0xffffffff
- rx_packets = 0xffffffffffffffff
- tx_packets = 0xffffffffffffffff
- rx_bytes = 0xffffffffffffffff
- tx_bytes = 0xffffffffffffffff
- rx_dropped = 0xffffffffffffffff
- tx_dropped = 0xffffffffffffffff
- rx_errors = 0xffffffffffffffff
- tx_errors = 0xffffffffffffffff
- rx_frame_err = 0xffffffffffffffff
- rx_over_err = 0xffffffffffffffff
- rx_crc_err = 0xffffffffffffffff
- collisions = 0xffffffffffffffff
-
- self._test_parser(port_no, rx_packets, tx_packets, rx_bytes, tx_bytes,
- rx_dropped, tx_dropped, rx_errors, tx_errors,
- rx_frame_err, rx_over_err, rx_crc_err, collisions)
-
- def test_parser_min(self):
- port_no = 0
- rx_packets = 0
- tx_packets = 0
- rx_bytes = 0
- tx_bytes = 0
- rx_dropped = 0
- tx_dropped = 0
- rx_errors = 0
- tx_errors = 0
- rx_frame_err = 0
- rx_over_err = 0
- rx_crc_err = 0
- collisions = 0
-
- self._test_parser(port_no, rx_packets, tx_packets, rx_bytes, tx_bytes,
- rx_dropped, tx_dropped, rx_errors, tx_errors,
- rx_frame_err, rx_over_err, rx_crc_err, collisions)
-
- def _test_parser_p(self, port_no):
- port_no = port_no
- rx_packets = 5999980397101236279
- tx_packets = 2856480458895760962
- rx_bytes = 6170274950576278921
- tx_bytes = 8638420181865882538
- rx_dropped = 6982303461569875546
- tx_dropped = 661287462113808071
- rx_errors = 3422231811478788365
- tx_errors = 6283093430376743019
- rx_frame_err = 876072919806406283
- rx_over_err = 6525873760178941600
- rx_crc_err = 8303073210207070535
- collisions = 3409801584220270201
-
- self._test_parser(port_no, rx_packets, tx_packets, rx_bytes, tx_bytes,
- rx_dropped, tx_dropped, rx_errors, tx_errors,
- rx_frame_err, rx_over_err, rx_crc_err, collisions)
-
- def test_parser_p1(self):
- self._test_parser_p(ofproto.OFPP_MAX)
-
- def test_parser_p2(self):
- self._test_parser_p(ofproto.OFPP_IN_PORT)
-
- def test_parser_p3(self):
- self._test_parser_p(ofproto.OFPP_TABLE)
-
- def test_parser_p4(self):
- self._test_parser_p(ofproto.OFPP_NORMAL)
-
- def test_parser_p5(self):
- self._test_parser_p(ofproto.OFPP_FLOOD)
-
- def test_parser_p6(self):
- self._test_parser_p(ofproto.OFPP_ALL)
-
- def test_parser_p7(self):
- self._test_parser_p(ofproto.OFPP_CONTROLLER)
-
- def test_parser_p8(self):
- self._test_parser_p(ofproto.OFPP_LOCAL)
-
-
-class TestOFPQueueStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPQueueStatsRequest
- """
-
- # OFP_QUEUE_STATS_REQUEST_PACK_STR
- # '!II'...port_no, queue_id
- port_no = 41186
- queue_id = 6606
-
- def test_init(self):
- c = OFPQueueStatsRequest(_Datapath, self.port_no, self.queue_id)
-
- eq_(self.port_no, c.port_no)
- eq_(self.queue_id, c.queue_id)
-
- def _test_serialize(self, port_no, queue_id):
- c = OFPQueueStatsRequest(_Datapath, port_no, queue_id)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_REQUEST_PACK_STR.replace('!', '') \
- + ofproto.OFP_QUEUE_STATS_REQUEST_PACK_STR.replace('!', '')
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_QUEUE)
- eq_(res[5], 0)
- eq_(res[6], port_no)
- eq_(res[7], queue_id)
-
- def test_serialize_mid(self):
- self._test_serialize(self.port_no, self.queue_id)
-
- def test_serialize_max(self):
- self._test_serialize(0xffffffff, 0xffffffff)
-
- def test_serialize_min(self):
- self._test_serialize(0, 0)
-
- def test_serialize_p1(self):
- self._test_serialize(ofproto.OFPP_MAX, self.queue_id)
-
- def test_serialize_p2(self):
- self._test_serialize(ofproto.OFPP_IN_PORT, self.queue_id)
-
- def test_serialize_p3(self):
- self._test_serialize(ofproto.OFPP_NORMAL, self.queue_id)
-
- def test_serialize_p4(self):
- self._test_serialize(ofproto.OFPP_TABLE, self.queue_id)
-
- def test_serialize_p5(self):
- self._test_serialize(ofproto.OFPP_FLOOD, self.queue_id)
-
- def test_serialize_p6(self):
- self._test_serialize(ofproto.OFPP_ALL, self.queue_id)
-
- def test_serialize_p7(self):
- self._test_serialize(ofproto.OFPP_CONTROLLER, self.queue_id)
-
- def test_serialize_p8(self):
- self._test_serialize(ofproto.OFPP_LOCAL, self.queue_id)
-
-
-class TestOFPQueueStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPQueueStats
- """
-
- def test_init(self):
- port_no = 41186
- queue_id = 6606
- tx_bytes = 8638420181865882538
- tx_packets = 2856480458895760962
- tx_errors = 6283093430376743019
-
- res = OFPQueueStats(port_no, queue_id, tx_bytes,
- tx_packets, tx_errors)
-
- eq_(port_no, res.port_no)
- eq_(queue_id, res.queue_id)
- eq_(tx_bytes, res.tx_bytes)
- eq_(tx_packets, res.tx_packets)
- eq_(tx_errors, res.tx_errors)
-
- def _test_parser(self, port_no, queue_id, tx_bytes,
- tx_packets, tx_errors):
-
- # OFP_QUEUE_STATS_PACK_STR = '!IIQQQ'
- fmt = ofproto.OFP_QUEUE_STATS_PACK_STR
- buf = pack(fmt, port_no, queue_id, tx_bytes, tx_packets, tx_errors)
- res = OFPQueueStats.parser(buf, 0)
-
- eq_(port_no, res.port_no)
- eq_(queue_id, res.queue_id)
- eq_(tx_bytes, res.tx_bytes)
- eq_(tx_packets, res.tx_packets)
- eq_(tx_errors, res.tx_errors)
-
- def test_parser_mid(self):
- port_no = 41186
- queue_id = 6606
- tx_bytes = 8638420181865882538
- tx_packets = 2856480458895760962
- tx_errors = 6283093430376743019
-
- self._test_parser(port_no, queue_id, tx_bytes,
- tx_packets, tx_errors)
-
- def test_parser_max(self):
- port_no = 0xffffffff
- queue_id = 0xffffffff
- tx_bytes = 0xffffffffffffffff
- tx_packets = 0xffffffffffffffff
- tx_errors = 0xffffffffffffffff
-
- self._test_parser(port_no, queue_id, tx_bytes,
- tx_packets, tx_errors)
-
- def test_parser_min(self):
- port_no = 0
- queue_id = 0
- tx_bytes = 0
- tx_packets = 0
- tx_errors = 0
-
- self._test_parser(port_no, queue_id, tx_bytes,
- tx_packets, tx_errors)
-
- def _test_parser_p(self, port_no):
- queue_id = 6606
- tx_bytes = 8638420181865882538
- tx_packets = 2856480458895760962
- tx_errors = 6283093430376743019
-
- self._test_parser(port_no, queue_id, tx_bytes,
- tx_packets, tx_errors)
-
- def test_parser_p1(self):
- self._test_parser_p(ofproto.OFPP_MAX)
-
- def test_parser_p2(self):
- self._test_parser_p(ofproto.OFPP_IN_PORT)
-
- def test_parser_p3(self):
- self._test_parser_p(ofproto.OFPP_TABLE)
-
- def test_parser_p4(self):
- self._test_parser_p(ofproto.OFPP_NORMAL)
-
- def test_parser_p5(self):
- self._test_parser_p(ofproto.OFPP_FLOOD)
-
- def test_parser_p6(self):
- self._test_parser_p(ofproto.OFPP_ALL)
-
- def test_parser_p7(self):
- self._test_parser_p(ofproto.OFPP_CONTROLLER)
-
- def test_parser_p8(self):
- self._test_parser_p(ofproto.OFPP_LOCAL)
-
-
-class TestOFPBucketCounter(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPBucketCounter
- """
-
- # OFP_BUCKET_COUNTER_PACK_STR = '!QQ'
- packet_count = 6489108735192644493
- byte_count = 7334344481123449724
-
- def test_init(self):
- c = OFPBucketCounter(self.packet_count, self.byte_count)
-
- eq_(self.packet_count, c.packet_count)
- eq_(self.byte_count, c.byte_count)
-
- def _test_parser(self, packet_count, byte_count):
- fmt = ofproto.OFP_BUCKET_COUNTER_PACK_STR
- buf = pack(fmt, packet_count, byte_count)
-
- res = OFPBucketCounter.parser(buf, 0)
- eq_(packet_count, res.packet_count)
- eq_(byte_count, res.byte_count)
-
- def test_parser_mid(self):
- self._test_parser(self.packet_count, self.byte_count)
-
- def test_parser_max(self):
- packet_count = 18446744073709551615
- byte_count = 18446744073709551615
- self._test_parser(packet_count, byte_count)
-
- def test_parser_min(self):
- packet_count = 0
- byte_count = 0
- self._test_parser(packet_count, byte_count)
-
-
-class TestOFPGroupStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGroupStatsRequest
- """
-
- # OFP_GROUP_STATS_REQUEST_PACK_STR
- # '!I4x'...group_id, pad(4)
- group_id = 6606
-
- def test_init(self):
- c = OFPGroupStatsRequest(_Datapath, self.group_id)
- eq_(self.group_id, c.group_id)
-
- def _test_serialize(self, group_id):
- c = OFPGroupStatsRequest(_Datapath, group_id)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_STATS_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_REQUEST_PACK_STR.replace('!', '') \
- + ofproto.OFP_GROUP_STATS_REQUEST_PACK_STR.replace('!', '')
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_GROUP)
- eq_(res[5], 0)
- eq_(res[6], group_id)
-
- def test_serialize_mid(self):
- self._test_serialize(self.group_id)
-
- def test_serialize_max(self):
- self._test_serialize(0xffffffff)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
- def test_serialize_p1(self):
- self._test_serialize(ofproto.OFPG_MAX)
-
- def test_serialize_p2(self):
- self._test_serialize(ofproto.OFPG_ALL)
-
-
-class TestOFPGroupStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGroupStats
- """
-
- # OFP_GROUP_STATS_PACK_STR = '!H2xII4xQQ'
- length = ofproto.OFP_GROUP_STATS_SIZE \
- + ofproto.OFP_BUCKET_COUNTER_SIZE
- group_id = 6606
- ref_count = 2102
- packet_count = 6489108735192644493
- byte_count = 7334344481123449724
-
- # OFP_BUCKET_COUNTER_PACK_STR = '!QQ'
- buck_packet_count = 3519264449364891087
- buck_byte_count = 3123449724733434448
- bucket_counters = [OFPBucketCounter(buck_packet_count, buck_byte_count)]
- buf_bucket_counters = pack(ofproto.OFP_BUCKET_COUNTER_PACK_STR,
- buck_packet_count, buck_byte_count)
-
- fmt = ofproto.OFP_GROUP_STATS_PACK_STR
- buf = pack(fmt, length, group_id, ref_count, packet_count, byte_count) \
- + buf_bucket_counters
-
- def test_init(self):
- c = OFPGroupStats(self.group_id, self.ref_count,
- self.packet_count, self.byte_count,
- self.bucket_counters)
-
- eq_(self.group_id, c.group_id)
- eq_(self.ref_count, c.ref_count)
- eq_(self.packet_count, c.packet_count)
- eq_(self.byte_count, c.byte_count)
- eq_(self.bucket_counters, c.bucket_counters)
-
- def _test_parser(self, group_id, ref_count, packet_count,
- byte_count, bucket_counter_cnt):
- # OFP_GROUP_STATS_PACK_STR = '!H2xII4xQQ'
- length = ofproto.OFP_GROUP_STATS_SIZE \
- + (ofproto.OFP_BUCKET_COUNTER_SIZE * bucket_counter_cnt)
- fmt = ofproto.OFP_GROUP_STATS_PACK_STR
- buf = pack(fmt, length, group_id, ref_count,
- packet_count, byte_count)
-
- bucket_counters = []
- for b in range(bucket_counter_cnt):
- # OFP_BUCKET_COUNTER_PACK_STR = '!QQ'
- buck_packet_count = b
- buck_byte_count = b
- bucket_counter = OFPBucketCounter(buck_packet_count,
- buck_byte_count)
- bucket_counters.append(bucket_counter)
- buf_bucket_counters = \
- pack(ofproto.OFP_BUCKET_COUNTER_PACK_STR,
- buck_packet_count, buck_byte_count)
- buf += buf_bucket_counters
-
- res = OFPGroupStats.parser(buf, 0)
-
- # 32
- eq_(length, res.length)
- eq_(group_id, res.group_id)
- eq_(ref_count, res.ref_count)
- eq_(packet_count, res.packet_count)
- eq_(byte_count, res.byte_count)
-
- # 32 + 16 * bucket_counter_cnt < 65535 byte
- # bucket_counter_cnt <= 4093
- for b in range(bucket_counter_cnt):
- eq_(bucket_counters[b].packet_count,
- res.bucket_counters[b].packet_count)
- eq_(bucket_counters[b].byte_count,
- res.bucket_counters[b].byte_count)
-
- def test_parser_mid(self):
- bucket_counter_cnt = 2046
- self._test_parser(self.group_id, self.ref_count,
- self.packet_count, self.byte_count,
- bucket_counter_cnt)
-
- def test_parser_max(self):
- group_id = 4294967295
- ref_count = 4294967295
- packet_count = 18446744073709551615
- byte_count = 18446744073709551615
- bucket_counter_cnt = 4093
- self._test_parser(group_id, ref_count,
- packet_count, byte_count,
- bucket_counter_cnt)
-
- def test_parser_min(self):
- group_id = 0
- ref_count = 0
- packet_count = 0
- byte_count = 0
- bucket_counter_cnt = 0
- self._test_parser(group_id, ref_count,
- packet_count, byte_count,
- bucket_counter_cnt)
-
-
-class TestOFPGroupDescStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGroupDescStatsRequest
- """
-
- def test_serialize(self):
- c = OFPGroupDescStatsRequest(_Datapath)
- c.serialize()
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_REQUEST_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_GROUP_DESC)
- eq_(res[5], 0)
-
-
-class TestOFPGroupDescStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGroupDescStats
- """
-
- # OFP_GROUP_DESC_STATS_PACK_STR = '!HBxI'
- length = ofproto.OFP_GROUP_DESC_STATS_SIZE \
- + ofproto.OFP_BUCKET_SIZE \
- + ofproto.OFP_ACTION_OUTPUT_SIZE
- type_ = 128
- group_id = 6606
-
- # OFP_ACTION (OFP_ACTION_OUTPUT)
- port = 0x00002ae0
- max_len = ofproto.OFP_ACTION_OUTPUT_SIZE
- actions = [OFPActionOutput(port, max_len)]
- buf_actions = bytearray()
- actions[0].serialize(buf_actions, 0)
-
- # OFP_BUCKET
- weight = 4386
- watch_port = 8006
- watch_group = 3
- buckets = [OFPBucket(weight, watch_port, watch_group, actions)]
-
- bucket_cnt = 1024
-
- def test_init(self):
- c = OFPGroupDescStats(self.type_, self.group_id, self.buckets)
-
- eq_(self.type_, c.type)
- eq_(self.group_id, c.group_id)
- eq_(self.buckets, c.buckets)
-
- def _test_parser(self, type_, group_id, bucket_cnt):
- # OFP_GROUP_DESC_STATS_PACK_STR = '!HBxI'
- length = ofproto.OFP_GROUP_DESC_STATS_SIZE \
- + (ofproto.OFP_BUCKET_SIZE
- + ofproto.OFP_ACTION_OUTPUT_SIZE) * bucket_cnt
-
- fmt = ofproto.OFP_GROUP_DESC_STATS_PACK_STR
- buf = pack(fmt, length, type_, group_id)
-
- buckets = []
- for b in range(bucket_cnt):
- # OFP_BUCKET
- weight = watch_port = watch_group = b
- bucket = OFPBucket(weight,
- watch_port, watch_group,
- self.actions)
- buckets.append(bucket)
- buf_buckets = bytearray()
- buckets[b].serialize(buf_buckets, 0)
- buf += six.binary_type(buf_buckets)
-
- res = OFPGroupDescStats.parser(buf, 0)
-
- # 8 byte
- eq_(type_, res.type)
- eq_(group_id, res.group_id)
-
- # 8 + ( 16 + 16 ) * b < 65535 byte
- # b <= 2047 byte
- for b in range(bucket_cnt):
- eq_(buckets[b].weight, res.buckets[b].weight)
- eq_(buckets[b].watch_port, res.buckets[b].watch_port)
- eq_(buckets[b].watch_group, res.buckets[b].watch_group)
- eq_(buckets[b].actions[0].port,
- res.buckets[b].actions[0].port)
- eq_(buckets[b].actions[0].max_len,
- res.buckets[b].actions[0].max_len)
-
- def test_parser_mid(self):
- self._test_parser(self.type_, self.group_id, self.bucket_cnt)
-
- def test_parser_max(self):
- group_id = 4294967295
- type_ = 255
- bucket_cnt = 2047
- self._test_parser(type_, group_id, bucket_cnt)
-
- def test_parser_min(self):
- group_id = 0
- type_ = ofproto.OFPGT_ALL
- bucket_cnt = 0
- self._test_parser(type_, group_id, bucket_cnt)
-
- def test_parser_p1(self):
- type_ = ofproto.OFPGT_SELECT
- self._test_parser(type_, self.group_id, self.bucket_cnt)
-
- def test_parser_p2(self):
- type_ = ofproto.OFPGT_INDIRECT
- self._test_parser(type_, self.group_id, self.bucket_cnt)
-
- def test_parser_p3(self):
- type_ = ofproto.OFPGT_FF
- self._test_parser(type_, self.group_id, self.bucket_cnt)
-
-
-class TestOFPGroupFeaturesStatsRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGroupFeaturesStatsRequest
- """
-
- def test_serialize(self):
- c = OFPGroupFeaturesStatsRequest(_Datapath)
- c.serialize()
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_STATS_REQUEST_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_STATS_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], ofproto.OFPST_GROUP_FEATURES)
- eq_(res[5], 0)
-
-
-class TestOFPGroupFeaturesStats(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPGroupFeaturesStats
- """
-
- # OFP_GROUP_FEATURES_STATS_PACK_STR = '!II4I4I'
- types = ofproto.OFPGT_ALL
- capabilities = ofproto.OFPGFC_SELECT_WEIGHT
- max_groups = [1, 2, 3, 4]
- actions = [1 << ofproto.OFPAT_OUTPUT,
- 1 << ofproto.OFPAT_COPY_TTL_OUT,
- 1 << ofproto.OFPAT_SET_MPLS_TTL,
- 1 << ofproto.OFPAT_PUSH_VLAN]
-
- def test_init(self):
- c = OFPGroupFeaturesStats(self.types, self.capabilities,
- self.max_groups, self.actions)
- eq_(self.types, c.types)
- eq_(self.capabilities, c.capabilities)
- eq_(self.max_groups, c.max_groups)
- eq_(self.actions, c.actions)
-
- def _test_parser(self, types, capabilities, max_groups, actions):
-
- buf = pack('!I', types) \
- + pack('!I', capabilities) \
- + pack('!I', max_groups[0]) \
- + pack('!I', max_groups[1]) \
- + pack('!I', max_groups[2]) \
- + pack('!I', max_groups[3]) \
- + pack('!I', actions[0]) \
- + pack('!I', actions[1]) \
- + pack('!I', actions[2]) \
- + pack('!I', actions[3])
-
- res = OFPGroupFeaturesStats.parser(buf, 0)
-
- # max_groups and actions after the parser is tuple
- eq_(types, res.types)
- eq_(capabilities, res.capabilities)
- eq_(max_groups, res.max_groups)
- eq_(actions, res.actions)
-
- def test_parser_mid(self):
- self._test_parser(self.types, self.capabilities,
- self.max_groups, self.actions)
-
- def test_parser_max(self):
- types = 0b11111111111111111111111111111111
- capabilities = 0b11111111111111111111111111111111
- max_groups = [4294967295] * 4
- actions = [0b11111111111111111111111111111111] * 4
- self._test_parser(types, capabilities,
- max_groups, actions)
-
- def test_parser_min(self):
- types = 0b00000000000000000000000000000000
- capabilities = 0b00000000000000000000000000000000
- max_groups = [0] * 4
- actions = [0b00000000000000000000000000000000] * 4
- self._test_parser(types, capabilities,
- max_groups, actions)
-
- def _test_parser_p(self, types, capabilities, actions):
- self._test_parser(types, capabilities,
- self.max_groups, actions)
-
- def test_parser_p1(self):
- actions = [1 << ofproto.OFPAT_COPY_TTL_IN,
- 1 << ofproto.OFPAT_DEC_MPLS_TTL,
- 1 << ofproto.OFPAT_POP_VLAN,
- 1 << ofproto.OFPAT_PUSH_MPLS]
- self._test_parser_p(1 << ofproto.OFPGT_ALL,
- ofproto.OFPGFC_CHAINING,
- actions)
-
- def test_parser_p2(self):
- actions = [1 << ofproto.OFPAT_POP_MPLS,
- 1 << ofproto.OFPAT_SET_QUEUE,
- 1 << ofproto.OFPAT_GROUP,
- 1 << ofproto.OFPAT_SET_NW_TTL]
- self._test_parser_p(1 << ofproto.OFPGT_SELECT,
- ofproto.OFPGFC_SELECT_WEIGHT,
- actions)
-
- def test_parser_p3(self):
- actions = [1 << ofproto.OFPAT_DEC_NW_TTL,
- 1 << ofproto.OFPAT_SET_FIELD,
- 1 << ofproto.OFPAT_GROUP,
- 1 << ofproto.OFPAT_SET_NW_TTL]
- self._test_parser_p(1 << ofproto.OFPGT_SELECT,
- ofproto.OFPGFC_SELECT_LIVENESS,
- actions)
-
- def test_parser_p4(self):
- self._test_parser_p(1 << ofproto.OFPGT_INDIRECT,
- ofproto.OFPGFC_CHAINING,
- self.actions)
-
- def test_parser_p5(self):
- self._test_parser_p(1 << ofproto.OFPGT_FF,
- ofproto.OFPGFC_CHAINING_CHECKS,
- self.actions)
-
-
-class TestOFPQueueGetConfigRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPQueueGetConfigRequest
- """
-
- # OFP_QUEUE_GET_CONFIG_REQUEST_PACK_STR v1.2
- # '!I4x'...port, pad(4)
- port = 41186
-
- def test_init(self):
- c = OFPQueueGetConfigRequest(_Datapath, self.port)
- eq_(self.port, c.port)
-
- def _test_serialize(self, port):
- c = OFPQueueGetConfigRequest(_Datapath, port)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_QUEUE_GET_CONFIG_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR \
- + ofproto.OFP_QUEUE_GET_CONFIG_REQUEST_PACK_STR[1:]
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
- eq_(res[0], ofproto.OFP_VERSION)
- eq_(res[1], ofproto.OFPT_QUEUE_GET_CONFIG_REQUEST)
- eq_(res[2], len(c.buf))
- eq_(res[3], 0)
- eq_(res[4], port)
-
- def test_serialize_mid(self):
- self._test_serialize(self.port)
-
- def test_serialize_max(self):
- self._test_serialize(0xffffffff)
-
- def test_serialize_min(self):
- self._test_serialize(0)
-
- def test_serialize_p1(self):
- self._test_serialize(ofproto.OFPP_MAX)
-
-
-class TestOFPQueuePropHeader(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPQueuePropHeader
- """
-
- # OFP_QUEUE_PROP_HEADER_PACK_STR = '!HH4x'
- property_ = 1
- len_ = 10
-
- def test_init(self):
- c = OFPQueuePropHeader(self.property_, self.len_)
- eq_(self.property_, c.property)
- eq_(self.len_, c.len)
-
- def _test_serialize(self, property_, len_):
- c = OFPQueuePropHeader(property_, len_)
- buf = bytearray()
- c.serialize(buf, 0)
-
- fmt = ofproto.OFP_QUEUE_PROP_HEADER_PACK_STR
- res = struct.unpack(fmt, six.binary_type(buf))
-
- eq_(res[0], property_)
- eq_(res[1], len_)
-
- def test_serialize_mid(self):
- self._test_serialize(self.property_, self.len_)
-
- def test_serialize_max(self):
- self._test_serialize(0xffff, 0xffff)
-
- def test_serialize_min(self):
- self._test_serialize(0, 0)
-
-
-class TestOFPPacketQueue(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPPacketQueue
- """
-
- def test_init(self):
- queue_id = 1
- port = 2
- len_ = 3
- properties = [4, 5, 6]
- c = OFPPacketQueue(queue_id, port, properties)
-
- eq_(queue_id, c.queue_id)
- eq_(port, c.port)
- eq_(properties, c.properties)
-
- def _test_parser(self, queue_id, port, prop_cnt):
- # OFP_PACKET_QUEUE_PACK_STR = '!IIH6x'
- fmt = ofproto.OFP_PACKET_QUEUE_PACK_STR
- queue_len = ofproto.OFP_PACKET_QUEUE_SIZE \
- + ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE * prop_cnt
-
- buf = pack(fmt, queue_id, port, queue_len)
-
- for rate in range(prop_cnt):
- # OFP_QUEUE_PROP_HEADER_PACK_STR = '!HH4x'
- fmt = ofproto.OFP_QUEUE_PROP_HEADER_PACK_STR
- prop_type = ofproto.OFPQT_MIN_RATE
- prop_len = ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE
- buf += pack(fmt, prop_type, prop_len)
-
- # OFP_QUEUE_PROP_MIN_RATE_PACK_STR = '!H6x'
- fmt = ofproto.OFP_QUEUE_PROP_MIN_RATE_PACK_STR
- prop_rate = rate
- buf += pack(fmt, prop_rate)
-
- res = OFPPacketQueue.parser(buf, 0)
-
- eq_(queue_id, res.queue_id)
- eq_(port, res.port)
- eq_(queue_len, res.len)
- eq_(prop_cnt, len(res.properties))
-
- for rate, p in enumerate(res.properties):
- eq_(prop_type, p.property)
- eq_(prop_len, p.len)
- eq_(rate, p.rate)
-
- def test_parser_mid(self):
- queue_id = 1
- port = 2
- prop_cnt = 2
- self._test_parser(queue_id, port, prop_cnt)
-
- def test_parser_max(self):
- # queue_len format is 'H' < number 65535
- #
- # queue_len = OFP_PACKET_QUEUE_SIZE(16)
- # + OFP_QUEUE_PROP_MIN_RATE_SIZE(16) * N
- # max_prop_cnt = (65535 - 16) / 16 = 4094
- queue_id = 0xffffffff
- port = 0xffffffff
- prop_cnt = 4094
- self._test_parser(queue_id, port, prop_cnt)
-
- def test_parser_min(self):
- queue_id = 0
- port = 0
- prop_cnt = 0
- self._test_parser(queue_id, port, prop_cnt)
-
-
-class TestOFPQueuePropMinRate(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPQueuePropMinRate
- """
-
- def _test_parser(self, rate):
- # OFP_QUEUE_PROP_MIN_RATE_PACK_STR...H6x
- buf = pack(ofproto.OFP_QUEUE_PROP_MIN_RATE_PACK_STR, rate)
- res = OFPQueuePropMinRate.parser(buf, 0)
- eq_(rate, res.rate)
-
- def test_parser_mid(self):
- self._test_parser(32768)
-
- def test_parser_max(self):
- self._test_parser(0xffff)
-
- def test_parser_min(self):
- self._test_parser(0)
-
-
-class TestOFPQueuePropMaxRate(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPQueuePropMaxRate
- """
-
- rate = 100
- buf = pack(ofproto.OFP_QUEUE_PROP_MAX_RATE_PACK_STR, rate)
- c = OFPQueuePropMaxRate(rate)
-
- def _test_parser(self, rate):
- # OFP_QUEUE_PROP_MAX_RATE_PACK_STR...H6x
- buf = pack(ofproto.OFP_QUEUE_PROP_MAX_RATE_PACK_STR, rate)
- res = OFPQueuePropMaxRate.parser(buf, 0)
- eq_(rate, res.rate)
-
- def test_parser_mid(self):
- self._test_parser(100)
-
- def test_parser_max(self):
- self._test_parser(0xffff)
-
- def test_parser_min(self):
- self._test_parser(0)
-
-
-class TestOFPQueueGetConfigReply(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPQueueGetConfigReply
- """
-
- def _test_parser(self, xid, port, queue_cnt):
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_QUEUE_GET_CONFIG_REPLY
-
- queues_len = 0
- for q in range(queue_cnt):
- queues_len += ofproto.OFP_PACKET_QUEUE_SIZE
- queues_len += ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE
-
- msg_len = ofproto.OFP_QUEUE_GET_CONFIG_REPLY_SIZE \
- + queues_len
-
- # OFP_HEADER_PACK_STR = '!BBHI'
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- # OFP_QUEUE_GET_CONFIG_REPLY_PACK_STR = '!I4x'
- fmt = ofproto.OFP_QUEUE_GET_CONFIG_REPLY_PACK_STR
- buf += pack(fmt, port)
-
- queues = []
- for q in range(1, queue_cnt + 1):
- # OFP_PACKET_QUEUE_PACK_STR = '!IIH6x'
- fmt = ofproto.OFP_PACKET_QUEUE_PACK_STR
- queue_id = q * 100
- queue_port = q
- queue_len = ofproto.OFP_PACKET_QUEUE_SIZE \
- + ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE
- buf += pack(fmt, queue_id, queue_port, queue_len)
-
- # OFP_QUEUE_PROP_HEADER_PACK_STR = '!HH4x'
- fmt = ofproto.OFP_QUEUE_PROP_HEADER_PACK_STR
- prop_type = ofproto.OFPQT_MIN_RATE
- prop_len = ofproto.OFP_QUEUE_PROP_MIN_RATE_SIZE
- buf += pack(fmt, prop_type, prop_len)
-
- # OFP_QUEUE_PROP_MIN_RATE_PACK_STR = '!H6x'
- fmt = ofproto.OFP_QUEUE_PROP_MIN_RATE_PACK_STR
- prop_rate = q * 10
- buf += pack(fmt, prop_rate)
-
- queue = {'queue_id': queue_id, 'queue_port': queue_port,
- 'queue_len': queue_len, 'prop_type': prop_type,
- 'prop_len': prop_len, 'prop_rate': prop_rate}
- queues.append(queue)
-
- res = OFPQueueGetConfigReply.parser(object, version, msg_type,
- msg_len, xid, buf)
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
- eq_(port, res.port)
- eq_(queue_cnt, len(res.queues))
-
- for i, val in enumerate(res.queues):
- c = queues[i]
- eq_(c['queue_id'], val.queue_id)
- eq_(c['queue_port'], val.port)
- eq_(c['queue_len'], val.len)
- eq_(1, len(val.properties))
-
- prop = val.properties[0]
- eq_(c['prop_type'], prop.property)
- eq_(c['prop_len'], prop.len)
- eq_(c['prop_rate'], prop.rate)
-
- def test_parser_mid(self):
- self._test_parser(2495926989, 65037, 2)
-
- def test_parser_max(self):
- # total msg_len = 65520
- self._test_parser(0xffffffff, 0xffffffff, 2047)
-
- def test_parser_min(self):
- self._test_parser(0, 0, 0)
-
-
-class TestOFPBarrierRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPBarrierRequest
- """
- def test_serialize(self):
- c = OFPBarrierRequest(_Datapath)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_BARRIER_REQUEST, c.msg_type)
- eq_(ofproto.OFP_HEADER_SIZE, c.msg_len)
- eq_(0, c.xid)
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- res = unpack(fmt, six.binary_type(c.buf))
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_BARRIER_REQUEST, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, c.xid)
-
-
-class TestOFPBarrierReply(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPBarrierReply
- """
-
- def _test_parser(self, xid):
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_BARRIER_REPLY
- msg_len = ofproto.OFP_HEADER_SIZE
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- res = OFPBarrierReply.parser(object, version, msg_type,
- msg_len, xid, buf)
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
-
- def test_parser_mid(self):
- self._test_parser(2147483648)
-
- def test_parser_max(self):
- self._test_parser(0xffffffff)
-
- def test_parser_min(self):
- self._test_parser(0)
-
-
-class TestOFPRoleRequest(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPRoleRequest
- """
-
- # OFP_ROLE_REQUEST_PACK_STR
- # '!I4xQ'...role, pad(4), generation_id
- role = 2147483648
- generation_id = 1270985291017894273
-
- def test_init(self):
- c = OFPRoleRequest(_Datapath, self.role, self.generation_id)
- eq_(self.role, c.role)
- eq_(self.generation_id, c.generation_id)
-
- def _test_serialize(self, role, generation_id):
- c = OFPRoleRequest(_Datapath, role, generation_id)
- c.serialize()
-
- eq_(ofproto.OFP_VERSION, c.version)
- eq_(ofproto.OFPT_ROLE_REQUEST, c.msg_type)
- eq_(0, c.xid)
-
- fmt = '!' \
- + ofproto.OFP_HEADER_PACK_STR.replace('!', '') \
- + ofproto.OFP_ROLE_REQUEST_PACK_STR.replace('!', '')
-
- res = struct.unpack(fmt, six.binary_type(c.buf))
-
- eq_(ofproto.OFP_VERSION, res[0])
- eq_(ofproto.OFPT_ROLE_REQUEST, res[1])
- eq_(len(c.buf), res[2])
- eq_(0, res[3])
- eq_(role, res[4])
- eq_(generation_id, res[5])
-
- def test_serialize_mid(self):
- self._test_serialize(self.role, self.generation_id)
-
- def test_serialize_max(self):
- role = 0xffffffff
- generation_id = 0xffffffffffffffff
- self._test_serialize(role, generation_id)
-
- def test_serialize_min(self):
- role = 0
- generation_id = 0
- self._test_serialize(role, generation_id)
-
- def test_serialize_p1(self):
- role = ofproto.OFPCR_ROLE_EQUAL
- self._test_serialize(role, self.generation_id)
-
- def test_serialize_p2(self):
- role = ofproto.OFPCR_ROLE_MASTER
- self._test_serialize(role, self.generation_id)
-
- def test_serialize_p3(self):
- role = ofproto.OFPCR_ROLE_SLAVE
- self._test_serialize(role, self.generation_id)
-
-
-class TestOFPRoleReply(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPRoleReply
- """
-
- # OFP_ROLE_REQUEST_PACK_STR
- # '!I4xQ'...role, pad(4), generation_id
- # role = ofproto.OFPCR_ROLE_NOCHANGE
- role = 2147483648
- generation_id = 1270985291017894273
-
- def _test_parser(self, role, generation_id):
- # OFP_HEADER_PACK_STR
- version = ofproto.OFP_VERSION
- msg_type = ofproto.OFPT_ROLE_REPLY
- msg_len = ofproto.OFP_ROLE_REQUEST_SIZE
- xid = 2495926989
-
- fmt = ofproto.OFP_HEADER_PACK_STR
- buf = pack(fmt, version, msg_type, msg_len, xid)
-
- fmt = ofproto.OFP_ROLE_REQUEST_PACK_STR
- buf += pack(fmt, role, generation_id)
-
- res = OFPRoleReply.parser(object, version, msg_type, msg_len, xid, buf)
-
- # OFP_HEADER_PACK_STR
- eq_(version, res.version)
- eq_(msg_type, res.msg_type)
- eq_(msg_len, res.msg_len)
- eq_(xid, res.xid)
-
- # OFP_ROLE_REQUEST_PACK_STR
- eq_(role, res.role)
- eq_(generation_id, res.generation_id)
-
- def test_parser_mid(self):
- self._test_parser(self.role, self.generation_id)
-
- def test_parser_max(self):
- role = 0xffffffff
- generation_id = 0xffffffffffffffff
- self._test_parser(role, generation_id)
-
- def test_parser_min(self):
- role = ofproto.OFPCR_ROLE_NOCHANGE
- generation_id = 0
- self._test_parser(role, generation_id)
-
- def test_parser_p1(self):
- role = ofproto.OFPCR_ROLE_EQUAL
- self._test_parser(role, self.generation_id)
-
- def test_parser_p2(self):
- role = ofproto.OFPCR_ROLE_MASTER
- self._test_parser(role, self.generation_id)
-
- def test_parser_p3(self):
- role = ofproto.OFPCR_ROLE_SLAVE
- self._test_parser(role, self.generation_id)
-
-
-class TestOFPMatch(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPMatch
- """
-
- def test_init(self):
- res = OFPMatch()
-
- # wc check
- eq_(res._wc.metadata_mask, 0)
- eq_(res._wc.dl_dst_mask, 0)
- eq_(res._wc.dl_src_mask, 0)
- eq_(res._wc.vlan_vid_mask, 0)
- eq_(res._wc.ipv4_src_mask, 0)
- eq_(res._wc.ipv4_dst_mask, 0)
- eq_(res._wc.arp_spa_mask, 0)
- eq_(res._wc.arp_tpa_mask, 0)
- eq_(res._wc.arp_sha_mask, 0)
- eq_(res._wc.arp_tha_mask, 0)
- eq_(res._wc.ipv6_src_mask, [])
- eq_(res._wc.ipv6_dst_mask, [])
- eq_(res._wc.ipv6_flabel_mask, 0)
- eq_(res._wc.wildcards, (1 << 64) - 1)
-
- # flow check
- eq_(res._flow.in_port, 0)
- eq_(res._flow.in_phy_port, 0)
- eq_(res._flow.metadata, 0)
- eq_(res._flow.dl_dst, mac.DONTCARE)
- eq_(res._flow.dl_src, mac.DONTCARE)
- eq_(res._flow.dl_type, 0)
- eq_(res._flow.vlan_vid, 0)
- eq_(res._flow.vlan_pcp, 0)
- eq_(res._flow.ip_dscp, 0)
- eq_(res._flow.ip_ecn, 0)
- eq_(res._flow.ip_proto, 0)
- eq_(res._flow.ipv4_src, 0)
- eq_(res._flow.ipv4_dst, 0)
- eq_(res._flow.tcp_src, 0)
- eq_(res._flow.tcp_dst, 0)
- eq_(res._flow.udp_src, 0)
- eq_(res._flow.udp_dst, 0)
- eq_(res._flow.sctp_src, 0)
- eq_(res._flow.sctp_dst, 0)
- eq_(res._flow.icmpv4_type, 0)
- eq_(res._flow.icmpv4_code, 0)
- eq_(res._flow.arp_op, 0)
- eq_(res._flow.arp_spa, 0)
- eq_(res._flow.arp_tpa, 0)
- eq_(res._flow.arp_sha, 0)
- eq_(res._flow.arp_tha, 0)
- eq_(res._flow.ipv6_src, [])
- eq_(res._flow.ipv6_dst, [])
- eq_(res._flow.ipv6_flabel, 0)
- eq_(res._flow.icmpv6_type, 0)
- eq_(res._flow.icmpv6_code, 0)
- eq_(res._flow.ipv6_nd_target, [])
- eq_(res._flow.ipv6_nd_sll, 0)
- eq_(res._flow.ipv6_nd_tll, 0)
- eq_(res._flow.mpls_label, 0)
- eq_(res._flow.mpls_tc, 0)
-
- # flow check
- eq_(res.fields, [])
-
- def _test_serialize_and_parser(self, match, header, value, mask=None):
- cls_ = OFPMatchField._FIELDS_HEADERS.get(header)
- pack_str = cls_.pack_str.replace('!', '')
- fmt = '!HHI' + pack_str
-
- # serialize
- buf = bytearray()
- length = match.serialize(buf, 0)
- eq_(length, len(buf))
- if mask and len(buf) > calcsize(fmt):
- fmt += pack_str
-
- res = list(unpack_from(fmt, six.binary_type(buf), 0)[3:])
- if type(value) is list:
- res_value = res[:calcsize(pack_str) // 2]
- eq_(res_value, value)
- if mask:
- res_mask = res[calcsize(pack_str) // 2:]
- eq_(res_mask, mask)
- else:
- res_value = res.pop(0)
- if cls_.__name__ == 'MTVlanVid':
- eq_(res_value, value | ofproto.OFPVID_PRESENT)
- else:
- eq_(res_value, value)
- if mask and res and res[0]:
- res_mask = res[0]
- eq_(res_mask, mask)
-
- # parser
- res = match.parser(six.binary_type(buf), 0)
- eq_(res.type, ofproto.OFPMT_OXM)
- eq_(res.fields[0].header, header)
- eq_(res.fields[0].value, value)
- if mask and res.fields[0].mask is not None:
- eq_(res.fields[0].mask, mask)
-
- # to_jsondict
- jsondict = match.to_jsondict()
-
- # from_jsondict
- match2 = match.from_jsondict(jsondict["OFPMatch"])
- buf2 = bytearray()
- match2.serialize(buf2, 0)
- eq_(str(match), str(match2))
- eq_(buf, buf2)
-
- def test_parse_unknown_field(self):
- buf = bytearray()
- pack_utils.msg_pack_into('!HH', buf, 0, ofproto.OFPMT_OXM, 4 + 6)
- header = ofproto.oxm_tlv_header(36, 2)
- pack_utils.msg_pack_into('!IH', buf, 4, header, 1)
- header = ofproto.OXM_OF_ETH_TYPE
- pack_utils.msg_pack_into('!IH', buf, 10, header, 1)
-
- match = OFPMatch()
- res = match.parser(six.binary_type(buf), 0)
-
- # set_in_port
- def _test_set_in_port(self, in_port):
- header = ofproto.OXM_OF_IN_PORT
- match = OFPMatch()
- match.set_in_port(in_port)
- self._test_serialize_and_parser(match, header, in_port)
-
- def test_set_in_port_mid(self):
- self._test_set_in_port(0xff8)
-
- def test_set_in_port_max(self):
- self._test_set_in_port(0xffffffff)
-
- def test_set_in_port_min(self):
- self._test_set_in_port(0)
-
- # set_in_phy_port
- def _test_set_in_phy_port(self, phy_port):
- header = ofproto.OXM_OF_IN_PHY_PORT
- match = OFPMatch()
- match.set_in_phy_port(phy_port)
- self._test_serialize_and_parser(match, header, phy_port)
-
- def test_set_in_phy_port_mid(self):
- self._test_set_in_phy_port(1)
-
- def test_set_in_phy_port_max(self):
- self._test_set_in_phy_port(0xffffffff)
-
- def test_set_in_phy_port_min(self):
- self._test_set_in_phy_port(0)
-
- # set_metadata
- def _test_set_metadata(self, metadata, mask=None):
- header = ofproto.OXM_OF_METADATA
- match = OFPMatch()
- if mask is None:
- match.set_metadata(metadata)
- else:
- if (mask + 1) >> 64 != 1:
- header = ofproto.OXM_OF_METADATA_W
- match.set_metadata_masked(metadata, mask)
- metadata &= mask
- self._test_serialize_and_parser(match, header, metadata, mask)
-
- def test_set_metadata_mid(self):
- self._test_set_metadata(0x1212121212121212)
-
- def test_set_metadata_max(self):
- self._test_set_metadata(0xffffffffffffffff)
-
- def test_set_metadata_min(self):
- self._test_set_metadata(0)
-
- def test_set_metadata_masked_mid(self):
- self._test_set_metadata(0x1212121212121212, 0xff00ff00ff00ff00)
-
- def test_set_metadata_masked_max(self):
- self._test_set_metadata(0x1212121212121212, 0xffffffffffffffff)
-
- def test_set_metadata_masked_min(self):
- self._test_set_metadata(0x1212121212121212, 0)
-
- # set_dl_dst
- def _test_set_dl_dst(self, dl_dst, mask=None):
- header = ofproto.OXM_OF_ETH_DST
- match = OFPMatch()
- dl_dst = mac.haddr_to_bin(dl_dst)
- if mask is None:
- match.set_dl_dst(dl_dst)
- else:
- header = ofproto.OXM_OF_ETH_DST_W
- mask = mac.haddr_to_bin(mask)
- match.set_dl_dst_masked(dl_dst, mask)
- dl_dst = mac.haddr_bitand(dl_dst, mask)
- self._test_serialize_and_parser(match, header, dl_dst, mask)
-
- def test_set_dl_dst_mid(self):
- self._test_set_dl_dst('e2:7a:09:79:0b:0f')
-
- def test_set_dl_dst_max(self):
- self._test_set_dl_dst('ff:ff:ff:ff:ff:ff')
-
- def test_set_dl_dst_min(self):
- self._test_set_dl_dst('00:00:00:00:00:00')
-
- def test_set_dl_dst_masked_mid(self):
- self._test_set_dl_dst('e2:7a:09:79:0b:0f', 'ff:00:ff:00:ff:00')
-
- def test_set_dl_dst_masked_max(self):
- self._test_set_dl_dst('e2:7a:09:79:0b:0f', 'ff:ff:ff:ff:ff:ff')
-
- def test_set_dl_dst_masked_min(self):
- self._test_set_dl_dst('e2:7a:09:79:0b:0f', '00:00:00:00:00:00')
-
- # set_dl_src
- def _test_set_dl_src(self, dl_src, mask=None):
- header = ofproto.OXM_OF_ETH_SRC
- match = OFPMatch()
- dl_src = mac.haddr_to_bin(dl_src)
- if mask is None:
- match.set_dl_src(dl_src)
- else:
- header = ofproto.OXM_OF_ETH_SRC_W
- mask = mac.haddr_to_bin(mask)
- match.set_dl_src_masked(dl_src, mask)
- dl_src = mac.haddr_bitand(dl_src, mask)
- self._test_serialize_and_parser(match, header, dl_src, mask)
-
- def test_set_dl_src_mid(self):
- self._test_set_dl_src('d0:98:79:b4:75:b5')
-
- def test_set_dl_src_max(self):
- self._test_set_dl_src('ff:ff:ff:ff:ff:ff')
-
- def test_set_dl_src_min(self):
- self._test_set_dl_src('00:00:00:00:00:00')
-
- def test_set_dl_src_masked_mid(self):
- self._test_set_dl_src('d0:98:79:b4:75:b5', 'f0:f0:f0:f0:f0:f0')
-
- def test_set_dl_src_masked_max(self):
- self._test_set_dl_src('d0:98:79:b4:75:b5', 'ff:ff:ff:ff:ff:ff')
-
- def test_set_dl_src_masked_min(self):
- self._test_set_dl_src('d0:98:79:b4:75:b5', '00:00:00:00:00:00')
-
- # set_dl_type
- def _test_set_dl_type(self, value):
- header = ofproto.OXM_OF_ETH_TYPE
- match = OFPMatch()
- match.set_dl_type(value)
- self._test_serialize_and_parser(match, header, value)
-
- def test_set_dl_type_mid(self):
- self._test_set_dl_type(0x7fb6)
-
- def test_set_dl_type_max(self):
- self._test_set_dl_type(0xffff)
-
- def test_set_dl_type_min(self):
- self._test_set_dl_type(0)
-
- def test_set_dl_type_ip(self):
- value = ether.ETH_TYPE_IP
- self._test_set_dl_type(value)
-
- def test_set_dl_type_arp(self):
- value = ether.ETH_TYPE_ARP
- self._test_set_dl_type(value)
-
- def test_set_dl_type_ipv6(self):
- value = ether.ETH_TYPE_IPV6
- self._test_set_dl_type(value)
-
- def test_set_dl_type_slow(self):
- value = ether.ETH_TYPE_SLOW
- self._test_set_dl_type(value)
-
- # set_vlan_vid
- def _test_set_vlan_vid(self, vid, mask=None):
- header = ofproto.OXM_OF_VLAN_VID
- match = OFPMatch()
- if mask is None:
- match.set_vlan_vid(vid)
- else:
- header = ofproto.OXM_OF_VLAN_VID_W
- match.set_vlan_vid_masked(vid, mask)
- self._test_serialize_and_parser(match, header, vid, mask)
-
- def _test_set_vlan_vid_none(self):
- header = ofproto.OXM_OF_VLAN_VID
- match = OFPMatch()
- match.set_vlan_vid_none()
- value = ofproto.OFPVID_NONE
- cls_ = OFPMatchField._FIELDS_HEADERS.get(header)
- pack_str = cls_.pack_str.replace('!', '')
- fmt = '!HHI' + pack_str
-
- # serialize
- buf = bytearray()
- length = match.serialize(buf, 0)
- eq_(length, len(buf))
-
- res = list(unpack_from(fmt, six.binary_type(buf), 0)[3:])
- res_value = res.pop(0)
- eq_(res_value, value)
-
- # parser
- res = match.parser(six.binary_type(buf), 0)
- eq_(res.type, ofproto.OFPMT_OXM)
- eq_(res.fields[0].header, header)
- eq_(res.fields[0].value, value)
-
- # to_jsondict
- jsondict = match.to_jsondict()
-
- # from_jsondict
- match2 = match.from_jsondict(jsondict["OFPMatch"])
- buf2 = bytearray()
- match2.serialize(buf2, 0)
- eq_(str(match), str(match2))
- eq_(buf, buf2)
-
- def test_set_vlan_vid_mid(self):
- self._test_set_vlan_vid(2047)
-
- def test_set_vlan_vid_max(self):
- self._test_set_vlan_vid(0xfff)
-
- def test_set_vlan_vid_min(self):
- self._test_set_vlan_vid(0)
-
- def test_set_vlan_vid_masked_mid(self):
- self._test_set_vlan_vid(2047, 0xf0f)
-
- def test_set_vlan_vid_masked_max(self):
- self._test_set_vlan_vid(2047, 0xfff)
-
- def test_set_vlan_vid_masked_min(self):
- self._test_set_vlan_vid(2047, 0)
-
- def test_set_vlan_vid_none(self):
- self._test_set_vlan_vid_none()
-
- # set_vlan_pcp
- def _test_set_vlan_pcp(self, pcp):
- header = ofproto.OXM_OF_VLAN_PCP
- match = OFPMatch()
- match.set_vlan_pcp(pcp)
- self._test_serialize_and_parser(match, header, pcp)
-
- def test_set_vlan_pcp_mid(self):
- self._test_set_vlan_pcp(5)
-
- def test_set_vlan_pcp_max(self):
- self._test_set_vlan_pcp(7)
-
- def test_set_vlan_pcp_min(self):
- self._test_set_vlan_pcp(0)
-
- # set_ip_dscp
- def _test_set_ip_dscp(self, ip_dscp):
- header = ofproto.OXM_OF_IP_DSCP
- match = OFPMatch()
- match.set_ip_dscp(ip_dscp)
- self._test_serialize_and_parser(match, header, ip_dscp)
-
- def test_set_ip_dscp_mid(self):
- self._test_set_ip_dscp(36)
-
- def test_set_ip_dscp_max(self):
- self._test_set_ip_dscp(63)
-
- def test_set_ip_dscp_min(self):
- self._test_set_ip_dscp(0)
-
- # set_ip_ecn
- def _test_set_ip_ecn(self, ip_ecn):
- header = ofproto.OXM_OF_IP_ECN
- match = OFPMatch()
- match.set_ip_ecn(ip_ecn)
- self._test_serialize_and_parser(match, header, ip_ecn)
-
- def test_set_ip_ecn_mid(self):
- self._test_set_ip_ecn(1)
-
- def test_set_ip_ecn_max(self):
- self._test_set_ip_ecn(3)
-
- def test_set_ip_ecn_min(self):
- self._test_set_ip_ecn(0)
-
- # set_ip_proto
- def _test_set_ip_proto(self, ip_proto):
- header = ofproto.OXM_OF_IP_PROTO
- match = OFPMatch()
- match.set_ip_proto(ip_proto)
- self._test_serialize_and_parser(match, header, ip_proto)
-
- def test_set_ip_proto_mid(self):
- self._test_set_ip_proto(6)
-
- def test_set_ip_proto_max(self):
- self._test_set_ip_proto(0xff)
-
- def test_set_ip_proto_min(self):
- self._test_set_ip_proto(0)
-
- # set_ipv4_src
- def _test_set_ipv4_src(self, ip, mask=None):
- header = ofproto.OXM_OF_IPV4_SRC
- match = OFPMatch()
- ip = unpack('!I', socket.inet_aton(ip))[0]
- if mask is None:
- match.set_ipv4_src(ip)
- else:
- mask = unpack('!I', socket.inet_aton(mask))[0]
- if (mask + 1) >> 32 != 1:
- header = ofproto.OXM_OF_IPV4_SRC_W
- match.set_ipv4_src_masked(ip, mask)
- self._test_serialize_and_parser(match, header, ip, mask)
-
- def test_set_ipv4_src_mid(self):
- self._test_set_ipv4_src('192.168.196.250')
-
- def test_set_ipv4_src_max(self):
- self._test_set_ipv4_src('255.255.255.255')
-
- def test_set_ipv4_src_min(self):
- self._test_set_ipv4_src('0.0.0.0')
-
- def test_set_ipv4_src_masked_mid(self):
- self._test_set_ipv4_src('192.168.196.250', '255.255.0.0')
-
- def test_set_ipv4_src_masked_max(self):
- self._test_set_ipv4_src('192.168.196.250', '255.255.255.255')
-
- def test_set_ipv4_src_masked_min(self):
- self._test_set_ipv4_src('192.168.196.250', '0.0.0.0')
-
- # set_ipv4_dst
- def _test_set_ipv4_dst(self, ip, mask=None):
- header = ofproto.OXM_OF_IPV4_DST
- match = OFPMatch()
- ip = unpack('!I', socket.inet_aton(ip))[0]
- if mask is None:
- match.set_ipv4_dst(ip)
- else:
- mask = unpack('!I', socket.inet_aton(mask))[0]
- if (mask + 1) >> 32 != 1:
- header = ofproto.OXM_OF_IPV4_DST_W
- match.set_ipv4_dst_masked(ip, mask)
- self._test_serialize_and_parser(match, header, ip, mask)
-
- def test_set_ipv4_dst_mid(self):
- self._test_set_ipv4_dst('192.168.196.250')
-
- def test_set_ipv4_dst_max(self):
- self._test_set_ipv4_dst('255.255.255.255')
-
- def test_set_ipv4_dst_min(self):
- self._test_set_ipv4_dst('0.0.0.0')
-
- def test_set_ipv4_dst_masked_mid(self):
- self._test_set_ipv4_dst('192.168.196.250', '255.255.0.0')
-
- def test_set_ipv4_dst_masked_max(self):
- self._test_set_ipv4_dst('192.168.196.250', '255.255.255.255')
-
- def test_set_ipv4_dst_masked_min(self):
- self._test_set_ipv4_dst('192.168.196.250', '0.0.0.0')
-
- # set_tcp_src
- def _test_set_tcp_src(self, tcp_src):
- header = ofproto.OXM_OF_TCP_SRC
- match = OFPMatch()
- match.set_tcp_src(tcp_src)
- self._test_serialize_and_parser(match, header, tcp_src)
-
- def test_set_tcp_src_mid(self):
- self._test_set_tcp_src(1103)
-
- def test_set_tcp_src_max(self):
- self._test_set_tcp_src(0xffff)
-
- def test_set_tcp_src_min(self):
- self._test_set_tcp_src(0)
-
- # set_tcp_dst
- def _test_set_tcp_dst(self, tcp_dst):
- header = ofproto.OXM_OF_TCP_DST
- match = OFPMatch()
- match.set_tcp_dst(tcp_dst)
- self._test_serialize_and_parser(match, header, tcp_dst)
-
- def test_set_tcp_dst_mid(self):
- self._test_set_tcp_dst(236)
-
- def test_set_tcp_dst_max(self):
- self._test_set_tcp_dst(0xffff)
-
- def test_set_tcp_dst_min(self):
- self._test_set_tcp_dst(0)
-
- # set_udp_src
- def _test_set_udp_src(self, udp_src):
- header = ofproto.OXM_OF_UDP_SRC
- match = OFPMatch()
- match.set_udp_src(udp_src)
- self._test_serialize_and_parser(match, header, udp_src)
-
- def test_set_udp_src_mid(self):
- self._test_set_udp_src(56617)
-
- def test_set_udp_src_max(self):
- self._test_set_udp_src(0xffff)
-
- def test_set_udp_src_min(self):
- self._test_set_udp_src(0)
-
- # set_udp_dst
- def _test_set_udp_dst(self, udp_dst):
- header = ofproto.OXM_OF_UDP_DST
- match = OFPMatch()
- match.set_udp_dst(udp_dst)
- self._test_serialize_and_parser(match, header, udp_dst)
-
- def test_set_udp_dst_mid(self):
- self._test_set_udp_dst(61278)
-
- def test_set_udp_dst_max(self):
- self._test_set_udp_dst(0xffff)
-
- def test_set_udp_dst_min(self):
- self._test_set_udp_dst(0)
-
- # set_sctp_src
- def _test_set_sctp_src(self, sctp_src):
- header = ofproto.OXM_OF_SCTP_SRC
- match = OFPMatch()
- match.set_sctp_src(sctp_src)
- self._test_serialize_and_parser(match, header, sctp_src)
-
- def test_set_sctp_src_mid(self):
- self._test_set_sctp_src(9999)
-
- def test_set_sctp_src_max(self):
- self._test_set_sctp_src(0xffff)
-
- def test_set_sctp_src_min(self):
- self._test_set_sctp_src(0)
-
- # set_sctp_dst
- def _test_set_sctp_dst(self, sctp_dst):
- header = ofproto.OXM_OF_SCTP_DST
- match = OFPMatch()
- match.set_sctp_dst(sctp_dst)
- self._test_serialize_and_parser(match, header, sctp_dst)
-
- def test_set_sctp_dst_mid(self):
- self._test_set_sctp_dst(1234)
-
- def test_set_sctp_dst_max(self):
- self._test_set_sctp_dst(0xffff)
-
- def test_set_sctp_dst_min(self):
- self._test_set_sctp_dst(0)
-
- # set_icmpv4_type
- def _test_set_icmpv4_type(self, icmpv4_type):
- header = ofproto.OXM_OF_ICMPV4_TYPE
- match = OFPMatch()
- match.set_icmpv4_type(icmpv4_type)
- self._test_serialize_and_parser(match, header, icmpv4_type)
-
- def test_set_icmpv4_type_mid(self):
- self._test_set_icmpv4_type(8)
-
- def test_set_icmpv4_type_max(self):
- self._test_set_icmpv4_type(0xff)
-
- def test_set_icmpv4_type_min(self):
- self._test_set_icmpv4_type(0)
-
- # set_icmpv4_code
- def _test_set_icmpv4_code(self, icmpv4_code):
- header = ofproto.OXM_OF_ICMPV4_CODE
- match = OFPMatch()
- match.set_icmpv4_code(icmpv4_code)
- self._test_serialize_and_parser(match, header, icmpv4_code)
-
- def test_set_icmpv4_code_mid(self):
- self._test_set_icmpv4_code(1)
-
- def test_set_icmpv4_code_max(self):
- self._test_set_icmpv4_code(0xff)
-
- def test_set_icmpv4_code_min(self):
- self._test_set_icmpv4_code(0)
-
- # set_arp_opcode
- def _test_set_arp_opcode(self, arp_op):
- header = ofproto.OXM_OF_ARP_OP
- match = OFPMatch()
- match.set_arp_opcode(arp_op)
- self._test_serialize_and_parser(match, header, arp_op)
-
- def test_set_arp_opcode_mid(self):
- self._test_set_arp_opcode(1)
-
- def test_set_arp_opcode_max(self):
- self._test_set_arp_opcode(0xffff)
-
- def test_set_arp_opcode_min(self):
- self._test_set_arp_opcode(0)
-
- # set_arp_spa
- def _test_set_arp_spa(self, ip, mask=None):
- header = ofproto.OXM_OF_ARP_SPA
- match = OFPMatch()
- ip = unpack('!I', socket.inet_aton(ip))[0]
- if mask is None:
- match.set_arp_spa(ip)
- else:
- mask = unpack('!I', socket.inet_aton(mask))[0]
- if (mask + 1) >> 32 != 1:
- header = ofproto.OXM_OF_ARP_SPA_W
- match.set_arp_spa_masked(ip, mask)
- self._test_serialize_and_parser(match, header, ip, mask)
-
- def test_set_arp_spa_mid(self):
- self._test_set_arp_spa('192.168.227.57')
-
- def test_set_arp_spa_max(self):
- self._test_set_arp_spa('255.255.255.255')
-
- def test_set_arp_spa_min(self):
- self._test_set_arp_spa('0.0.0.0')
-
- def test_set_arp_spa_masked_mid(self):
- self._test_set_arp_spa('192.168.227.57', '255.255.0.0')
-
- def test_set_arp_spa_masked_max(self):
- self._test_set_arp_spa('192.168.227.57', '255.255.255.255')
-
- def test_set_arp_spa_masked_min(self):
- self._test_set_arp_spa('192.168.227.57', '0.0.0.0')
-
- # set_arp_tpa
- def _test_set_arp_tpa(self, ip, mask=None):
- header = ofproto.OXM_OF_ARP_TPA
- match = OFPMatch()
- ip = unpack('!I', socket.inet_aton(ip))[0]
- if mask is None:
- match.set_arp_tpa(ip)
- else:
- mask = unpack('!I', socket.inet_aton(mask))[0]
- if (mask + 1) >> 32 != 1:
- header = ofproto.OXM_OF_ARP_TPA_W
- match.set_arp_tpa_masked(ip, mask)
- self._test_serialize_and_parser(match, header, ip, mask)
-
- def test_set_arp_tpa_mid(self):
- self._test_set_arp_tpa('192.168.227.57')
-
- def test_set_arp_tpa_max(self):
- self._test_set_arp_tpa('255.255.255.255')
-
- def test_set_arp_tpa_min(self):
- self._test_set_arp_tpa('0.0.0.0')
-
- def test_set_arp_tpa_masked_mid(self):
- self._test_set_arp_tpa('192.168.227.57', '255.255.0.0')
-
- def test_set_arp_tpa_masked_max(self):
- self._test_set_arp_tpa('192.168.227.57', '255.255.255.255')
-
- def test_set_arp_tpa_masked_min(self):
- self._test_set_arp_tpa('192.168.227.57', '0.0.0.0')
-
- # set_arp_sha
- def _test_set_arp_sha(self, arp_sha, mask=None):
- header = ofproto.OXM_OF_ARP_SHA
- match = OFPMatch()
- arp_sha = mac.haddr_to_bin(arp_sha)
- if mask is None:
- match.set_arp_sha(arp_sha)
- else:
- header = ofproto.OXM_OF_ARP_SHA_W
- mask = mac.haddr_to_bin(mask)
- match.set_arp_sha_masked(arp_sha, mask)
- arp_sha = mac.haddr_bitand(arp_sha, mask)
- self._test_serialize_and_parser(match, header, arp_sha, mask)
-
- def test_set_arp_sha_mid(self):
- self._test_set_arp_sha('3e:ec:13:9b:f3:0b')
-
- def test_set_arp_sha_max(self):
- self._test_set_arp_sha('ff:ff:ff:ff:ff:ff')
-
- def test_set_arp_sha_min(self):
- self._test_set_arp_sha('00:00:00:00:00:00')
-
- def test_set_arp_sha_masked_mid(self):
- self._test_set_arp_sha('3e:ec:13:9b:f3:0b', 'ff:ff:ff:00:00:00')
-
- def test_set_arp_sha_masked_max(self):
- self._test_set_arp_sha('3e:ec:13:9b:f3:0b', 'ff:ff:ff:ff:ff:ff')
-
- def test_set_arp_sha_masked_min(self):
- self._test_set_arp_sha('3e:ec:13:9b:f3:0b', '00:00:00:00:00:00')
-
- # set_arp_tha
- def _test_set_arp_tha(self, arp_tha, mask=None):
- header = ofproto.OXM_OF_ARP_THA
- match = OFPMatch()
- arp_tha = mac.haddr_to_bin(arp_tha)
- if mask is None:
- match.set_arp_tha(arp_tha)
- else:
- header = ofproto.OXM_OF_ARP_THA_W
- mask = mac.haddr_to_bin(mask)
- match.set_arp_tha_masked(arp_tha, mask)
- arp_tha = mac.haddr_bitand(arp_tha, mask)
- self._test_serialize_and_parser(match, header, arp_tha, mask)
-
- def test_set_arp_tha_mid(self):
- self._test_set_arp_tha('83:6c:21:52:49:68')
-
- def test_set_arp_tha_max(self):
- self._test_set_arp_tha('ff:ff:ff:ff:ff:ff')
-
- def test_set_arp_tha_min(self):
- self._test_set_arp_tha('00:00:00:00:00:00')
-
- def test_set_arp_tha_masked_mid(self):
- self._test_set_arp_tha('83:6c:21:52:49:68', 'ff:ff:ff:00:00:00')
-
- def test_set_arp_tha_masked_max(self):
- self._test_set_arp_tha('83:6c:21:52:49:68', 'ff:ff:ff:ff:ff:ff')
-
- def test_set_arp_tha_masked_min(self):
- self._test_set_arp_tha('83:6c:21:52:49:68', '00:00:00:00:00:00')
-
- # set_ipv6_src
- def _test_set_ipv6_src(self, ipv6, mask=None):
- header = ofproto.OXM_OF_IPV6_SRC
- match = OFPMatch()
- ipv6 = [int(x, 16) for x in ipv6.split(":")]
- if mask is None:
- match.set_ipv6_src(ipv6)
- else:
- header = ofproto.OXM_OF_IPV6_SRC_W
- mask = [int(x, 16) for x in mask.split(":")]
- match.set_ipv6_src_masked(ipv6, mask)
- ipv6 = [x & y for (x, y) in zip(ipv6, mask)]
- self._test_serialize_and_parser(match, header, ipv6, mask)
-
- def test_set_ipv6_src_mid(self):
- ipv6 = '2001:db8:bd05:1d2:288a:1fc0:1:10ee'
- self._test_set_ipv6_src(ipv6)
-
- def test_set_ipv6_src_max(self):
- ipv6 = 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'
- self._test_set_ipv6_src(ipv6)
-
- def test_set_ipv6_src_min(self):
- ipv6 = '0:0:0:0:0:0:0:0'
- self._test_set_ipv6_src(ipv6)
-
- def test_set_ipv6_src_masked_mid(self):
- ipv6 = '2001:db8:bd05:1d2:288a:1fc0:1:10ee'
- mask = 'ffff:ffff:ffff:ffff:0:0:0:0'
- self._test_set_ipv6_src(ipv6, mask)
-
- def test_set_ipv6_src_masked_max(self):
- ipv6 = '2001:db8:bd05:1d2:288a:1fc0:1:10ee'
- mask = 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'
- self._test_set_ipv6_src(ipv6, mask)
-
- def test_set_ipv6_src_masked_min(self):
- ipv6 = '2001:db8:bd05:1d2:288a:1fc0:1:10ee'
- mask = '0:0:0:0:0:0:0:0'
- self._test_set_ipv6_src(ipv6, mask)
-
- # set_ipv6_dst
- def _test_set_ipv6_dst(self, ipv6, mask=None):
- header = ofproto.OXM_OF_IPV6_DST
- match = OFPMatch()
- ipv6 = [int(x, 16) for x in ipv6.split(":")]
- if mask is None:
- match.set_ipv6_dst(ipv6)
- else:
- header = ofproto.OXM_OF_IPV6_DST_W
- mask = [int(x, 16) for x in mask.split(":")]
- match.set_ipv6_dst_masked(ipv6, mask)
- ipv6 = [x & y for (x, y) in zip(ipv6, mask)]
- self._test_serialize_and_parser(match, header, ipv6, mask)
-
- def test_set_ipv6_dst_mid(self):
- ipv6 = 'e9e8:9ea5:7d67:82cc:ca54:1fc0:2d24:f038'
- self._test_set_ipv6_dst(ipv6)
-
- def test_set_ipv6_dst_max(self):
- ipv6 = ':'.join(['ffff'] * 8)
- self._test_set_ipv6_dst(ipv6)
-
- def test_set_ipv6_dst_min(self):
- ipv6 = ':'.join(['0'] * 8)
- self._test_set_ipv6_dst(ipv6)
-
- def test_set_ipv6_dst_mask_mid(self):
- ipv6 = 'e9e8:9ea5:7d67:82cc:ca54:1fc0:2d24:f038'
- mask = ':'.join(['ffff'] * 4 + ['0'] * 4)
- self._test_set_ipv6_dst(ipv6, mask)
-
- def test_set_ipv6_dst_mask_max(self):
- ipv6 = 'e9e8:9ea5:7d67:82cc:ca54:1fc0:2d24:f038'
- mask = ':'.join(['ffff'] * 8)
- self._test_set_ipv6_dst(ipv6, mask)
-
- def test_set_ipv6_dst_mask_min(self):
- ipv6 = 'e9e8:9ea5:7d67:82cc:ca54:1fc0:2d24:f038'
- mask = ':'.join(['0'] * 8)
- self._test_set_ipv6_dst(ipv6, mask)
-
- # set_ipv6_flabel
- def _test_set_ipv6_flabel(self, flabel, mask=None):
- header = ofproto.OXM_OF_IPV6_FLABEL
- match = OFPMatch()
- if mask is None:
- match.set_ipv6_flabel(flabel)
- else:
- header = ofproto.OXM_OF_IPV6_FLABEL_W
- match.set_ipv6_flabel_masked(flabel, mask)
- self._test_serialize_and_parser(match, header, flabel, mask)
-
- def test_set_ipv6_flabel_mid(self):
- self._test_set_ipv6_flabel(0xc5384)
-
- def test_set_ipv6_flabel_max(self):
- self._test_set_ipv6_flabel(0xfffff)
-
- def test_set_ipv6_flabel_min(self):
- self._test_set_ipv6_flabel(0)
-
- def test_set_ipv6_flabel_masked_mid(self):
- self._test_set_ipv6_flabel(0xc5384, 0xfff00)
-
- def test_set_ipv6_flabel_masked_max(self):
- self._test_set_ipv6_flabel(0xc5384, 0xfffff)
-
- def test_set_ipv6_flabel_masked_min(self):
- self._test_set_ipv6_flabel(0xc5384, 0)
-
- # set_icmpv6_type
- def _test_set_icmpv6_type(self, icmpv6_type):
- header = ofproto.OXM_OF_ICMPV6_TYPE
- match = OFPMatch()
- match.set_icmpv6_type(icmpv6_type)
- self._test_serialize_and_parser(match, header, icmpv6_type)
-
- def test_set_icmpv6_type_mid(self):
- self._test_set_icmpv6_type(129)
-
- def test_set_icmpv6_type_max(self):
- self._test_set_icmpv6_type(0xff)
-
- def test_set_icmpv6_type_min(self):
- self._test_set_icmpv6_type(0)
-
- # set_icmpv6_code
- def _test_set_icmpv6_code(self, icmpv6_code):
- header = ofproto.OXM_OF_ICMPV6_CODE
- match = OFPMatch()
- match.set_icmpv6_code(icmpv6_code)
- self._test_serialize_and_parser(match, header, icmpv6_code)
-
- def test_set_icmpv6_code_mid(self):
- self._test_set_icmpv6_code(1)
-
- def test_set_icmpv6_code_max(self):
- self._test_set_icmpv6_code(0xff)
-
- def test_set_icmpv6_code_min(self):
- self._test_set_icmpv6_code(0)
-
- # set_ipv6_nd_target
- def _test_set_ipv6_nd_target(self, ipv6):
- header = ofproto.OXM_OF_IPV6_ND_TARGET
- match = OFPMatch()
- ipv6 = [int(x, 16) for x in ipv6.split(":")]
- match.set_ipv6_nd_target(ipv6)
- self._test_serialize_and_parser(match, header, ipv6)
-
- def test_set_ipv6_nd_target_mid(self):
- ip = '5420:db3f:921b:3e33:2791:98f:dd7f:2e19'
- self._test_set_ipv6_nd_target(ip)
-
- def test_set_ipv6_nd_target_max(self):
- ip = ':'.join(['ffff'] * 8)
- self._test_set_ipv6_nd_target(ip)
-
- def test_set_ipv6_nd_target_min(self):
- ip = ':'.join(['0'] * 8)
- self._test_set_ipv6_nd_target(ip)
-
- # set_ipv6_nd_sll
- def _test_set_ipv6_nd_sll(self, nd_sll):
- header = ofproto.OXM_OF_IPV6_ND_SLL
- match = OFPMatch()
- nd_sll = mac.haddr_to_bin(nd_sll)
- match.set_ipv6_nd_sll(nd_sll)
- self._test_serialize_and_parser(match, header, nd_sll)
-
- def test_set_ipv6_nd_sll_mid(self):
- self._test_set_ipv6_nd_sll('93:6d:d0:d4:e8:36')
-
- def test_set_ipv6_nd_sll_max(self):
- self._test_set_ipv6_nd_sll('ff:ff:ff:ff:ff:ff')
-
- def test_set_ipv6_nd_sll_min(self):
- self._test_set_ipv6_nd_sll('00:00:00:00:00:00')
-
- # set_ipv6_nd_tll
- def _test_set_ipv6_nd_tll(self, nd_tll):
- header = ofproto.OXM_OF_IPV6_ND_TLL
- match = OFPMatch()
- nd_tll = mac.haddr_to_bin(nd_tll)
- match.set_ipv6_nd_tll(nd_tll)
- self._test_serialize_and_parser(match, header, nd_tll)
-
- def test_set_ipv6_nd_tll_mid(self):
- self._test_set_ipv6_nd_tll('18:f6:66:b6:f1:b3')
-
- def test_set_ipv6_nd_tll_max(self):
- self._test_set_ipv6_nd_tll('ff:ff:ff:ff:ff:ff')
-
- def test_set_ipv6_nd_tll_min(self):
- self._test_set_ipv6_nd_tll('00:00:00:00:00:00')
-
- # set_mpls_label
- def _test_set_mpls_label(self, mpls_label):
- header = ofproto.OXM_OF_MPLS_LABEL
- match = OFPMatch()
- match.set_mpls_label(mpls_label)
- self._test_serialize_and_parser(match, header, mpls_label)
-
- def test_set_mpls_label_mid(self):
- self._test_set_mpls_label(2144)
-
- def test_set_mpls_label_max(self):
- self._test_set_mpls_label(0xfffff)
-
- def test_set_mpls_label_min(self):
- self._test_set_mpls_label(0)
-
- # set_mpls_tc
- def _test_set_mpls_tc(self, mpls_tc):
- header = ofproto.OXM_OF_MPLS_TC
- match = OFPMatch()
- match.set_mpls_tc(mpls_tc)
- self._test_serialize_and_parser(match, header, mpls_tc)
-
- def test_set_mpls_tc_mid(self):
- self._test_set_mpls_tc(3)
-
- def test_set_mpls_tc_max(self):
- self._test_set_mpls_tc(7)
-
- def test_set_mpls_tc_min(self):
- self._test_set_mpls_tc(0)
-
-
-class TestOFPMatchField(unittest.TestCase):
- """ Test case for ofproto_v1_2_parser.OFPMatchField
- """
-
- def test_init_hasmask_true(self):
- header = 0x0100
-
- res = OFPMatchField(header)
-
- eq_(res.header, header)
- eq_(res.n_bytes, (header & 0xff) // 2)
- eq_(res.length, 0)
-
- def test_init_hasmask_false(self):
- header = 0x0000
-
- res = OFPMatchField(header)
-
- eq_(res.header, header)
- eq_(res.n_bytes, header & 0xff)
- eq_(res.length, 0)
diff --git a/tests/unit/ofproto/test_parser_v13.py b/tests/unit/ofproto/test_parser_v13.py
deleted file mode 100644
index 265b28e4..00000000
--- a/tests/unit/ofproto/test_parser_v13.py
+++ /dev/null
@@ -1,164 +0,0 @@
-# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-import socket
-from struct import *
-from nose.tools import *
-from ryu.ofproto.ofproto_v1_3_parser import *
-from ryu.ofproto import ofproto_v1_3_parser
-from ryu.ofproto import ofproto_v1_3
-from ryu.ofproto import ofproto_protocol
-from ryu.ofproto import ether
-from ryu.ofproto.ofproto_parser import MsgBase
-from ryu import utils
-from ryu.lib import addrconv
-
-LOG = logging.getLogger('test_ofproto_v13')
-
-
-_Datapath = ofproto_protocol.ProtocolDesc(version=ofproto_v1_3.OFP_VERSION)
-
-
-class TestOFPMatch(unittest.TestCase):
-
- """ Test case for ofproto_v1_3_parser.OFPMatch
- """
-
- def test_init(self):
- res = OFPMatch()
-
- # wc check
- eq_(res._wc.vlan_vid_mask, 0)
-
- # flow check
- eq_(res._flow.vlan_vid, 0)
-
- def _test_serialize_and_parser(self, match, header, value, mask=None):
- cls_ = OFPMatchField._FIELDS_HEADERS.get(header)
- pack_str = cls_.pack_str.replace('!', '')
- fmt = '!HHI' + pack_str
-
- # serialize
- buf = bytearray()
- length = match.serialize(buf, 0)
- eq_(length, len(buf))
- if mask and len(buf) > calcsize(fmt):
- fmt += pack_str
-
- res = list(unpack_from(fmt, six.binary_type(buf), 0)[3:])
- if type(value) is list:
- res_value = res[:calcsize(pack_str) // 2]
- eq_(res_value, value)
- if mask:
- res_mask = res[calcsize(pack_str) // 2:]
- eq_(res_mask, mask)
- else:
- res_value = res.pop(0)
- if cls_.__name__ == 'MTVlanVid':
- eq_(res_value, value | ofproto.OFPVID_PRESENT)
- else:
- eq_(res_value, value)
- if mask and res and res[0]:
- res_mask = res[0]
- eq_(res_mask, mask)
-
- # parser
- res = match.parser(six.binary_type(buf), 0)
- eq_(res.type, ofproto.OFPMT_OXM)
- eq_(res.fields[0].header, header)
- eq_(res.fields[0].value, value)
- if mask and res.fields[0].mask is not None:
- eq_(res.fields[0].mask, mask)
-
- # to_jsondict
- jsondict = match.to_jsondict()
-
- # from_jsondict
- match2 = match.from_jsondict(jsondict["OFPMatch"])
- buf2 = bytearray()
- match2.serialize(buf2, 0)
- eq_(str(match), str(match2))
- eq_(buf, buf2)
-
- # set_vlan_vid
- def _test_set_vlan_vid(self, vid, mask=None):
- header = ofproto.OXM_OF_VLAN_VID
- match = OFPMatch()
- if mask is None:
- match.set_vlan_vid(vid)
- else:
- header = ofproto.OXM_OF_VLAN_VID_W
- match.set_vlan_vid_masked(vid, mask)
- self._test_serialize_and_parser(match, header, vid, mask)
-
- def _test_set_vlan_vid_none(self):
- header = ofproto.OXM_OF_VLAN_VID
- match = OFPMatch()
- match.set_vlan_vid_none()
- value = ofproto.OFPVID_NONE
- cls_ = OFPMatchField._FIELDS_HEADERS.get(header)
- pack_str = cls_.pack_str.replace('!', '')
- fmt = '!HHI' + pack_str
-
- # serialize
- buf = bytearray()
- length = match.serialize(buf, 0)
- eq_(length, len(buf))
-
- res = list(unpack_from(fmt, six.binary_type(buf), 0)[3:])
- res_value = res.pop(0)
- eq_(res_value, value)
-
- # parser
- res = match.parser(six.binary_type(buf), 0)
- eq_(res.type, ofproto.OFPMT_OXM)
- eq_(res.fields[0].header, header)
- eq_(res.fields[0].value, value)
-
- # to_jsondict
- jsondict = match.to_jsondict()
-
- # from_jsondict
- match2 = match.from_jsondict(jsondict["OFPMatch"])
- buf2 = bytearray()
- match2.serialize(buf2, 0)
- eq_(str(match), str(match2))
- eq_(buf, buf2)
-
- def test_set_vlan_vid_mid(self):
- self._test_set_vlan_vid(2047)
-
- def test_set_vlan_vid_max(self):
- self._test_set_vlan_vid(0xfff)
-
- def test_set_vlan_vid_min(self):
- self._test_set_vlan_vid(0)
-
- def test_set_vlan_vid_masked_mid(self):
- self._test_set_vlan_vid(2047, 0xf0f)
-
- def test_set_vlan_vid_masked_max(self):
- self._test_set_vlan_vid(2047, 0xfff)
-
- def test_set_vlan_vid_masked_min(self):
- self._test_set_vlan_vid(2047, 0)
-
- def test_set_vlan_vid_none(self):
- self._test_set_vlan_vid_none()
diff --git a/tests/unit/packet/__init__.py b/tests/unit/packet/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/packet/__init__.py
+++ /dev/null
diff --git a/tests/unit/packet/test_arp.py b/tests/unit/packet/test_arp.py
deleted file mode 100644
index 40e28131..00000000
--- a/tests/unit/packet/test_arp.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import struct
-from struct import *
-from nose.tools import *
-from ryu.ofproto import ether
-from ryu.lib.packet.ethernet import ethernet
-from ryu.lib.packet.packet import Packet
-from ryu.lib.packet.arp import arp
-from ryu.lib.packet.vlan import vlan
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger('test_arp')
-
-
-class Test_arp(unittest.TestCase):
- """ Test case for arp
- """
-
- hwtype = 1
- proto = 0x0800
- hlen = 6
- plen = 4
- opcode = 1
- src_mac = '00:07:0d:af:f4:54'
- src_ip = '24.166.172.1'
- dst_mac = '00:00:00:00:00:00'
- dst_ip = '24.166.173.159'
-
- fmt = arp._PACK_STR
- buf = pack(fmt, hwtype, proto, hlen, plen, opcode,
- addrconv.mac.text_to_bin(src_mac),
- addrconv.ipv4.text_to_bin(src_ip),
- addrconv.mac.text_to_bin(dst_mac),
- addrconv.ipv4.text_to_bin(dst_ip))
-
- a = arp(hwtype, proto, hlen, plen, opcode, src_mac, src_ip, dst_mac,
- dst_ip)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.hwtype, self.a.hwtype)
- eq_(self.proto, self.a.proto)
- eq_(self.hlen, self.a.hlen)
- eq_(self.plen, self.a.plen)
- eq_(self.opcode, self.a.opcode)
- eq_(self.src_mac, self.a.src_mac)
- eq_(self.src_ip, self.a.src_ip)
- eq_(self.dst_mac, self.a.dst_mac)
- eq_(self.dst_ip, self.a.dst_ip)
-
- def test_parser(self):
- _res = self.a.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(res.hwtype, self.hwtype)
- eq_(res.proto, self.proto)
- eq_(res.hlen, self.hlen)
- eq_(res.plen, self.plen)
- eq_(res.opcode, self.opcode)
- eq_(res.src_mac, self.src_mac)
- eq_(res.src_ip, self.src_ip)
- eq_(res.dst_mac, self.dst_mac)
- eq_(res.dst_ip, self.dst_ip)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.a.serialize(data, prev)
-
- fmt = arp._PACK_STR
- res = struct.unpack(fmt, buf)
-
- eq_(res[0], self.hwtype)
- eq_(res[1], self.proto)
- eq_(res[2], self.hlen)
- eq_(res[3], self.plen)
- eq_(res[4], self.opcode)
- eq_(res[5], addrconv.mac.text_to_bin(self.src_mac))
- eq_(res[6], addrconv.ipv4.text_to_bin(self.src_ip))
- eq_(res[7], addrconv.mac.text_to_bin(self.dst_mac))
- eq_(res[8], addrconv.ipv4.text_to_bin(self.dst_ip))
-
- def _build_arp(self, vlan_enabled):
- if vlan_enabled is True:
- ethertype = ether.ETH_TYPE_8021Q
- v = vlan(1, 1, 3, ether.ETH_TYPE_ARP)
- else:
- ethertype = ether.ETH_TYPE_ARP
- e = ethernet(self.dst_mac, self.src_mac, ethertype)
- p = Packet()
-
- p.add_protocol(e)
- if vlan_enabled is True:
- p.add_protocol(v)
- p.add_protocol(self.a)
- p.serialize()
- return p
-
- def test_build_arp_vlan(self):
- p = self._build_arp(True)
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_8021Q)
-
- v = self.find_protocol(p, "vlan")
- ok_(v)
- eq_(v.ethertype, ether.ETH_TYPE_ARP)
-
- a = self.find_protocol(p, "arp")
- ok_(a)
-
- eq_(a.hwtype, self.hwtype)
- eq_(a.proto, self.proto)
- eq_(a.hlen, self.hlen)
- eq_(a.plen, self.plen)
- eq_(a.opcode, self.opcode)
- eq_(a.src_mac, self.src_mac)
- eq_(a.src_ip, self.src_ip)
- eq_(a.dst_mac, self.dst_mac)
- eq_(a.dst_ip, self.dst_ip)
-
- def test_build_arp_novlan(self):
- p = self._build_arp(False)
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_ARP)
-
- a = self.find_protocol(p, "arp")
- ok_(a)
-
- eq_(a.hwtype, self.hwtype)
- eq_(a.proto, self.proto)
- eq_(a.hlen, self.hlen)
- eq_(a.plen, self.plen)
- eq_(a.opcode, self.opcode)
- eq_(a.src_mac, self.src_mac)
- eq_(a.src_ip, self.src_ip)
- eq_(a.dst_mac, self.dst_mac)
- eq_(a.dst_ip, self.dst_ip)
-
- @raises(Exception)
- def test_malformed_arp(self):
- m_short_buf = self.buf[1:arp._MIN_LEN]
- arp.parser(m_short_buf)
-
- def test_json(self):
- jsondict = self.a.to_jsondict()
- a = arp.from_jsondict(jsondict['arp'])
- eq_(str(self.a), str(a))
diff --git a/tests/unit/packet/test_bfd.py b/tests/unit/packet/test_bfd.py
deleted file mode 100644
index d33949cc..00000000
--- a/tests/unit/packet/test_bfd.py
+++ /dev/null
@@ -1,320 +0,0 @@
-# Copyright (C) 2014 Xinguard, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-import logging
-import struct
-import inspect
-from nose.tools import ok_, eq_, nottest
-
-from ryu.ofproto import ether
-from ryu.ofproto import inet
-from ryu.lib.packet import packet
-from ryu.lib.packet import ethernet
-from ryu.lib.packet import ipv4
-from ryu.lib.packet import udp
-from ryu.lib.packet import bfd
-from ryu.lib import addrconv
-
-LOG = logging.getLogger(__name__)
-
-
-class TestBFD(unittest.TestCase):
- def setUp(self):
- # BFD packet without authentication.
- self.data = b'\xb0\xa8\x6e\x18\xb8\x08\x64\x87' \
- + b'\x88\xe9\xcb\xc8\x08\x00\x45\xc0' \
- + b'\x00\x34\x68\x49\x00\x00\xff\x11' \
- + b'\xf4\x73\xac\x1c\x03\x01\xac\x1c' \
- + b'\x03\x02\xc0\x00\x0e\xc8\x00\x20' \
- + b'\xd9\x02\x21\xc0\x03\x18\x00\x00' \
- + b'\x00\x06\x00\x00\x00\x07\x00\x00' \
- + b'\xea\x60\x00\x00\xea\x60\x00\x00' \
- + b'\x00\x00'
-
- # BFD packet using simple password authentication.
- self.data_auth_simple = b'\x08\x00\x27\xd1\x95\x7c\x08\x00' \
- + b'\x27\xed\x54\x41\x08\x00\x45\xc0' \
- + b'\x00\x3d\x0c\x90\x00\x00\xff\x11' \
- + b'\xbb\x0b\xc0\xa8\x39\x02\xc0\xa8' \
- + b'\x39\x01\xc0\x00\x0e\xc8\x00\x29' \
- + b'\x46\x35\x20\x44\x03\x21\x00\x00' \
- + b'\x00\x01\x00\x00\x00\x00\x00\x0f' \
- + b'\x42\x40\x00\x0f\x42\x40\x00\x00' \
- + b'\x00\x00\x01\x09\x02\x73\x65\x63' \
- + b'\x72\x65\x74'
-
- # BFD packet using md5 authentication.
- self.data_auth_md5 = b'\x08\x00\x27\xd1\x95\x7c\x08\x00' \
- + b'\x27\xed\x54\x41\x08\x00\x45\xc0' \
- + b'\x00\x4c\x0c\x44\x00\x00\xff\x11' \
- + b'\xbb\x48\xc0\xa8\x39\x02\xc0\xa8' \
- + b'\x39\x01\xc0\x00\x0e\xc8\x00\x38' \
- + b'\x51\xbc\x20\x44\x03\x30\x00\x00' \
- + b'\x00\x01\x00\x00\x00\x00\x00\x0f' \
- + b'\x42\x40\x00\x0f\x42\x40\x00\x00' \
- + b'\x00\x00\x02\x18\x02\x00\x00\x00' \
- + b'\x41\xdb\x66\xa8\xf9\x25\x5a\x8b' \
- + b'\xcb\x7e\x4b\xec\x25\xa6\x2c\x23' \
- + b'\xda\x0f'
-
- # BFD packet using SHA1 authentication.
- self.data_auth_sha1 = b'\x08\x00\x27\xd1\x95\x7c\x08\x00' \
- + b'\x27\xed\x54\x41\x08\x00\x45\xc0' \
- + b'\x00\x50\x0b\x90\x00\x00\xff\x11' \
- + b'\xbb\xf8\xc0\xa8\x39\x02\xc0\xa8' \
- + b'\x39\x01\xc0\x00\x0e\xc8\x00\x3c' \
- + b'\xb9\x92\x20\x44\x03\x34\x00\x00' \
- + b'\x00\x01\x00\x00\x00\x00\x00\x0f' \
- + b'\x42\x40\x00\x0f\x42\x40\x00\x00' \
- + b'\x00\x00\x04\x1c\x02\x00\x00\x00' \
- + b'\x41\xb1\x46\x20\x10\x81\x03\xd7' \
- + b'\xf4\xde\x87\x61\x4c\x24\x61\x1f' \
- + b'\x3c\xc1\x6a\x00\x69\x23'
-
- # BFD Key chain {auth_key_id: auth_key/password}
- self.auth_keys = {2: b"secret"}
-
- def tearDown(self):
- pass
-
- def test_parse(self):
- buf = self.data
- pkt = packet.Packet(buf)
- i = iter(pkt)
-
- eq_(type(next(i)), ethernet.ethernet)
- eq_(type(next(i)), ipv4.ipv4)
- eq_(type(next(i)), udp.udp)
- eq_(type(bfd.bfd.parser(next(i))[0]), bfd.bfd)
-
- def test_parse_with_auth_simple(self):
- buf = self.data_auth_simple
- pkt = packet.Packet(buf)
- i = iter(pkt)
-
- eq_(type(next(i)), ethernet.ethernet)
- eq_(type(next(i)), ipv4.ipv4)
- eq_(type(next(i)), udp.udp)
-
- bfd_obj = bfd.bfd.parser(next(i))[0]
- eq_(type(bfd_obj), bfd.bfd)
- eq_(type(bfd_obj.auth_cls), bfd.SimplePassword)
- ok_(bfd_obj.authenticate(self.auth_keys))
-
- def test_parse_with_auth_md5(self):
- buf = self.data_auth_md5
- pkt = packet.Packet(buf)
- i = iter(pkt)
-
- eq_(type(next(i)), ethernet.ethernet)
- eq_(type(next(i)), ipv4.ipv4)
- eq_(type(next(i)), udp.udp)
-
- bfd_obj = bfd.bfd.parser(next(i))[0]
- eq_(type(bfd_obj), bfd.bfd)
- eq_(type(bfd_obj.auth_cls), bfd.KeyedMD5)
- ok_(bfd_obj.authenticate(self.auth_keys))
-
- def test_parse_with_auth_sha1(self):
- buf = self.data_auth_sha1
- pkt = packet.Packet(buf)
- i = iter(pkt)
-
- eq_(type(next(i)), ethernet.ethernet)
- eq_(type(next(i)), ipv4.ipv4)
- eq_(type(next(i)), udp.udp)
-
- bfd_obj = bfd.bfd.parser(next(i))[0]
- eq_(type(bfd_obj), bfd.bfd)
- eq_(type(bfd_obj.auth_cls), bfd.KeyedSHA1)
- ok_(bfd_obj.authenticate(self.auth_keys))
-
- def test_serialize(self):
- pkt = packet.Packet()
-
- eth_pkt = ethernet.ethernet('b0:a8:6e:18:b8:08', '64:87:88:e9:cb:c8')
- pkt.add_protocol(eth_pkt)
-
- ip_pkt = ipv4.ipv4(src='172.28.3.1', dst='172.28.3.2', tos=192,
- identification=26697, proto=inet.IPPROTO_UDP)
- pkt.add_protocol(ip_pkt)
-
- udp_pkt = udp.udp(49152, 3784)
- pkt.add_protocol(udp_pkt)
-
- bfd_pkt = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_CTRL_DETECT_TIME_EXPIRED,
- state=bfd.BFD_STATE_UP, detect_mult=3, my_discr=6,
- your_discr=7, desired_min_tx_interval=60000,
- required_min_rx_interval=60000,
- required_min_echo_rx_interval=0)
- pkt.add_protocol(bfd_pkt)
-
- eq_(len(pkt.protocols), 4)
-
- pkt.serialize()
- eq_(pkt.data, self.data)
-
- def test_serialize_with_auth_simple(self):
- pkt = packet.Packet()
-
- eth_pkt = ethernet.ethernet('08:00:27:d1:95:7c', '08:00:27:ed:54:41')
- pkt.add_protocol(eth_pkt)
-
- ip_pkt = ipv4.ipv4(src='192.168.57.2', dst='192.168.57.1', tos=192,
- identification=3216, proto=inet.IPPROTO_UDP)
- pkt.add_protocol(ip_pkt)
-
- udp_pkt = udp.udp(49152, 3784)
- pkt.add_protocol(udp_pkt)
-
- auth_cls = bfd.SimplePassword(auth_key_id=2,
- password=self.auth_keys[2])
-
- bfd_pkt = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_NO_DIAG,
- flags=bfd.BFD_FLAG_AUTH_PRESENT,
- state=bfd.BFD_STATE_DOWN, detect_mult=3, my_discr=1,
- your_discr=0, desired_min_tx_interval=1000000,
- required_min_rx_interval=1000000,
- required_min_echo_rx_interval=0,
- auth_cls=auth_cls)
-
- pkt.add_protocol(bfd_pkt)
-
- eq_(len(pkt.protocols), 4)
-
- pkt.serialize()
- eq_(pkt.data, self.data_auth_simple)
-
- def test_serialize_with_auth_md5(self):
- pkt = packet.Packet()
-
- eth_pkt = ethernet.ethernet('08:00:27:d1:95:7c', '08:00:27:ed:54:41')
- pkt.add_protocol(eth_pkt)
-
- ip_pkt = ipv4.ipv4(src='192.168.57.2', dst='192.168.57.1', tos=192,
- identification=3140, proto=inet.IPPROTO_UDP)
- pkt.add_protocol(ip_pkt)
-
- udp_pkt = udp.udp(49152, 3784)
- pkt.add_protocol(udp_pkt)
-
- auth_cls = bfd.KeyedMD5(auth_key_id=2, seq=16859,
- auth_key=self.auth_keys[2])
-
- bfd_pkt = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_NO_DIAG,
- flags=bfd.BFD_FLAG_AUTH_PRESENT,
- state=bfd.BFD_STATE_DOWN, detect_mult=3, my_discr=1,
- your_discr=0, desired_min_tx_interval=1000000,
- required_min_rx_interval=1000000,
- required_min_echo_rx_interval=0,
- auth_cls=auth_cls)
-
- pkt.add_protocol(bfd_pkt)
-
- eq_(len(pkt.protocols), 4)
-
- pkt.serialize()
- eq_(pkt.data, self.data_auth_md5)
-
- def test_serialize_with_auth_sha1(self):
- pkt = packet.Packet()
-
- eth_pkt = ethernet.ethernet('08:00:27:d1:95:7c', '08:00:27:ed:54:41')
- pkt.add_protocol(eth_pkt)
-
- ip_pkt = ipv4.ipv4(src='192.168.57.2', dst='192.168.57.1', tos=192,
- identification=2960, proto=inet.IPPROTO_UDP)
- pkt.add_protocol(ip_pkt)
-
- udp_pkt = udp.udp(49152, 3784)
- pkt.add_protocol(udp_pkt)
-
- auth_cls = bfd.KeyedSHA1(auth_key_id=2, seq=16817,
- auth_key=self.auth_keys[2])
-
- bfd_pkt = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_NO_DIAG,
- flags=bfd.BFD_FLAG_AUTH_PRESENT,
- state=bfd.BFD_STATE_DOWN, detect_mult=3, my_discr=1,
- your_discr=0, desired_min_tx_interval=1000000,
- required_min_rx_interval=1000000,
- required_min_echo_rx_interval=0,
- auth_cls=auth_cls)
-
- pkt.add_protocol(bfd_pkt)
-
- eq_(len(pkt.protocols), 4)
-
- pkt.serialize()
- eq_(pkt.data, self.data_auth_sha1)
-
- def test_json(self):
- bfd1 = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_CTRL_DETECT_TIME_EXPIRED,
- state=bfd.BFD_STATE_UP, detect_mult=3, my_discr=6,
- your_discr=7, desired_min_tx_interval=60000,
- required_min_rx_interval=60000,
- required_min_echo_rx_interval=0)
-
- jsondict = bfd1.to_jsondict()
- bfd2 = bfd.bfd.from_jsondict(jsondict['bfd'])
- eq_(str(bfd1), str(bfd2))
-
- def test_json_with_auth_simple(self):
- auth_cls = bfd.SimplePassword(auth_key_id=2,
- password=self.auth_keys[2])
-
- bfd1 = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_NO_DIAG,
- flags=bfd.BFD_FLAG_AUTH_PRESENT,
- state=bfd.BFD_STATE_DOWN, detect_mult=3, my_discr=1,
- your_discr=0, desired_min_tx_interval=1000000,
- required_min_rx_interval=1000000,
- required_min_echo_rx_interval=0,
- auth_cls=auth_cls)
-
- jsondict = bfd1.to_jsondict()
- bfd2 = bfd.bfd.from_jsondict(jsondict['bfd'])
- eq_(str(bfd1), str(bfd2))
-
- def test_json_with_auth_md5(self):
- auth_cls = bfd.KeyedMD5(auth_key_id=2, seq=16859,
- auth_key=self.auth_keys[2])
-
- bfd1 = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_NO_DIAG,
- flags=bfd.BFD_FLAG_AUTH_PRESENT,
- state=bfd.BFD_STATE_DOWN, detect_mult=3, my_discr=1,
- your_discr=0, desired_min_tx_interval=1000000,
- required_min_rx_interval=1000000,
- required_min_echo_rx_interval=0,
- auth_cls=auth_cls)
-
- jsondict = bfd1.to_jsondict()
- bfd2 = bfd.bfd.from_jsondict(jsondict['bfd'])
- eq_(str(bfd1), str(bfd2))
-
- def test_json_with_auth_sha1(self):
- auth_cls = bfd.KeyedSHA1(auth_key_id=2, seq=16859,
- auth_key=self.auth_keys[2])
-
- bfd1 = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_NO_DIAG,
- flags=bfd.BFD_FLAG_AUTH_PRESENT,
- state=bfd.BFD_STATE_DOWN, detect_mult=3, my_discr=1,
- your_discr=0, desired_min_tx_interval=1000000,
- required_min_rx_interval=1000000,
- required_min_echo_rx_interval=0,
- auth_cls=auth_cls)
-
- jsondict = bfd1.to_jsondict()
- bfd2 = bfd.bfd.from_jsondict(jsondict['bfd'])
- eq_(str(bfd1), str(bfd2))
diff --git a/tests/unit/packet/test_bgp.py b/tests/unit/packet/test_bgp.py
deleted file mode 100644
index 2211fc4c..00000000
--- a/tests/unit/packet/test_bgp.py
+++ /dev/null
@@ -1,813 +0,0 @@
-# Copyright (C) 2013,2014 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013,2014 YAMAMOTO Takashi <yamamoto at valinux co jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import logging
-import os
-import sys
-
-import unittest
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.utils import binary_str
-from ryu.lib import pcaplib
-from ryu.lib.packet import packet
-from ryu.lib.packet import bgp
-from ryu.lib.packet import afi
-from ryu.lib.packet import safi
-
-
-LOG = logging.getLogger(__name__)
-
-BGP4_PACKET_DATA_DIR = os.path.join(
- os.path.dirname(sys.modules[__name__].__file__), '../../packet_data/bgp4/')
-
-PMSI_TYPE_NO_TUNNEL_INFORMATION_PRESENT = (
- bgp.BGPPathAttributePmsiTunnel.TYPE_NO_TUNNEL_INFORMATION_PRESENT
-)
-PMSI_TYPE_INGRESS_REPLICATION = (
- bgp.BGPPathAttributePmsiTunnel.TYPE_INGRESS_REPLICATION
-)
-
-RULES_BASE = [
- # port='>=8000'
- bgp.FlowSpecPort(
- operator=(bgp.FlowSpecPort.GT | bgp.FlowSpecPort.EQ),
- value=8000),
- # port='&<=9000'
- bgp.FlowSpecPort(
- operator=(bgp.FlowSpecPort.AND | bgp.FlowSpecPort.LT |
- bgp.FlowSpecPort.EQ),
- value=9000),
- # port='==80'
- bgp.FlowSpecPort(operator=bgp.FlowSpecPort.EQ, value=80),
- # dst_port=8080
- bgp.FlowSpecDestPort(operator=bgp.FlowSpecDestPort.EQ, value=8080),
- # dst_port='>9000'
- bgp.FlowSpecDestPort(operator=bgp.FlowSpecDestPort.GT, value=9000),
- # dst_port='&<9050'
- bgp.FlowSpecDestPort(
- operator=(bgp.FlowSpecDestPort.AND | bgp.FlowSpecDestPort.LT),
- value=9050),
- # dst_port='<=1000'
- bgp.FlowSpecDestPort(
- operator=(bgp.FlowSpecDestPort.LT | bgp.FlowSpecDestPort.EQ),
- value=1000),
- # src_port='<=9090'
- bgp.FlowSpecSrcPort(
- operator=(bgp.FlowSpecSrcPort.LT | bgp.FlowSpecSrcPort.EQ),
- value=9090),
- # src_port='& >=9080'
- bgp.FlowSpecSrcPort(
- operator=(bgp.FlowSpecSrcPort.AND | bgp.FlowSpecSrcPort.GT |
- bgp.FlowSpecSrcPort.EQ),
- value=9080),
- # src_port='<10100'
- bgp.FlowSpecSrcPort(
- operator=bgp.FlowSpecSrcPort.LT, value=10100),
- # src_port='>10000'
- bgp.FlowSpecSrcPort(
- operator=(bgp.FlowSpecSrcPort.AND | bgp.FlowSpecSrcPort.GT),
- value=10000),
- # icmp_type=0
- bgp.FlowSpecIcmpType(operator=bgp.FlowSpecIcmpType.EQ, value=0),
- # icmp_code=6
- bgp.FlowSpecIcmpCode(operator=bgp.FlowSpecIcmpCode.EQ, value=6),
- # tcp_flags='ACK+FIN'
- bgp.FlowSpecTCPFlags(
- operator=0, # Partial match
- value=(bgp.FlowSpecTCPFlags.SYN | bgp.FlowSpecTCPFlags.ACK)),
- # tcp_flags='&!=URGENT'
- bgp.FlowSpecTCPFlags(
- operator=(bgp.FlowSpecTCPFlags.AND | bgp.FlowSpecTCPFlags.NOT),
- value=bgp.FlowSpecTCPFlags.URGENT),
- # packet_len=1000
- bgp.FlowSpecPacketLen(
- operator=bgp.FlowSpecPacketLen.EQ, value=1000),
- # packet_len=1100
- bgp.FlowSpecPacketLen(
- operator=(bgp.FlowSpecTCPFlags.AND | bgp.FlowSpecPacketLen.EQ),
- value=1100),
- # dscp=22
- bgp.FlowSpecDSCP(operator=bgp.FlowSpecDSCP.EQ, value=22),
- # dscp=24
- bgp.FlowSpecDSCP(operator=bgp.FlowSpecDSCP.EQ, value=24),
-]
-
-RULES_L2VPN_BASE = [
- # ether_type=0x0800
- bgp.FlowSpecEtherType(operator=bgp.FlowSpecEtherType.EQ, value=0x0800),
- # source_mac='12:34:56:78:90:AB'
- bgp.FlowSpecSourceMac(addr='12:34:56:78:90:AB', length=6),
- # dest_mac='DE:EF:C0:FF:EE:DD'
- bgp.FlowSpecDestinationMac(addr='BE:EF:C0:FF:EE:DD', length=6),
- # llc_dsap=0x42
- bgp.FlowSpecLLCDSAP(operator=bgp.FlowSpecLLCDSAP.EQ, value=0x42),
- # llc_ssap=0x42
- bgp.FlowSpecLLCSSAP(operator=bgp.FlowSpecLLCSSAP.EQ, value=0x42),
- # llc_control=100
- bgp.FlowSpecLLCControl(operator=bgp.FlowSpecLLCControl.EQ, value=100),
- # snap=0x12345
- bgp.FlowSpecSNAP(operator=bgp.FlowSpecSNAP.EQ, value=0x12345),
- # vlan_id='>4000'
- bgp.FlowSpecVLANID(operator=bgp.FlowSpecVLANID.GT, value=4000),
- # vlan_cos='>=3'
- bgp.FlowSpecVLANCoS(
- operator=(bgp.FlowSpecVLANCoS.GT | bgp.FlowSpecVLANCoS.EQ), value=3),
- # inner_vlan_id='<3000'
- bgp.FlowSpecInnerVLANID(operator=bgp.FlowSpecInnerVLANID.LT, value=3000),
- # inner_vlan_cos='<=5'
- bgp.FlowSpecInnerVLANCoS(
- operator=(bgp.FlowSpecInnerVLANCoS.LT | bgp.FlowSpecInnerVLANCoS.EQ),
- value=5),
-]
-
-
-class Test_bgp(unittest.TestCase):
- """ Test case for ryu.lib.packet.bgp
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_open1(self):
- msg = bgp.BGPOpen(my_as=30000, bgp_identifier='192.0.2.1')
- binmsg = msg.serialize()
- msg2, _, rest = bgp.BGPMessage.parser(binmsg)
- eq_(str(msg), str(msg2))
- eq_(len(msg), 29)
- eq_(rest, b'')
-
- def test_open2(self):
- opt_param = [bgp.BGPOptParamCapabilityUnknown(cap_code=200,
- cap_value=b'hoge'),
- bgp.BGPOptParamCapabilityGracefulRestart(flags=0,
- time=120,
- tuples=[]),
- bgp.BGPOptParamCapabilityRouteRefresh(),
- bgp.BGPOptParamCapabilityCiscoRouteRefresh(),
- bgp.BGPOptParamCapabilityMultiprotocol(
- afi=afi.IP, safi=safi.MPLS_VPN),
- bgp.BGPOptParamCapabilityCarryingLabelInfo(),
- bgp.BGPOptParamCapabilityFourOctetAsNumber(
- as_number=1234567),
- bgp.BGPOptParamUnknown(type_=99, value=b'fuga')]
- msg = bgp.BGPOpen(my_as=30000, bgp_identifier='192.0.2.2',
- opt_param=opt_param)
- binmsg = msg.serialize()
- msg2, _, rest = bgp.BGPMessage.parser(binmsg)
- eq_(str(msg), str(msg2))
- ok_(len(msg) > 29)
- eq_(rest, b'')
-
- def test_update1(self):
- msg = bgp.BGPUpdate()
- binmsg = msg.serialize()
- msg2, _, rest = bgp.BGPMessage.parser(binmsg)
- eq_(str(msg), str(msg2))
- eq_(len(msg), 23)
- eq_(rest, b'')
-
- def test_update2(self):
- withdrawn_routes = [bgp.BGPWithdrawnRoute(length=0,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=1,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=3,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=7,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=32,
- addr='192.0.2.13')]
- mp_nlri = [
- bgp.LabelledVPNIPAddrPrefix(24, '192.0.9.0',
- route_dist='100:100',
- labels=[1, 2, 3]),
- bgp.LabelledVPNIPAddrPrefix(26, '192.0.10.192',
- route_dist='10.0.0.1:10000',
- labels=[5, 6, 7, 8]),
- ]
- mp_nlri2 = [
- bgp.LabelledIPAddrPrefix(24, '192.168.0.0', labels=[1, 2, 3])
- ]
- mp_nlri_v6 = [
- bgp.LabelledVPNIP6AddrPrefix(64, '2001:db8:1111::',
- route_dist='200:200',
- labels=[1, 2, 3]),
- bgp.LabelledVPNIP6AddrPrefix(64, '2001:db8:2222::',
- route_dist='10.0.0.1:10000',
- labels=[5, 6, 7, 8]),
- ]
- mp_nlri2_v6 = [
- bgp.LabelledIP6AddrPrefix(64, '2001:db8:3333::', labels=[1, 2, 3])
- ]
- communities = [
- bgp.BGP_COMMUNITY_NO_EXPORT,
- bgp.BGP_COMMUNITY_NO_ADVERTISE,
- ]
- ecommunities = [
- bgp.BGPTwoOctetAsSpecificExtendedCommunity(
- subtype=1, as_number=65500, local_administrator=3908876543),
- bgp.BGPFourOctetAsSpecificExtendedCommunity(
- subtype=2, as_number=10000000, local_administrator=59876),
- bgp.BGPIPv4AddressSpecificExtendedCommunity(
- subtype=3, ipv4_address='192.0.2.1',
- local_administrator=65432),
- bgp.BGPOpaqueExtendedCommunity(subtype=13, opaque=b'abcdef'),
- bgp.BGPEncapsulationExtendedCommunity(
- subtype=0x0c, tunnel_type=10),
- bgp.BGPEvpnMacMobilityExtendedCommunity(
- subtype=0, flags=0xff, sequence_number=0x11223344),
- bgp.BGPEvpnEsiLabelExtendedCommunity(
- subtype=1, flags=0xff, label=b'\xFF\xFF\xFF'),
- bgp.BGPEvpnEsiLabelExtendedCommunity(
- subtype=1, flags=0xff, mpls_label=0xfffff),
- bgp.BGPEvpnEsiLabelExtendedCommunity(
- subtype=1, flags=0xff, vni=0xffffff),
- bgp.BGPEvpnEsImportRTExtendedCommunity(
- subtype=2, es_import="aa:bb:cc:dd:ee:ff"),
- bgp.BGPUnknownExtendedCommunity(type_=99, value=b'abcdefg'),
- ]
- path_attributes = [
- bgp.BGPPathAttributeOrigin(value=1),
- bgp.BGPPathAttributeAsPath(value=[[1000], {1001, 1002},
- [1003, 1004]]),
- bgp.BGPPathAttributeNextHop(value='192.0.2.199'),
- bgp.BGPPathAttributeMultiExitDisc(value=2000000000),
- bgp.BGPPathAttributeLocalPref(value=1000000000),
- bgp.BGPPathAttributeAtomicAggregate(),
- bgp.BGPPathAttributeAggregator(as_number=40000,
- addr='192.0.2.99'),
- bgp.BGPPathAttributeCommunities(communities=communities),
- bgp.BGPPathAttributeOriginatorId(value='10.1.1.1'),
- bgp.BGPPathAttributeClusterList(value=['1.1.1.1', '2.2.2.2']),
- bgp.BGPPathAttributeExtendedCommunities(communities=ecommunities),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_NO_TUNNEL_INFORMATION_PRESENT,
- label=b'\xFF\xFF\xFF'),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_NO_TUNNEL_INFORMATION_PRESENT,
- tunnel_id=None),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_INGRESS_REPLICATION,
- mpls_label=0xfffff,
- tunnel_id=bgp.PmsiTunnelIdIngressReplication(
- tunnel_endpoint_ip="1.1.1.1")),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_INGRESS_REPLICATION,
- vni=0xffffff,
- tunnel_id=bgp.PmsiTunnelIdIngressReplication(
- tunnel_endpoint_ip="aa:bb:cc::dd:ee:ff")),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=2,
- label=b'\xFF\xFF\xFF',
- tunnel_id=bgp.PmsiTunnelIdUnknown(value=b'test')),
- bgp.BGPPathAttributeAs4Path(value=[[1000000], {1000001, 1002},
- [1003, 1000004]]),
- bgp.BGPPathAttributeAs4Aggregator(as_number=100040000,
- addr='192.0.2.99'),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP, safi=safi.MPLS_VPN,
- next_hop='1.1.1.1',
- nlri=mp_nlri),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP, safi=safi.MPLS_LABEL,
- next_hop='1.1.1.1',
- nlri=mp_nlri2),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP6, safi=safi.MPLS_VPN,
- next_hop=['2001:db8::1'],
- nlri=mp_nlri_v6),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP6, safi=safi.MPLS_LABEL,
- next_hop=['2001:db8::1',
- 'fe80::1'],
- nlri=mp_nlri2_v6),
- bgp.BGPPathAttributeMpUnreachNLRI(afi=afi.IP, safi=safi.MPLS_VPN,
- withdrawn_routes=mp_nlri),
- bgp.BGPPathAttributeUnknown(flags=0, type_=100, value=300 * b'bar')
- ]
- nlri = [
- bgp.BGPNLRI(length=24, addr='203.0.113.1'),
- bgp.BGPNLRI(length=16, addr='203.0.113.0')
- ]
- msg = bgp.BGPUpdate(withdrawn_routes=withdrawn_routes,
- path_attributes=path_attributes,
- nlri=nlri)
- binmsg = msg.serialize()
- msg2, _, rest = bgp.BGPMessage.parser(binmsg)
- eq_(str(msg), str(msg2))
- ok_(len(msg) > 23)
- eq_(rest, b'')
-
- def test_keepalive(self):
- msg = bgp.BGPKeepAlive()
- binmsg = msg.serialize()
- msg2, _, rest = bgp.BGPMessage.parser(binmsg)
- eq_(str(msg), str(msg2))
- eq_(len(msg), 19)
- eq_(rest, b'')
-
- def test_notification(self):
- data = b'hoge'
- msg = bgp.BGPNotification(error_code=1, error_subcode=2, data=data)
- binmsg = msg.serialize()
- msg2, _, rest = bgp.BGPMessage.parser(binmsg)
- eq_(str(msg), str(msg2))
- eq_(len(msg), 21 + len(data))
- eq_(rest, b'')
-
- def test_route_refresh(self):
- msg = bgp.BGPRouteRefresh(afi=afi.IP, safi=safi.MPLS_VPN)
- binmsg = msg.serialize()
- msg2, _, rest = bgp.BGPMessage.parser(binmsg)
- eq_(str(msg), str(msg2))
- eq_(len(msg), 23)
- eq_(rest, b'')
-
- def test_stream_parser(self):
- msgs = [
- bgp.BGPNotification(error_code=1, error_subcode=2, data=b'foo'),
- bgp.BGPNotification(error_code=3, error_subcode=4, data=b'bar'),
- bgp.BGPNotification(error_code=5, error_subcode=6, data=b'baz'),
- ]
- binmsgs = b''.join([bytes(msg.serialize()) for msg in msgs])
- sp = bgp.StreamParser()
- results = []
- for b in binmsgs:
- for m in sp.parse(b):
- results.append(m)
- eq_(str(results), str(msgs))
-
- def test_parser(self):
- files = [
- 'bgp4-open',
- 'bgp4-update',
- 'bgp4-update_ipv6',
- 'bgp4-update_vpnv6',
- 'bgp4-keepalive',
- 'evpn_esi_arbitrary',
- 'evpn_esi_lacp',
- 'evpn_esi_l2_bridge',
- 'evpn_esi_mac_base',
- 'evpn_esi_router_id',
- 'evpn_esi_as_based',
- 'evpn_nlri_eth_a-d',
- 'evpn_nlri_mac_ip_ad',
- 'evpn_nlri_inc_multi_eth_tag',
- 'evpn_nlri_eth_seg',
- 'evpn_nlri_ip_prefix',
- 'flowspec_nlri_ipv4',
- 'flowspec_nlri_vpn4',
- 'flowspec_nlri_ipv6',
- 'flowspec_nlri_vpn6',
- 'flowspec_nlri_l2vpn',
- 'flowspec_action_traffic_rate',
- 'flowspec_action_traffic_action',
- 'flowspec_action_redirect',
- 'flowspec_action_traffic_marking',
- ]
-
- for f in files:
- LOG.debug('*** testing %s ...', f)
- for _, buf in pcaplib.Reader(
- open(BGP4_PACKET_DATA_DIR + f + '.pcap', 'rb')):
- # Checks if BGP message can be parsed as expected.
- pkt = packet.Packet(buf)
- ok_(isinstance(pkt.protocols[-1], bgp.BGPMessage),
- 'Failed to parse BGP message: %s' % pkt)
-
- # Checks if BGP message can be serialized as expected.
- pkt.serialize()
- eq_(buf, pkt.data,
- "b'%s' != b'%s'" % (binary_str(buf), binary_str(pkt.data)))
-
- def test_vlan_action_parser(self):
- action = bgp.BGPFlowSpecVlanActionCommunity(
- actions_1=(bgp.BGPFlowSpecVlanActionCommunity.POP |
- bgp.BGPFlowSpecVlanActionCommunity.SWAP),
- vlan_1=3000,
- cos_1=3,
- actions_2=bgp.BGPFlowSpecVlanActionCommunity.PUSH,
- vlan_2=4000,
- cos_2=2,
- )
- binmsg = action.serialize()
- msg, rest = bgp.BGPFlowSpecVlanActionCommunity.parse(binmsg)
- eq_(str(action), str(msg))
- eq_(rest, b'')
-
- def test_tpid_action_parser(self):
- action = bgp.BGPFlowSpecTPIDActionCommunity(
- actions=(bgp.BGPFlowSpecTPIDActionCommunity.TI |
- bgp.BGPFlowSpecTPIDActionCommunity.TO),
- tpid_1=5,
- tpid_2=6,
- )
- binmsg = action.serialize()
- msg, rest = bgp.BGPFlowSpecTPIDActionCommunity.parse(binmsg)
- eq_(str(action), str(msg))
- eq_(rest, b'')
-
- def test_json1(self):
- opt_param = [bgp.BGPOptParamCapabilityUnknown(cap_code=200,
- cap_value=b'hoge'),
- bgp.BGPOptParamCapabilityRouteRefresh(),
- bgp.BGPOptParamCapabilityMultiprotocol(
- afi=afi.IP, safi=safi.MPLS_VPN),
- bgp.BGPOptParamCapabilityFourOctetAsNumber(
- as_number=1234567),
- bgp.BGPOptParamUnknown(type_=99, value=b'fuga')]
- msg1 = bgp.BGPOpen(my_as=30000, bgp_identifier='192.0.2.2',
- opt_param=opt_param)
- jsondict = msg1.to_jsondict()
- msg2 = bgp.BGPOpen.from_jsondict(jsondict['BGPOpen'])
- eq_(str(msg1), str(msg2))
-
- def test_json2(self):
- withdrawn_routes = [bgp.BGPWithdrawnRoute(length=0,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=1,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=3,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=7,
- addr='192.0.2.13'),
- bgp.BGPWithdrawnRoute(length=32,
- addr='192.0.2.13')]
- mp_nlri = [
- bgp.LabelledVPNIPAddrPrefix(24, '192.0.9.0',
- route_dist='100:100',
- labels=[1, 2, 3]),
- bgp.LabelledVPNIPAddrPrefix(26, '192.0.10.192',
- route_dist='10.0.0.1:10000',
- labels=[5, 6, 7, 8]),
- ]
- mp_nlri2 = [
- bgp.LabelledIPAddrPrefix(24, '192.168.0.0', labels=[1, 2, 3])
- ]
- mp_nlri_v6 = [
- bgp.LabelledVPNIP6AddrPrefix(64, '2001:db8:1111::',
- route_dist='200:200',
- labels=[1, 2, 3]),
- bgp.LabelledVPNIP6AddrPrefix(64, '2001:db8:2222::',
- route_dist='10.0.0.1:10000',
- labels=[5, 6, 7, 8]),
- ]
- mp_nlri2_v6 = [
- bgp.LabelledIP6AddrPrefix(64, '2001:db8:3333::', labels=[1, 2, 3])
- ]
- communities = [
- bgp.BGP_COMMUNITY_NO_EXPORT,
- bgp.BGP_COMMUNITY_NO_ADVERTISE,
- ]
- ecommunities = [
- bgp.BGPTwoOctetAsSpecificExtendedCommunity(
- subtype=1, as_number=65500, local_administrator=3908876543),
- bgp.BGPFourOctetAsSpecificExtendedCommunity(
- subtype=2, as_number=10000000, local_administrator=59876),
- bgp.BGPIPv4AddressSpecificExtendedCommunity(
- subtype=3, ipv4_address='192.0.2.1',
- local_administrator=65432),
- bgp.BGPOpaqueExtendedCommunity(subtype=13, opaque=b'abcdef'),
- bgp.BGPEncapsulationExtendedCommunity(
- subtype=0x0c, tunnel_type=10),
- bgp.BGPEvpnMacMobilityExtendedCommunity(
- subtype=0, flags=0xff, sequence_number=0x11223344),
- bgp.BGPEvpnEsiLabelExtendedCommunity(
- subtype=1, flags=0xff, label=b'\xFF\xFF\xFF'),
- bgp.BGPEvpnEsiLabelExtendedCommunity(
- subtype=1, flags=0xff, mpls_label=0xfffff),
- bgp.BGPEvpnEsiLabelExtendedCommunity(
- subtype=1, flags=0xff, vni=0xffffff),
- bgp.BGPEvpnEsImportRTExtendedCommunity(
- subtype=2, es_import="aa:bb:cc:dd:ee:ff"),
- bgp.BGPUnknownExtendedCommunity(type_=99, value=b'abcdefg'),
- ]
- path_attributes = [
- bgp.BGPPathAttributeOrigin(value=1),
- bgp.BGPPathAttributeAsPath(value=[[1000], {1001, 1002},
- [1003, 1004]]),
- bgp.BGPPathAttributeNextHop(value='192.0.2.199'),
- bgp.BGPPathAttributeMultiExitDisc(value=2000000000),
- bgp.BGPPathAttributeLocalPref(value=1000000000),
- bgp.BGPPathAttributeAtomicAggregate(),
- bgp.BGPPathAttributeAggregator(as_number=40000,
- addr='192.0.2.99'),
- bgp.BGPPathAttributeCommunities(communities=communities),
- bgp.BGPPathAttributeExtendedCommunities(communities=ecommunities),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_NO_TUNNEL_INFORMATION_PRESENT,
- label=b'\xFF\xFF\xFF'),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_NO_TUNNEL_INFORMATION_PRESENT,
- tunnel_id=None),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_INGRESS_REPLICATION,
- mpls_label=0xfffff,
- tunnel_id=bgp.PmsiTunnelIdIngressReplication(
- tunnel_endpoint_ip="1.1.1.1")),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=PMSI_TYPE_INGRESS_REPLICATION,
- vni=0xffffff,
- tunnel_id=bgp.PmsiTunnelIdIngressReplication(
- tunnel_endpoint_ip="aa:bb:cc::dd:ee:ff")),
- bgp.BGPPathAttributePmsiTunnel(
- pmsi_flags=1,
- tunnel_type=2,
- label=b'\xFF\xFF\xFF',
- tunnel_id=bgp.PmsiTunnelIdUnknown(value=b'test')),
- bgp.BGPPathAttributeAs4Path(value=[[1000000], {1000001, 1002},
- [1003, 1000004]]),
- bgp.BGPPathAttributeAs4Aggregator(as_number=100040000,
- addr='192.0.2.99'),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP, safi=safi.MPLS_VPN,
- next_hop='1.1.1.1',
- nlri=mp_nlri),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP, safi=safi.MPLS_LABEL,
- next_hop='1.1.1.1',
- nlri=mp_nlri2),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP6, safi=safi.MPLS_VPN,
- next_hop=['2001:db8::1'],
- nlri=mp_nlri_v6),
- bgp.BGPPathAttributeMpReachNLRI(afi=afi.IP6, safi=safi.MPLS_LABEL,
- next_hop=['2001:db8::1',
- 'fe80::1'],
- nlri=mp_nlri2_v6),
- bgp.BGPPathAttributeMpUnreachNLRI(afi=afi.IP, safi=safi.MPLS_VPN,
- withdrawn_routes=mp_nlri),
- bgp.BGPPathAttributeUnknown(flags=0, type_=100, value=300 * b'bar')
- ]
- nlri = [
- bgp.BGPNLRI(length=24, addr='203.0.113.1'),
- bgp.BGPNLRI(length=16, addr='203.0.113.0')
- ]
- msg1 = bgp.BGPUpdate(withdrawn_routes=withdrawn_routes,
- path_attributes=path_attributes,
- nlri=nlri)
- jsondict = msg1.to_jsondict()
- msg2 = bgp.BGPUpdate.from_jsondict(jsondict['BGPUpdate'])
- eq_(str(msg1), str(msg2))
-
- def test_flowspec_user_interface_ipv4(self):
- rules = RULES_BASE + [
- # dst_prefix='10.0.0.0/24
- bgp.FlowSpecDestPrefix(addr='10.0.0.0', length=24),
- # src_prefix='20.0.0.1/24'
- bgp.FlowSpecSrcPrefix(addr='20.0.0.0', length=24),
- # ip_proto='6'
- bgp.FlowSpecIPProtocol(
- operator=bgp.FlowSpecIPProtocol.EQ, value=6),
- # fragment='LF'
- bgp.FlowSpecFragment(
- operator=0, # Partial match
- value=bgp.FlowSpecFragment.LF),
- # fragment='==FF'
- bgp.FlowSpecFragment(
- operator=bgp.FlowSpecFragment.MATCH,
- value=bgp.FlowSpecFragment.FF),
- # fragment='&==ISF'
- bgp.FlowSpecFragment(
- operator=(bgp.FlowSpecFragment.AND |
- bgp.FlowSpecFragment.MATCH),
- value=bgp.FlowSpecFragment.ISF),
- # fragment='!=DF'
- bgp.FlowSpecFragment(
- operator=bgp.FlowSpecFragment.NOT,
- value=bgp.FlowSpecFragment.DF)
- ]
-
- msg = bgp.FlowSpecIPv4NLRI.from_user(
- dst_prefix='10.0.0.0/24',
- src_prefix='20.0.0.0/24',
- ip_proto='6',
- port='>=8000 & <=9000 | ==80',
- dst_port='8080 >9000&<9050 | <=1000',
- src_port='<=9090 & >=9080 <10100 & >10000',
- icmp_type=0,
- icmp_code=6,
- tcp_flags='SYN+ACK & !=URGENT',
- packet_len='1000 & 1100',
- dscp='22 24',
- fragment='LF ==FF&==ISF | !=DF')
- msg2 = bgp.FlowSpecIPv4NLRI(rules=rules)
- binmsg = msg.serialize()
- binmsg2 = msg2.serialize()
- eq_(str(msg), str(msg2))
- eq_(binary_str(binmsg), binary_str(binmsg2))
- msg3, rest = bgp.FlowSpecIPv4NLRI.parser(binmsg)
- eq_(str(msg), str(msg3))
- eq_(rest, b'')
-
- def test_flowspec_user_interface_vpv4(self):
- rules = RULES_BASE + [
- # dst_prefix='10.0.0.0/24
- bgp.FlowSpecDestPrefix(addr='10.0.0.0', length=24),
- # src_prefix='20.0.0.1/24'
- bgp.FlowSpecSrcPrefix(addr='20.0.0.0', length=24),
- # ip_proto='6'
- bgp.FlowSpecIPProtocol(
- operator=bgp.FlowSpecIPProtocol.EQ, value=6),
- # fragment='LF'
- bgp.FlowSpecFragment(
- operator=0, # Partial match
- value=bgp.FlowSpecFragment.LF),
- # fragment='==FF'
- bgp.FlowSpecFragment(
- operator=bgp.FlowSpecFragment.MATCH,
- value=bgp.FlowSpecFragment.FF),
- # fragment='&==ISF'
- bgp.FlowSpecFragment(
- operator=(bgp.FlowSpecFragment.AND |
- bgp.FlowSpecFragment.MATCH),
- value=bgp.FlowSpecFragment.ISF),
- # fragment='!=DF'
- bgp.FlowSpecFragment(
- operator=bgp.FlowSpecFragment.NOT,
- value=bgp.FlowSpecFragment.DF)
- ]
- msg = bgp.FlowSpecVPNv4NLRI.from_user(
- route_dist='65001:250',
- dst_prefix='10.0.0.0/24',
- src_prefix='20.0.0.0/24',
- ip_proto='6',
- port='>=8000 & <=9000 | ==80',
- dst_port='8080 >9000&<9050 | <=1000',
- src_port='<=9090 & >=9080 <10100 & >10000',
- icmp_type=0,
- icmp_code=6,
- tcp_flags='SYN+ACK & !=URGENT',
- packet_len='1000 & 1100',
- dscp='22 24',
- fragment='LF ==FF&==ISF | !=DF')
- msg2 = bgp.FlowSpecVPNv4NLRI(route_dist='65001:250', rules=rules)
- binmsg = msg.serialize()
- binmsg2 = msg2.serialize()
- eq_(str(msg), str(msg2))
- eq_(binary_str(binmsg), binary_str(binmsg2))
- msg3, rest = bgp.FlowSpecVPNv4NLRI.parser(binmsg)
- eq_(str(msg), str(msg3))
- eq_(rest, b'')
-
- def test_flowspec_user_interface_ipv6(self):
- rules = RULES_BASE + [
- # dst_prefix='2001:2/128/32'
- bgp.FlowSpecIPv6DestPrefix(
- addr='2001::2', offset=32, length=128),
- # src_prefix='3002::3/128'
- bgp.FlowSpecIPv6SrcPrefix(
- addr='3002::3', length=128),
- # ip_proto='6'
- bgp.FlowSpecNextHeader(
- operator=bgp.FlowSpecNextHeader.EQ, value=6),
- # fragment='LF'
- bgp.FlowSpecIPv6Fragment(
- operator=0, # Partial match
- value=bgp.FlowSpecFragment.LF),
- # fragment='==FF'
- bgp.FlowSpecIPv6Fragment(
- operator=bgp.FlowSpecFragment.MATCH,
- value=bgp.FlowSpecFragment.FF),
- # fragment='&==ISF'
- bgp.FlowSpecIPv6Fragment(
- operator=(bgp.FlowSpecFragment.AND |
- bgp.FlowSpecFragment.MATCH),
- value=bgp.FlowSpecFragment.ISF),
- # fragment='!=LF'
- bgp.FlowSpecIPv6Fragment(
- operator=bgp.FlowSpecFragment.NOT,
- value=bgp.FlowSpecFragment.LF),
- # flowlabel='100'
- bgp.FlowSpecIPv6FlowLabel(
- operator=bgp.FlowSpecIPv6FlowLabel.EQ,
- value=100),
- ]
- msg = bgp.FlowSpecIPv6NLRI.from_user(
- dst_prefix='2001::2/128/32',
- src_prefix='3002::3/128',
- next_header='6',
- port='>=8000 & <=9000 | ==80',
- dst_port='8080 >9000&<9050 | <=1000',
- src_port='<=9090 & >=9080 <10100 & >10000',
- icmp_type=0,
- icmp_code=6,
- tcp_flags='SYN+ACK & !=URGENT',
- packet_len='1000 & 1100',
- dscp='22 24',
- fragment='LF ==FF&==ISF | !=LF',
- flow_label=100,
- )
- msg2 = bgp.FlowSpecIPv6NLRI(rules=rules)
- binmsg = msg.serialize()
- binmsg2 = msg2.serialize()
- eq_(str(msg), str(msg2))
- eq_(binary_str(binmsg), binary_str(binmsg2))
- msg3, rest = bgp.FlowSpecIPv6NLRI.parser(binmsg)
- eq_(str(msg), str(msg3))
- eq_(rest, b'')
-
- def test_flowspec_user_interface_vpnv6(self):
- rules = RULES_BASE + [
- # dst_prefix='2001:2/128/32'
- bgp.FlowSpecIPv6DestPrefix(
- addr='2001::2', offset=32, length=128),
- # src_prefix='3002::3/128'
- bgp.FlowSpecIPv6SrcPrefix(
- addr='3002::3', length=128),
- # ip_proto='6'
- bgp.FlowSpecNextHeader(
- operator=bgp.FlowSpecNextHeader.EQ, value=6),
- # fragment='LF'
- bgp.FlowSpecIPv6Fragment(
- operator=0, # Partial match
- value=bgp.FlowSpecFragment.LF),
- # fragment='==FF'
- bgp.FlowSpecIPv6Fragment(
- operator=bgp.FlowSpecFragment.MATCH,
- value=bgp.FlowSpecFragment.FF),
- # fragment='&==ISF'
- bgp.FlowSpecIPv6Fragment(
- operator=(bgp.FlowSpecFragment.AND |
- bgp.FlowSpecFragment.MATCH),
- value=bgp.FlowSpecFragment.ISF),
- # fragment='!=LF'
- bgp.FlowSpecIPv6Fragment(
- operator=bgp.FlowSpecFragment.NOT,
- value=bgp.FlowSpecFragment.LF),
- # flowlabel='100'
- bgp.FlowSpecIPv6FlowLabel(
- operator=bgp.FlowSpecIPv6FlowLabel.EQ,
- value=100),
- ]
- msg = bgp.FlowSpecVPNv6NLRI.from_user(
- route_dist='65001:250',
- dst_prefix='2001::2/128/32',
- src_prefix='3002::3/128',
- next_header='6',
- port='>=8000 & <=9000 | ==80',
- dst_port='8080 >9000&<9050 | <=1000',
- src_port='<=9090 & >=9080 <10100 & >10000',
- icmp_type=0,
- icmp_code=6,
- tcp_flags='SYN+ACK & !=URGENT',
- packet_len='1000 & 1100',
- dscp='22 24',
- fragment='LF ==FF&==ISF | !=LF',
- flow_label=100,
- )
- msg2 = bgp.FlowSpecVPNv6NLRI(route_dist='65001:250', rules=rules)
- binmsg = msg.serialize()
- binmsg2 = msg2.serialize()
- eq_(str(msg), str(msg2))
- eq_(binary_str(binmsg), binary_str(binmsg2))
- msg3, rest = bgp.FlowSpecVPNv6NLRI.parser(binmsg)
- eq_(str(msg), str(msg3))
- eq_(rest, b'')
-
- def test_flowspec_user_interface_l2vpn(self):
- rules = RULES_L2VPN_BASE
- msg = bgp.FlowSpecL2VPNNLRI.from_user(
- route_dist='65001:250',
- ether_type=0x0800,
- src_mac='12:34:56:78:90:AB',
- dst_mac='BE:EF:C0:FF:EE:DD',
- llc_dsap=0x42,
- llc_ssap=0x42,
- llc_control=100,
- snap=0x12345,
- vlan_id='>4000',
- vlan_cos='>=3',
- inner_vlan_id='<3000',
- inner_vlan_cos='<=5',
- )
- msg2 = bgp.FlowSpecL2VPNNLRI(route_dist='65001:250', rules=rules)
- binmsg = msg.serialize()
- binmsg2 = msg2.serialize()
- eq_(str(msg), str(msg2))
- eq_(binary_str(binmsg), binary_str(binmsg2))
- msg3, rest = bgp.FlowSpecL2VPNNLRI.parser(binmsg)
- eq_(str(msg), str(msg3))
- eq_(rest, b'')
diff --git a/tests/unit/packet/test_bmp.py b/tests/unit/packet/test_bmp.py
deleted file mode 100644
index f93b8014..00000000
--- a/tests/unit/packet/test_bmp.py
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-from nose.tools import eq_
-from nose.tools import ok_
-from time import time
-
-from ryu.lib.packet import bmp
-from ryu.lib.packet import bgp
-from ryu.lib.packet import afi
-from ryu.lib.packet import safi
-
-
-class Test_bmp(unittest.TestCase):
- """ Test case for ryu.lib.packet.bmp
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def _time(self):
- # time() can give sub-microsecond precision, which results
- # in an assertion failure
- return round(time(), 6)
-
- def test_route_monitoring(self):
- update = bgp.BGPUpdate()
- msg = bmp.BMPRouteMonitoring(bgp_update=update,
- peer_type=bmp.BMP_PEER_TYPE_GLOBAL,
- is_post_policy=True,
- peer_distinguisher=0,
- peer_address='192.0.2.1',
- peer_as=30000,
- peer_bgp_id='192.0.2.1',
- timestamp=self._time())
- binmsg = msg.serialize()
- msg2, rest = bmp.BMPMessage.parser(binmsg)
- eq_(msg.to_jsondict(), msg2.to_jsondict())
- eq_(rest, b'')
-
- def test_statistics_report(self):
- stats = [{'type': bmp.BMP_STAT_TYPE_REJECTED, 'value': 100},
- {'type': bmp.BMP_STAT_TYPE_DUPLICATE_PREFIX, 'value': 200},
- {'type': bmp.BMP_STAT_TYPE_DUPLICATE_WITHDRAW, 'value': 300},
- {'type': bmp.BMP_STAT_TYPE_ADJ_RIB_IN, 'value': 100000},
- {'type': bmp.BMP_STAT_TYPE_LOC_RIB, 'value': 500000}]
- msg = bmp.BMPStatisticsReport(stats=stats,
- peer_type=bmp.BMP_PEER_TYPE_GLOBAL,
- is_post_policy=True,
- peer_distinguisher=0,
- peer_address='192.0.2.1',
- peer_as=30000,
- peer_bgp_id='192.0.2.1',
- timestamp=self._time())
- binmsg = msg.serialize()
- msg2, rest = bmp.BMPMessage.parser(binmsg)
- eq_(msg.to_jsondict(), msg2.to_jsondict())
- eq_(rest, b'')
-
- def test_peer_down_notification(self):
- reason = bmp.BMP_PEER_DOWN_REASON_LOCAL_BGP_NOTIFICATION
- data = b'hoge'
- data = bgp.BGPNotification(error_code=1, error_subcode=2, data=data)
- msg = bmp.BMPPeerDownNotification(reason=reason, data=data,
- peer_type=bmp.BMP_PEER_TYPE_GLOBAL,
- is_post_policy=True,
- peer_distinguisher=0,
- peer_address='192.0.2.1',
- peer_as=30000,
- peer_bgp_id='192.0.2.1',
- timestamp=self._time())
- binmsg = msg.serialize()
- msg2, rest = bmp.BMPMessage.parser(binmsg)
- eq_(msg.to_jsondict(), msg2.to_jsondict())
- eq_(rest, b'')
-
- def test_peer_up_notification(self):
- opt_param = [bgp.BGPOptParamCapabilityUnknown(cap_code=200,
- cap_value=b'hoge'),
- bgp.BGPOptParamCapabilityRouteRefresh(),
- bgp.BGPOptParamCapabilityMultiprotocol(
- afi=afi.IP, safi=safi.MPLS_VPN)]
- open_message = bgp.BGPOpen(my_as=40000, bgp_identifier='192.0.2.2',
- opt_param=opt_param)
- msg = bmp.BMPPeerUpNotification(local_address='192.0.2.2',
- local_port=179,
- remote_port=11089,
- sent_open_message=open_message,
- received_open_message=open_message,
- peer_type=bmp.BMP_PEER_TYPE_GLOBAL,
- is_post_policy=True,
- peer_distinguisher=0,
- peer_address='192.0.2.1',
- peer_as=30000,
- peer_bgp_id='192.0.2.1',
- timestamp=self._time())
- binmsg = msg.serialize()
- msg2, rest = bmp.BMPMessage.parser(binmsg)
- eq_(msg.to_jsondict(), msg2.to_jsondict())
- eq_(rest, b'')
-
- def test_initiation(self):
- initiation_info = [{'type': bmp.BMP_INIT_TYPE_STRING,
- 'value': u'This is Ryu BGP BMP message'}]
- msg = bmp.BMPInitiation(info=initiation_info)
- binmsg = msg.serialize()
- msg2, rest = bmp.BMPMessage.parser(binmsg)
- eq_(msg.to_jsondict(lambda v: v), msg2.to_jsondict(lambda v: v))
- eq_(rest, b'')
-
- def test_termination(self):
- termination_info = [{'type': bmp.BMP_TERM_TYPE_STRING,
- 'value': u'Session administatively closed'},
- {'type': bmp.BMP_TERM_TYPE_REASON,
- 'value': bmp.BMP_TERM_REASON_ADMIN}]
- msg = bmp.BMPTermination(info=termination_info)
- binmsg = msg.serialize()
- msg2, rest = bmp.BMPMessage.parser(binmsg)
- eq_(msg.to_jsondict(lambda v: v), msg2.to_jsondict(lambda v: v))
- eq_(rest, b'')
diff --git a/tests/unit/packet/test_bpdu.py b/tests/unit/packet/test_bpdu.py
deleted file mode 100644
index 1ef8cf58..00000000
--- a/tests/unit/packet/test_bpdu.py
+++ /dev/null
@@ -1,469 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import struct
-
-from nose.tools import eq_
-from ryu.lib.packet import bpdu
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_ConfigurationBPDUs(unittest.TestCase):
- """ Test case for ConfigurationBPDUs
- """
-
- def setUp(self):
- self.protocol_id = bpdu.PROTOCOL_IDENTIFIER
- self.version_id = bpdu.ConfigurationBPDUs.VERSION_ID
- self.bpdu_type = bpdu.ConfigurationBPDUs.BPDU_TYPE
- self.flags = 0b00000001
- self.root_priority = 4096
- self.root_system_id_extension = 1
- self.root_mac_address = '12:34:56:78:9a:bc'
- self.root_path_cost = 2
- self.bridge_priority = 8192
- self.bridge_system_id_extension = 3
- self.bridge_mac_address = 'aa:aa:aa:aa:aa:aa'
- self.port_priority = 16
- self.port_number = 4
- self.message_age = 5
- self.max_age = 6
- self.hello_time = 7
- self.forward_delay = 8
-
- self.msg = bpdu.ConfigurationBPDUs(
- flags=self.flags,
- root_priority=self.root_priority,
- root_system_id_extension=self.root_system_id_extension,
- root_mac_address=self.root_mac_address,
- root_path_cost=self.root_path_cost,
- bridge_priority=self.bridge_priority,
- bridge_system_id_extension=self.bridge_system_id_extension,
- bridge_mac_address=self.bridge_mac_address,
- port_priority=self.port_priority,
- port_number=self.port_number,
- message_age=self.message_age,
- max_age=self.max_age,
- hello_time=self.hello_time,
- forward_delay=self.forward_delay)
-
- self.fmt = (bpdu.bpdu._PACK_STR
- + bpdu.ConfigurationBPDUs._PACK_STR[1:])
- self.buf = struct.pack(self.fmt,
- self.protocol_id, self.version_id,
- self.bpdu_type, self.flags,
- bpdu.ConfigurationBPDUs.encode_bridge_id(
- self.root_priority,
- self.root_system_id_extension,
- self.root_mac_address),
- self.root_path_cost,
- bpdu.ConfigurationBPDUs.encode_bridge_id(
- self.bridge_priority,
- self.bridge_system_id_extension,
- self.bridge_mac_address),
- bpdu.ConfigurationBPDUs.encode_port_id(
- self.port_priority,
- self.port_number),
- bpdu.ConfigurationBPDUs._encode_timer(
- self.message_age),
- bpdu.ConfigurationBPDUs._encode_timer(
- self.max_age),
- bpdu.ConfigurationBPDUs._encode_timer(
- self.hello_time),
- bpdu.ConfigurationBPDUs._encode_timer(
- self.forward_delay))
-
- def test_init(self):
- eq_(self.protocol_id, self.msg._protocol_id)
- eq_(self.version_id, self.msg._version_id)
- eq_(self.bpdu_type, self.msg._bpdu_type)
- eq_(self.flags, self.msg.flags)
- eq_(self.root_priority, self.msg.root_priority)
- eq_(self.root_system_id_extension,
- self.msg.root_system_id_extension)
- eq_(self.root_mac_address, self.msg.root_mac_address)
- eq_(self.root_path_cost, self.msg.root_path_cost)
- eq_(self.bridge_priority, self.msg.bridge_priority)
- eq_(self.bridge_system_id_extension,
- self.msg.bridge_system_id_extension)
- eq_(self.bridge_mac_address, self.msg.bridge_mac_address)
- eq_(self.port_priority, self.msg.port_priority)
- eq_(self.port_number, self.msg.port_number)
- eq_(self.message_age, self.msg.message_age)
- eq_(self.max_age, self.msg.max_age)
- eq_(self.hello_time, self.msg.hello_time)
- eq_(self.forward_delay, self.msg.forward_delay)
-
- def test_parser(self):
- r1, r2, _ = bpdu.bpdu.parser(self.buf)
-
- eq_(type(r1), type(self.msg))
- eq_(r1._protocol_id, self.protocol_id)
- eq_(r1._version_id, self.version_id)
- eq_(r1._bpdu_type, self.bpdu_type)
- eq_(r1.flags, self.flags)
- eq_(r1.root_priority, self.root_priority)
- eq_(r1.root_system_id_extension, self.root_system_id_extension)
- eq_(r1.root_mac_address, self.root_mac_address)
- eq_(r1.root_path_cost, self.root_path_cost)
- eq_(r1.bridge_priority, self.bridge_priority)
- eq_(r1.bridge_system_id_extension, self.bridge_system_id_extension)
- eq_(r1.bridge_mac_address, self.bridge_mac_address)
- eq_(r1.port_priority, self.port_priority)
- eq_(r1.port_number, self.port_number)
- eq_(r1.message_age, self.message_age)
- eq_(r1.max_age, self.max_age)
- eq_(r1.hello_time, self.hello_time)
- eq_(r1.forward_delay, self.forward_delay)
- eq_(r2, None)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.msg.serialize(data, prev)
- res = struct.unpack(self.fmt, buf)
-
- eq_(res[0], self.protocol_id)
- eq_(res[1], self.version_id)
- eq_(res[2], self.bpdu_type)
- eq_(res[3], self.flags)
- eq_(bpdu.ConfigurationBPDUs._decode_bridge_id(res[4]),
- (self.root_priority,
- self.root_system_id_extension,
- self.root_mac_address))
- eq_(res[5], self.root_path_cost)
- eq_(bpdu.ConfigurationBPDUs._decode_bridge_id(res[6]),
- (self.bridge_priority,
- self.bridge_system_id_extension,
- self.bridge_mac_address))
- eq_(bpdu.ConfigurationBPDUs._decode_port_id(res[7]),
- (self.port_priority,
- self.port_number))
- eq_(bpdu.ConfigurationBPDUs._decode_timer(res[8]), self.message_age)
- eq_(bpdu.ConfigurationBPDUs._decode_timer(res[9]), self.max_age)
- eq_(bpdu.ConfigurationBPDUs._decode_timer(res[10]), self.hello_time)
- eq_(bpdu.ConfigurationBPDUs._decode_timer(res[11]), self.forward_delay)
-
- def test_json(self):
- jsondict = self.msg.to_jsondict()
- msg = bpdu.ConfigurationBPDUs.from_jsondict(
- jsondict['ConfigurationBPDUs'])
- eq_(str(self.msg), str(msg))
-
-
-class Test_TopologyChangeNotificationBPDUs(unittest.TestCase):
- """ Test case for TopologyChangeNotificationBPDUs
- """
-
- def setUp(self):
- self.protocol_id = bpdu.PROTOCOL_IDENTIFIER
- self.version_id = bpdu.TopologyChangeNotificationBPDUs.VERSION_ID
- self.bpdu_type = bpdu.TopologyChangeNotificationBPDUs.BPDU_TYPE
-
- self.msg = bpdu.TopologyChangeNotificationBPDUs()
-
- self.fmt = bpdu.bpdu._PACK_STR
- self.buf = struct.pack(self.fmt,
- self.protocol_id,
- self.version_id,
- self.bpdu_type)
-
- def test_init(self):
- eq_(self.protocol_id, self.msg._protocol_id)
- eq_(self.version_id, self.msg._version_id)
- eq_(self.bpdu_type, self.msg._bpdu_type)
-
- def test_parser(self):
- r1, r2, _ = bpdu.bpdu.parser(self.buf)
-
- eq_(type(r1), type(self.msg))
- eq_(r1._protocol_id, self.protocol_id)
- eq_(r1._version_id, self.version_id)
- eq_(r1._bpdu_type, self.bpdu_type)
- eq_(r2, None)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.msg.serialize(data, prev)
- res = struct.unpack(self.fmt, buf)
-
- eq_(res[0], self.protocol_id)
- eq_(res[1], self.version_id)
- eq_(res[2], self.bpdu_type)
-
- def test_json(self):
- jsondict = self.msg.to_jsondict()
- msg = bpdu.TopologyChangeNotificationBPDUs.from_jsondict(
- jsondict['TopologyChangeNotificationBPDUs'])
- eq_(str(self.msg), str(msg))
-
-
-class Test_RstBPDUs(unittest.TestCase):
- """ Test case for RstBPDUs
- """
-
- def setUp(self):
- self.protocol_id = bpdu.PROTOCOL_IDENTIFIER
- self.version_id = bpdu.RstBPDUs.VERSION_ID
- self.bpdu_type = bpdu.RstBPDUs.BPDU_TYPE
- self.flags = 0b01111110
- self.root_priority = 4096
- self.root_system_id_extension = 1
- self.root_mac_address = '12:34:56:78:9a:bc'
- self.root_path_cost = 2
- self.bridge_priority = 8192
- self.bridge_system_id_extension = 3
- self.bridge_mac_address = 'aa:aa:aa:aa:aa:aa'
- self.port_priority = 16
- self.port_number = 4
- self.message_age = 5
- self.max_age = 6
- self.hello_time = 7
- self.forward_delay = 8
- self.version_1_length = bpdu.VERSION_1_LENGTH
-
- self.msg = bpdu.RstBPDUs(
- flags=self.flags,
- root_priority=self.root_priority,
- root_system_id_extension=self.root_system_id_extension,
- root_mac_address=self.root_mac_address,
- root_path_cost=self.root_path_cost,
- bridge_priority=self.bridge_priority,
- bridge_system_id_extension=self.bridge_system_id_extension,
- bridge_mac_address=self.bridge_mac_address,
- port_priority=self.port_priority,
- port_number=self.port_number,
- message_age=self.message_age,
- max_age=self.max_age,
- hello_time=self.hello_time,
- forward_delay=self.forward_delay)
-
- self.fmt = (bpdu.bpdu._PACK_STR
- + bpdu.ConfigurationBPDUs._PACK_STR[1:]
- + bpdu.RstBPDUs._PACK_STR[1:])
- self.buf = struct.pack(self.fmt,
- self.protocol_id, self.version_id,
- self.bpdu_type, self.flags,
- bpdu.RstBPDUs.encode_bridge_id(
- self.root_priority,
- self.root_system_id_extension,
- self.root_mac_address),
- self.root_path_cost,
- bpdu.RstBPDUs.encode_bridge_id(
- self.bridge_priority,
- self.bridge_system_id_extension,
- self.bridge_mac_address),
- bpdu.RstBPDUs.encode_port_id(
- self.port_priority,
- self.port_number),
- bpdu.RstBPDUs._encode_timer(self.message_age),
- bpdu.RstBPDUs._encode_timer(self.max_age),
- bpdu.RstBPDUs._encode_timer(self.hello_time),
- bpdu.RstBPDUs._encode_timer(self.forward_delay),
- self.version_1_length)
-
- def test_init(self):
- eq_(self.protocol_id, self.msg._protocol_id)
- eq_(self.version_id, self.msg._version_id)
- eq_(self.bpdu_type, self.msg._bpdu_type)
- eq_(self.flags, self.msg.flags)
- eq_(self.root_priority, self.msg.root_priority)
- eq_(self.root_system_id_extension,
- self.msg.root_system_id_extension)
- eq_(self.root_mac_address, self.msg.root_mac_address)
- eq_(self.root_path_cost, self.msg.root_path_cost)
- eq_(self.bridge_priority, self.msg.bridge_priority)
- eq_(self.bridge_system_id_extension,
- self.msg.bridge_system_id_extension)
- eq_(self.bridge_mac_address, self.msg.bridge_mac_address)
- eq_(self.port_priority, self.msg.port_priority)
- eq_(self.port_number, self.msg.port_number)
- eq_(self.message_age, self.msg.message_age)
- eq_(self.max_age, self.msg.max_age)
- eq_(self.hello_time, self.msg.hello_time)
- eq_(self.forward_delay, self.msg.forward_delay)
- eq_(self.version_1_length, self.msg._version_1_length)
-
- def test_parser(self):
- r1, r2, _ = bpdu.bpdu.parser(self.buf)
-
- eq_(type(r1), type(self.msg))
- eq_(r1._protocol_id, self.protocol_id)
- eq_(r1._version_id, self.version_id)
- eq_(r1._bpdu_type, self.bpdu_type)
- eq_(r1.flags, self.flags)
- eq_(r1.root_priority, self.root_priority)
- eq_(r1.root_system_id_extension, self.root_system_id_extension)
- eq_(r1.root_mac_address, self.root_mac_address)
- eq_(r1.root_path_cost, self.root_path_cost)
- eq_(r1.bridge_priority, self.bridge_priority)
- eq_(r1.bridge_system_id_extension, self.bridge_system_id_extension)
- eq_(r1.bridge_mac_address, self.bridge_mac_address)
- eq_(r1.port_priority, self.port_priority)
- eq_(r1.port_number, self.port_number)
- eq_(r1.message_age, self.message_age)
- eq_(r1.max_age, self.max_age)
- eq_(r1.hello_time, self.hello_time)
- eq_(r1.forward_delay, self.forward_delay)
- eq_(r1._version_1_length, self.version_1_length)
- eq_(r2, None)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.msg.serialize(data, prev)
- res = struct.unpack(self.fmt, buf)
-
- eq_(res[0], self.protocol_id)
- eq_(res[1], self.version_id)
- eq_(res[2], self.bpdu_type)
- eq_(res[3], self.flags)
- eq_(bpdu.RstBPDUs._decode_bridge_id(res[4]),
- (self.root_priority,
- self.root_system_id_extension,
- self.root_mac_address))
- eq_(res[5], self.root_path_cost)
- eq_(bpdu.RstBPDUs._decode_bridge_id(res[6]),
- (self.bridge_priority,
- self.bridge_system_id_extension,
- self.bridge_mac_address))
- eq_(bpdu.RstBPDUs._decode_port_id(res[7]),
- (self.port_priority,
- self.port_number))
- eq_(bpdu.RstBPDUs._decode_timer(res[8]), self.message_age)
- eq_(bpdu.RstBPDUs._decode_timer(res[9]), self.max_age)
- eq_(bpdu.RstBPDUs._decode_timer(res[10]), self.hello_time)
- eq_(bpdu.RstBPDUs._decode_timer(res[11]), self.forward_delay)
- eq_(res[12], self.version_1_length)
-
- def test_json(self):
- jsondict = self.msg.to_jsondict()
- msg = bpdu.RstBPDUs.from_jsondict(jsondict['RstBPDUs'])
- eq_(str(self.msg), str(msg))
-
-
-class Test_UnknownVersion(unittest.TestCase):
- """ Test case for unknown BPDU version
- """
-
- def setUp(self):
- self.protocol_id = bpdu.PROTOCOL_IDENTIFIER
- self.version_id = 111 # Unknown version
- self.bpdu_type = bpdu.RstBPDUs.BPDU_TYPE
- self.flags = 0b01111110
- self.root_priority = 4096
- self.root_system_id_extension = 1
- self.root_mac_address = '12:34:56:78:9a:bc'
- self.root_path_cost = 2
- self.bridge_priority = 8192
- self.bridge_system_id_extension = 3
- self.bridge_mac_address = 'aa:aa:aa:aa:aa:aa'
- self.port_priority = 16
- self.port_number = 4
- self.message_age = 5
- self.max_age = 6
- self.hello_time = 7
- self.forward_delay = 8
- self.version_1_length = bpdu.VERSION_1_LENGTH
-
- self.fmt = (bpdu.bpdu._PACK_STR
- + bpdu.ConfigurationBPDUs._PACK_STR[1:]
- + bpdu.RstBPDUs._PACK_STR[1:])
- self.buf = struct.pack(self.fmt,
- self.protocol_id, self.version_id,
- self.bpdu_type, self.flags,
- bpdu.RstBPDUs.encode_bridge_id(
- self.root_priority,
- self.root_system_id_extension,
- self.root_mac_address),
- self.root_path_cost,
- bpdu.RstBPDUs.encode_bridge_id(
- self.bridge_priority,
- self.bridge_system_id_extension,
- self.bridge_mac_address),
- bpdu.RstBPDUs.encode_port_id(
- self.port_priority,
- self.port_number),
- bpdu.RstBPDUs._encode_timer(self.message_age),
- bpdu.RstBPDUs._encode_timer(self.max_age),
- bpdu.RstBPDUs._encode_timer(self.hello_time),
- bpdu.RstBPDUs._encode_timer(self.forward_delay),
- self.version_1_length)
-
- def test_parser(self):
- r1, r2, _ = bpdu.bpdu.parser(self.buf)
- eq_(r1, self.buf)
- eq_(r2, None)
-
-
-class Test_UnknownType(unittest.TestCase):
- """ Test case for unknown BPDU type
- """
-
- def setUp(self):
- self.protocol_id = bpdu.PROTOCOL_IDENTIFIER
- self.version_id = bpdu.RstBPDUs.VERSION_ID
- self.bpdu_type = 222 # Unknown type
- self.flags = 0b01111110
- self.root_priority = 4096
- self.root_system_id_extension = 1
- self.root_mac_address = '12:34:56:78:9a:bc'
- self.root_path_cost = 2
- self.bridge_priority = 8192
- self.bridge_system_id_extension = 3
- self.bridge_mac_address = 'aa:aa:aa:aa:aa:aa'
- self.port_priority = 16
- self.port_number = 4
- self.message_age = 5
- self.max_age = 6
- self.hello_time = 7
- self.forward_delay = 8
- self.version_1_length = bpdu.VERSION_1_LENGTH
-
- self.fmt = (bpdu.bpdu._PACK_STR
- + bpdu.ConfigurationBPDUs._PACK_STR[1:]
- + bpdu.RstBPDUs._PACK_STR[1:])
- self.buf = struct.pack(self.fmt,
- self.protocol_id, self.version_id,
- self.bpdu_type, self.flags,
- bpdu.RstBPDUs.encode_bridge_id(
- self.root_priority,
- self.root_system_id_extension,
- self.root_mac_address),
- self.root_path_cost,
- bpdu.RstBPDUs.encode_bridge_id(
- self.bridge_priority,
- self.bridge_system_id_extension,
- self.bridge_mac_address),
- bpdu.RstBPDUs.encode_port_id(
- self.port_priority,
- self.port_number),
- bpdu.RstBPDUs._encode_timer(self.message_age),
- bpdu.RstBPDUs._encode_timer(self.max_age),
- bpdu.RstBPDUs._encode_timer(self.hello_time),
- bpdu.RstBPDUs._encode_timer(self.forward_delay),
- self.version_1_length)
-
- def test_parser(self):
- r1, r2, _ = bpdu.bpdu.parser(self.buf)
- eq_(r1, self.buf)
- eq_(r2, None)
diff --git a/tests/unit/packet/test_cfm.py b/tests/unit/packet/test_cfm.py
deleted file mode 100644
index fb0749d7..00000000
--- a/tests/unit/packet/test_cfm.py
+++ /dev/null
@@ -1,1761 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import unittest
-import logging
-import inspect
-import six
-import struct
-
-from nose.tools import *
-from ryu.lib import addrconv
-from ryu.lib.packet import cfm
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_cfm(unittest.TestCase):
-
- def setUp(self):
- self.message = cfm.cc_message()
- self.ins = cfm.cfm(self.message)
- data = bytearray()
- prev = None
- self.buf = self.ins.serialize(data, prev)
-
- def setUp_cc_message(self):
- self.cc_message_md_lv = 1
- self.cc_message_version = 1
- self.cc_message_rdi = 1
- self.cc_message_interval = 1
- self.cc_message_seq_num = 123
- self.cc_message_mep_id = 4
- self.cc_message_md_name_format = 4
- self.cc_message_md_name_length = 0
- self.cc_message_md_name = b"hoge"
- self.cc_message_short_ma_name_format = 2
- self.cc_message_short_ma_name_length = 0
- self.cc_message_short_ma_name = b"pakeratta"
- self.cc_message_md_name_txfcf = 11
- self.cc_message_md_name_rxfcb = 22
- self.cc_message_md_name_txfcb = 33
- self.cc_message_tlvs = [
- cfm.sender_id_tlv(),
- cfm.port_status_tlv(),
- cfm.data_tlv(),
- cfm.interface_status_tlv(),
- cfm.reply_ingress_tlv(),
- cfm.reply_egress_tlv(),
- cfm.ltm_egress_identifier_tlv(),
- cfm.ltr_egress_identifier_tlv(),
- cfm.organization_specific_tlv(),
- ]
- self.message = cfm.cc_message(
- self.cc_message_md_lv,
- self.cc_message_version,
- self.cc_message_rdi,
- self.cc_message_interval,
- self.cc_message_seq_num,
- self.cc_message_mep_id,
- self.cc_message_md_name_format,
- self.cc_message_md_name_length,
- self.cc_message_md_name,
- self.cc_message_short_ma_name_format,
- self.cc_message_short_ma_name_length,
- self.cc_message_short_ma_name,
- self.cc_message_tlvs
- )
- self.ins = cfm.cfm(self.message)
- data = bytearray()
- prev = None
- self.buf = self.ins.serialize(data, prev)
-
- def setUp_loopback_message(self):
- self.loopback_message_md_lv = 1
- self.loopback_message_version = 1
- self.loopback_message_transaction_id = 12345
- self.loopback_message_tlvs = [
- cfm.sender_id_tlv(),
- cfm.port_status_tlv(),
- cfm.data_tlv(),
- cfm.interface_status_tlv(),
- cfm.reply_ingress_tlv(),
- cfm.reply_egress_tlv(),
- cfm.ltm_egress_identifier_tlv(),
- cfm.ltr_egress_identifier_tlv(),
- cfm.organization_specific_tlv(),
- ]
- self.message = cfm.loopback_message(
- self.loopback_message_md_lv,
- self.loopback_message_version,
- self.loopback_message_transaction_id,
- self.loopback_message_tlvs)
- self.ins = cfm.cfm(self.message)
- data = bytearray()
- prev = None
- self.buf = self.ins.serialize(data, prev)
-
- def setUp_loopback_reply(self):
- self.loopback_reply_md_lv = 1
- self.loopback_reply_version = 1
- self.loopback_reply_transaction_id = 12345
- self.loopback_reply_tlvs = [
- cfm.sender_id_tlv(),
- cfm.port_status_tlv(),
- cfm.data_tlv(),
- cfm.interface_status_tlv(),
- cfm.reply_ingress_tlv(),
- cfm.reply_egress_tlv(),
- cfm.ltm_egress_identifier_tlv(),
- cfm.ltr_egress_identifier_tlv(),
- cfm.organization_specific_tlv(),
- ]
- self.message = cfm.loopback_reply(
- self.loopback_reply_md_lv,
- self.loopback_reply_version,
- self.loopback_reply_transaction_id,
- self.loopback_reply_tlvs)
- self.ins = cfm.cfm(self.message)
- data = bytearray()
- prev = None
- self.buf = self.ins.serialize(data, prev)
-
- def setUp_link_trace_message(self):
- self.link_trace_message_md_lv = 1
- self.link_trace_message_version = 1
- self.link_trace_message_use_fdb_only = 1
- self.link_trace_message_transaction_id = 12345
- self.link_trace_message_ttl = 123
- self.link_trace_message_ltm_orig_addr = '11:22:33:44:55:66'
- self.link_trace_message_ltm_targ_addr = '77:88:99:aa:cc:dd'
- self.link_trace_message_tlvs = [
- cfm.sender_id_tlv(),
- cfm.port_status_tlv(),
- cfm.data_tlv(),
- cfm.interface_status_tlv(),
- cfm.reply_ingress_tlv(),
- cfm.reply_egress_tlv(),
- cfm.ltm_egress_identifier_tlv(),
- cfm.ltr_egress_identifier_tlv(),
- cfm.organization_specific_tlv(),
- ]
- self.message = cfm.link_trace_message(
- self.link_trace_message_md_lv,
- self.link_trace_message_version,
- self.link_trace_message_use_fdb_only,
- self.link_trace_message_transaction_id,
- self.link_trace_message_ttl,
- self.link_trace_message_ltm_orig_addr,
- self.link_trace_message_ltm_targ_addr,
- self.link_trace_message_tlvs)
- self.ins = cfm.cfm(self.message)
- data = bytearray()
- prev = None
- self.buf = self.ins.serialize(data, prev)
-
- def setUp_link_trace_reply(self):
- self.link_trace_reply_md_lv = 1
- self.link_trace_reply_version = 1
- self.link_trace_reply_use_fdb_only = 1
- self.link_trace_reply_fwd_yes = 0
- self.link_trace_reply_terminal_mep = 1
- self.link_trace_reply_transaction_id = 5432
- self.link_trace_reply_ttl = 123
- self.link_trace_reply_relay_action = 3
- self.link_trace_reply_tlvs = [
- cfm.sender_id_tlv(),
- cfm.port_status_tlv(),
- cfm.data_tlv(),
- cfm.interface_status_tlv(),
- cfm.reply_ingress_tlv(),
- cfm.reply_egress_tlv(),
- cfm.ltm_egress_identifier_tlv(),
- cfm.ltr_egress_identifier_tlv(),
- cfm.organization_specific_tlv(),
- ]
- self.message = cfm.link_trace_reply(
- self.link_trace_reply_md_lv,
- self.link_trace_reply_version,
- self.link_trace_reply_use_fdb_only,
- self.link_trace_reply_fwd_yes,
- self.link_trace_reply_terminal_mep,
- self.link_trace_reply_transaction_id,
- self.link_trace_reply_ttl,
- self.link_trace_reply_relay_action,
- self.link_trace_reply_tlvs)
- self.ins = cfm.cfm(self.message)
- data = bytearray()
- prev = None
- self.buf = self.ins.serialize(data, prev)
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(str(self.message), str(self.ins.op))
-
- def test_init_cc_message(self):
- self.setUp_cc_message()
- self.test_init()
-
- def test_init_loopback_message(self):
- self.setUp_loopback_message()
- self.test_init()
-
- def test_init_loopback_reply(self):
- self.setUp_loopback_reply()
- self.test_init()
-
- def test_init_link_trace_message(self):
- self.setUp_link_trace_message()
- self.test_init()
-
- def test_init_link_trace_reply(self):
- self.setUp_link_trace_reply()
- self.test_init()
-
- def test_parser(self):
- _res = self.ins.parser(six.binary_type(self.buf))
-
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(str(self.message), str(res.op))
-
- def test_parser_with_cc_message(self):
- self.setUp_cc_message()
- self.test_parser()
-
- def test_parser_with_loopback_message(self):
- self.setUp_loopback_message()
- self.test_parser()
-
- def test_parser_with_loopback_reply(self):
- self.setUp_loopback_reply()
- self.test_parser()
-
- def test_parser_with_link_trace_message(self):
- self.setUp_link_trace_message()
- self.test_parser()
-
- def test_parser_with_link_trace_reply(self):
- self.setUp_link_trace_reply()
- self.test_parser()
-
- def test_serialize(self):
- pass
-
- def test_serialize_with_cc_message(self):
- self.setUp_cc_message()
- self.test_serialize()
- data = bytearray()
- prev = None
- buf = self.ins.serialize(data, prev)
- cc_message = cfm.cc_message.parser(six.binary_type(buf))
- eq_(repr(self.message), repr(cc_message))
-
- def test_serialize_with_loopback_message(self):
- self.setUp_loopback_message()
- self.test_serialize()
- data = bytearray()
- prev = None
- buf = self.ins.serialize(data, prev)
- loopback_message = cfm.loopback_message.parser(six.binary_type(buf))
- eq_(repr(self.message), repr(loopback_message))
-
- def test_serialize_with_loopback_reply(self):
- self.setUp_loopback_reply()
- self.test_serialize()
- data = bytearray()
- prev = None
- buf = self.ins.serialize(data, prev)
- loopback_reply = cfm.loopback_reply.parser(six.binary_type(buf))
- eq_(repr(self.message), repr(loopback_reply))
-
- def test_serialize_with_link_trace_message(self):
- self.setUp_link_trace_message()
- self.test_serialize()
- data = bytearray()
- prev = None
- buf = self.ins.serialize(data, prev)
- link_trace_message = cfm.link_trace_message.parser(six.binary_type(buf))
- eq_(repr(self.message), repr(link_trace_message))
-
- def test_serialize_with_link_trace_reply(self):
- self.setUp_link_trace_reply()
- self.test_serialize()
- data = bytearray()
- prev = None
- buf = self.ins.serialize(data, prev)
- link_trace_reply = cfm.link_trace_reply.parser(six.binary_type(buf))
- eq_(repr(self.message), repr(link_trace_reply))
-
- def test_to_string(self):
- cfm_values = {'op': self.message}
- _cfm_str = ','.join(['%s=%s' % (k, cfm_values[k])
- for k, v in inspect.getmembers(self.ins)
- if k in cfm_values])
- cfm_str = '%s(%s)' % (cfm.cfm.__name__, _cfm_str)
- eq_(str(self.ins), cfm_str)
- eq_(repr(self.ins), cfm_str)
-
- def test_to_string_cc_message(self):
- self.setUp_cc_message()
- self.test_to_string()
-
- def test_to_string_loopback_message(self):
- self.setUp_loopback_message()
- self.test_to_string()
-
- def test_to_string_loopback_reply(self):
- self.setUp_loopback_reply()
- self.test_to_string()
-
- def test_to_string_link_trace_message(self):
- self.setUp_link_trace_message()
- self.test_to_string()
-
- def test_to_string_link_trace_reply(self):
- self.setUp_link_trace_reply()
- self.test_to_string()
-
- def test_len(self):
- pass
-
- def test_len_cc_message(self):
- self.setUp_cc_message()
- eq_(len(self.ins), 0 + len(self.message))
-
- def test_len_loopback_message(self):
- self.setUp_loopback_message()
- eq_(len(self.ins), 0 + len(self.message))
-
- def test_len_loopback_reply(self):
- self.setUp_loopback_reply()
- eq_(len(self.ins), 0 + len(self.message))
-
- def test_len_link_trace_message(self):
- self.setUp_link_trace_message()
- eq_(len(self.ins), 0 + len(self.message))
-
- def test_len_link_trace_reply(self):
- self.setUp_link_trace_reply()
- eq_(len(self.ins), 0 + len(self.message))
-
- def test_default_args(self):
- pass
-
- def test_json(self):
- jsondict = self.ins.to_jsondict()
- ins = cfm.cfm.from_jsondict(jsondict['cfm'])
- eq_(str(self.ins), str(ins))
-
- def test_json_with_cc_message(self):
- self.setUp_cc_message()
- self.test_json()
-
- def test_json_with_loopback_message(self):
- self.setUp_loopback_message()
- self.test_json()
-
- def test_json_with_loopback_reply(self):
- self.setUp_loopback_reply()
- self.test_json()
-
- def test_json_with_link_trace_message(self):
- self.setUp_link_trace_message()
- self.test_json()
-
- def test_json_with_link_trace_reply(self):
- self.setUp_link_trace_reply()
- self.test_json()
-
-
-class Test_cc_message(unittest.TestCase):
-
- def setUp(self):
- self.md_lv = 1
- self.version = 1
- self.opcode = cfm.CFM_CC_MESSAGE
- self.rdi = 1
- self.interval = 5
- self.first_tlv_offset = cfm.cc_message._TLV_OFFSET
- self.seq_num = 2
- self.mep_id = 2
- self.md_name_format = cfm.cc_message._MD_FMT_CHARACTER_STRING
- self.md_name_length = 3
- self.md_name = b"foo"
- self.short_ma_name_format = 2
- self.short_ma_name_length = 8
- self.short_ma_name = b"hogehoge"
- self.tlvs = [
- ]
- self.end_tlv = 0
- self.ins = cfm.cc_message(
- self.md_lv,
- self.version,
- self.rdi,
- self.interval,
- self.seq_num,
- self.mep_id,
- self.md_name_format,
- self.md_name_length,
- self.md_name,
- self.short_ma_name_format,
- self.short_ma_name_length,
- self.short_ma_name,
- self.tlvs
- )
-
- self.form = '!4BIH2B3s2B8s33x12x4xB'
- self.buf = struct.pack(
- self.form,
- (self.md_lv << 5) | self.version,
- self.opcode,
- (self.rdi << 7) | self.interval,
- self.first_tlv_offset,
- self.seq_num,
- self.mep_id,
- self.md_name_format,
- self.md_name_length,
- self.md_name,
- self.short_ma_name_format,
- self.short_ma_name_length,
- self.short_ma_name,
- self.end_tlv
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.md_lv, self.ins.md_lv)
- eq_(self.version, self.ins.version)
- eq_(self.rdi, self.ins.rdi)
- eq_(self.interval, self.ins.interval)
- eq_(self.seq_num, self.ins.seq_num)
- eq_(self.mep_id, self.ins.mep_id)
- eq_(self.md_name_format, self.ins.md_name_format)
- eq_(self.md_name_length, self.ins.md_name_length)
- eq_(self.md_name, self.ins.md_name)
- eq_(self.short_ma_name_format, self.ins.short_ma_name_format)
- eq_(self.short_ma_name_length, self.ins.short_ma_name_length)
- eq_(self.short_ma_name, self.ins.short_ma_name)
- eq_(self.tlvs, self.ins.tlvs)
-
- def test_parser(self):
- _res = cfm.cc_message.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.md_lv, res.md_lv)
- eq_(self.version, res.version)
- eq_(self.rdi, res.rdi)
- eq_(self.interval, res.interval)
- eq_(self.seq_num, res.seq_num)
- eq_(self.mep_id, res.mep_id)
- eq_(self.md_name_format, res.md_name_format)
- eq_(self.md_name_length, res.md_name_length)
- eq_(self.md_name, res.md_name)
- eq_(self.short_ma_name_format, res.short_ma_name_format)
- eq_(self.short_ma_name_length, res.short_ma_name_length)
- eq_(self.short_ma_name, res.short_ma_name)
- eq_(self.tlvs, res.tlvs)
-
- def test_parser_with_no_maintenance_domain_name_present(self):
- form = '!4BIH3B8s37x12x4xB'
- buf = struct.pack(
- form,
- (self.md_lv << 5) | self.version,
- self.opcode,
- (self.rdi << 7) | self.interval,
- self.first_tlv_offset,
- self.seq_num,
- self.mep_id,
- cfm.cc_message._MD_FMT_NO_MD_NAME_PRESENT,
- self.short_ma_name_format,
- self.short_ma_name_length,
- self.short_ma_name,
- self.end_tlv
- )
- _res = cfm.cc_message.parser(buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.md_lv, res.md_lv)
- eq_(self.version, res.version)
- eq_(self.rdi, res.rdi)
- eq_(self.interval, res.interval)
- eq_(self.seq_num, res.seq_num)
- eq_(self.mep_id, res.mep_id)
- eq_(cfm.cc_message._MD_FMT_NO_MD_NAME_PRESENT, res.md_name_format)
- eq_(self.short_ma_name_format, res.short_ma_name_format)
- eq_(self.short_ma_name_length, res.short_ma_name_length)
- eq_(self.short_ma_name, res.short_ma_name)
- eq_(self.tlvs, res.tlvs)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.md_lv, res[0] >> 5)
- eq_(self.version, res[0] & 0x1f)
- eq_(self.opcode, res[1])
- eq_(self.rdi, res[2] >> 7)
- eq_(self.interval, res[2] & 0x07)
- eq_(self.first_tlv_offset, res[3])
- eq_(self.seq_num, res[4])
- eq_(self.mep_id, res[5])
- eq_(self.md_name_format, res[6])
- eq_(self.md_name_length, res[7])
- eq_(self.md_name, res[8])
- eq_(self.short_ma_name_format, res[9])
- eq_(self.short_ma_name_length, res[10])
- eq_(self.short_ma_name, res[11])
- eq_(self.end_tlv, res[12])
-
- def test_serialize_with_md_name_length_zero(self):
- ins = cfm.cc_message(
- self.md_lv,
- self.version,
- self.rdi,
- self.interval,
- self.seq_num,
- self.mep_id,
- self.md_name_format,
- 0,
- self.md_name,
- self.short_ma_name_format,
- 0,
- self.short_ma_name,
- self.tlvs
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.md_lv, res[0] >> 5)
- eq_(self.version, res[0] & 0x1f)
- eq_(self.opcode, res[1])
- eq_(self.rdi, res[2] >> 7)
- eq_(self.interval, res[2] & 0x07)
- eq_(self.first_tlv_offset, res[3])
- eq_(self.seq_num, res[4])
- eq_(self.mep_id, res[5])
- eq_(self.md_name_format, res[6])
- eq_(self.md_name_length, res[7])
- eq_(self.md_name, res[8])
- eq_(self.short_ma_name_format, res[9])
- eq_(self.short_ma_name_length, res[10])
- eq_(self.short_ma_name, res[11])
- eq_(self.end_tlv, res[12])
-
- def test_serialize_with_no_maintenance_domain_name_present(self):
- form = '!4BIH3B8s37x12x4xB'
- ins = cfm.cc_message(
- self.md_lv,
- self.version,
- self.rdi,
- self.interval,
- self.seq_num,
- self.mep_id,
- cfm.cc_message._MD_FMT_NO_MD_NAME_PRESENT,
- 0,
- self.md_name,
- self.short_ma_name_format,
- 0,
- self.short_ma_name,
- self.tlvs
- )
- buf = ins.serialize()
- res = struct.unpack_from(form, six.binary_type(buf))
- eq_(self.md_lv, res[0] >> 5)
- eq_(self.version, res[0] & 0x1f)
- eq_(self.opcode, res[1])
- eq_(self.rdi, res[2] >> 7)
- eq_(self.interval, res[2] & 0x07)
- eq_(self.first_tlv_offset, res[3])
- eq_(self.seq_num, res[4])
- eq_(self.mep_id, res[5])
- eq_(cfm.cc_message._MD_FMT_NO_MD_NAME_PRESENT, res[6])
- eq_(self.short_ma_name_format, res[7])
- eq_(self.short_ma_name_length, res[8])
- eq_(self.short_ma_name, res[9])
- eq_(self.end_tlv, res[10])
-
- def test_len(self):
- # 75 octet (If tlv does not exist)
- eq_(75, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.cc_message()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.cc_message._PACK_STR, six.binary_type(buf))
- eq_(res[0] >> 5, 0)
- eq_(res[0] & 0x1f, 0)
- eq_(res[1], 1)
- eq_(res[2] >> 7, 0)
- eq_(res[2] & 0x07, 4)
- eq_(res[3], 70)
- eq_(res[4], 0)
- eq_(res[5], 1)
- eq_(res[6], 4)
-
-
-class Test_loopback_message(unittest.TestCase):
-
- def setUp(self):
- self.md_lv = 1
- self.version = 1
- self.opcode = cfm.CFM_LOOPBACK_MESSAGE
- self.flags = 0
- self.first_tlv_offset = cfm.loopback_message._TLV_OFFSET
- self.transaction_id = 12345
- self.tlvs = [
- ]
-
- self.end_tlv = 0
- self.ins = cfm.loopback_message(
- self.md_lv,
- self.version,
- self.transaction_id,
- self.tlvs,
- )
- self.form = '!4BIB'
- self.buf = struct.pack(
- self.form,
- (self.md_lv << 5) | self.version,
- self.opcode,
- self.flags,
- self.first_tlv_offset,
- self.transaction_id,
- self.end_tlv
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.md_lv, self.ins.md_lv)
- eq_(self.version, self.ins.version)
- eq_(self.transaction_id, self.ins.transaction_id)
- eq_(self.tlvs, self.ins.tlvs)
-
- def test_parser(self):
- _res = cfm.loopback_message.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.md_lv, res.md_lv)
- eq_(self.version, res.version)
- eq_(self.transaction_id, res.transaction_id)
- eq_(self.tlvs, res.tlvs)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.md_lv, res[0] >> 5)
- eq_(self.version, res[0] & 0x1f)
- eq_(self.opcode, res[1])
- eq_(self.flags, res[2])
- eq_(self.first_tlv_offset, res[3])
- eq_(self.transaction_id, res[4])
- eq_(self.end_tlv, res[5])
-
- def test_len(self):
- # 9 octet (If tlv does not exist)
- eq_(9, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.loopback_message()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.loopback_message._PACK_STR,
- six.binary_type(buf))
- eq_(res[0] >> 5, 0)
- eq_(res[0] & 0x1f, 0)
- eq_(res[1], 3)
- eq_(res[2], 0)
- eq_(res[3], 4)
- eq_(res[4], 0)
-
-
-class Test_loopback_reply(unittest.TestCase):
-
- def setUp(self):
- self.md_lv = 1
- self.version = 1
- self.opcode = cfm.CFM_LOOPBACK_REPLY
- self.flags = 0
- self.first_tlv_offset = cfm.loopback_reply._TLV_OFFSET
- self.transaction_id = 12345
- self.tlvs = [
- ]
- self.end_tlv = 0
- self.ins = cfm.loopback_reply(
- self.md_lv,
- self.version,
- self.transaction_id,
- self.tlvs,
- )
- self.form = '!4BIB'
- self.buf = struct.pack(
- self.form,
- (self.md_lv << 5) | self.version,
- self.opcode,
- self.flags,
- self.first_tlv_offset,
- self.transaction_id,
- self.end_tlv
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.md_lv, self.ins.md_lv)
- eq_(self.version, self.ins.version)
- eq_(self.transaction_id, self.ins.transaction_id)
- eq_(self.tlvs, self.ins.tlvs)
-
- def test_parser(self):
- _res = cfm.loopback_reply.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.md_lv, res.md_lv)
- eq_(self.version, res.version)
- eq_(self.transaction_id, res.transaction_id)
- eq_(self.tlvs, res.tlvs)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.md_lv, res[0] >> 5)
- eq_(self.version, res[0] & 0x1f)
- eq_(self.opcode, res[1])
- eq_(self.flags, res[2])
- eq_(self.first_tlv_offset, res[3])
- eq_(self.transaction_id, res[4])
- eq_(self.end_tlv, res[5])
-
- def test_len(self):
- # 9 octet (If tlv does not exist)
- eq_(9, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.loopback_reply()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.loopback_reply._PACK_STR, six.binary_type(buf))
- eq_(res[0] >> 5, 0)
- eq_(res[0] & 0x1f, 0)
- eq_(res[1], 2)
- eq_(res[2], 0)
- eq_(res[3], 4)
- eq_(res[4], 0)
-
-
-class Test_link_trace_message(unittest.TestCase):
-
- def setUp(self):
- self.md_lv = 1
- self.version = 1
- self.opcode = cfm.CFM_LINK_TRACE_MESSAGE
- self.use_fdb_only = 1
- self.first_tlv_offset = cfm.link_trace_message._TLV_OFFSET
- self.transaction_id = 12345
- self.ttl = 55
- self.ltm_orig_addr = "00:11:22:44:55:66"
- self.ltm_targ_addr = "ab:cd:ef:23:12:65"
- self.tlvs = [
- ]
-
- self.end_tlv = 0
- self.ins = cfm.link_trace_message(
- self.md_lv,
- self.version,
- self.use_fdb_only,
- self.transaction_id,
- self.ttl,
- self.ltm_orig_addr,
- self.ltm_targ_addr,
- self.tlvs
- )
- self.form = '!4BIB6s6sB'
- self.buf = struct.pack(
- self.form,
- (self.md_lv << 5) | self.version,
- self.opcode,
- self.use_fdb_only << 7,
- self.first_tlv_offset,
- self.transaction_id,
- self.ttl,
- addrconv.mac.text_to_bin(self.ltm_orig_addr),
- addrconv.mac.text_to_bin(self.ltm_targ_addr),
- self.end_tlv
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.md_lv, self.ins.md_lv)
- eq_(self.version, self.ins.version)
- eq_(self.use_fdb_only, self.ins.use_fdb_only)
- eq_(self.transaction_id, self.ins.transaction_id)
- eq_(self.ttl, self.ins.ttl)
- eq_(self.ltm_orig_addr, self.ins.ltm_orig_addr)
- eq_(self.ltm_targ_addr, self.ins.ltm_targ_addr)
- eq_(self.tlvs, self.ins.tlvs)
-
- def test_parser(self):
- _res = cfm.link_trace_message.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.md_lv, res.md_lv)
- eq_(self.version, res.version)
- eq_(self.use_fdb_only, res.use_fdb_only)
- eq_(self.transaction_id, res.transaction_id)
- eq_(self.ttl, res.ttl)
- eq_(self.ltm_orig_addr, res.ltm_orig_addr)
- eq_(self.ltm_targ_addr, res.ltm_targ_addr)
- eq_(self.tlvs, res.tlvs)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.md_lv, res[0] >> 5)
- eq_(self.version, res[0] & 0x1f)
- eq_(self.opcode, res[1])
- eq_(self.use_fdb_only, res[2] >> 7)
- eq_(self.first_tlv_offset, res[3])
- eq_(self.transaction_id, res[4])
- eq_(self.ttl, res[5])
- eq_(addrconv.mac.text_to_bin(self.ltm_orig_addr), res[6])
- eq_(addrconv.mac.text_to_bin(self.ltm_targ_addr), res[7])
- eq_(self.end_tlv, res[8])
-
- def test_len(self):
- # 22 octet (If tlv does not exist)
- eq_(22, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.link_trace_message()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.link_trace_message._PACK_STR, six.binary_type(buf))
- eq_(res[0] >> 5, 0)
- eq_(res[0] & 0x1f, 0)
- eq_(res[1], 5)
- eq_(res[2] >> 7, 1)
- eq_(res[3], 17)
- eq_(res[4], 0)
- eq_(res[5], 64)
- eq_(res[6], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
- eq_(res[7], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
-
-class Test_link_trace_reply(unittest.TestCase):
-
- def setUp(self):
- self.md_lv = 1
- self.version = 1
- self.opcode = cfm.CFM_LINK_TRACE_REPLY
- self.use_fdb_only = 1
- self.fwd_yes = 0
- self.terminal_mep = 1
- self.first_tlv_offset = cfm.link_trace_reply._TLV_OFFSET
- self.transaction_id = 12345
- self.ttl = 55
- self.relay_action = 2
- self.ltm_orig_addr = "00:11:22:aa:bb:cc"
- self.ltm_targ_addr = "53:45:24:64:ac:ff"
- self.tlvs = [
- ]
- self.end_tlv = 0
- self.ins = cfm.link_trace_reply(
- self.md_lv,
- self.version,
- self.use_fdb_only,
- self.fwd_yes,
- self.terminal_mep,
- self.transaction_id,
- self.ttl,
- self.relay_action,
- self.tlvs,
- )
- self.form = '!4BIBBB'
- self.buf = struct.pack(
- self.form,
- (self.md_lv << 5) | self.version,
- self.opcode,
- (self.use_fdb_only << 7) | (self.fwd_yes << 6) |
- (self.terminal_mep << 5),
- self.first_tlv_offset,
- self.transaction_id,
- self.ttl,
- self.relay_action,
- self.end_tlv
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.md_lv, self.ins.md_lv)
- eq_(self.version, self.ins.version)
- eq_(self.use_fdb_only, self.ins.use_fdb_only)
- eq_(self.fwd_yes, self.ins.fwd_yes)
- eq_(self.terminal_mep, self.ins.terminal_mep)
- eq_(self.transaction_id, self.ins.transaction_id)
- eq_(self.ttl, self.ins.ttl)
- eq_(self.relay_action, self.ins.relay_action)
- eq_(self.tlvs, self.ins.tlvs)
-
- def test_parser(self):
- _res = cfm.link_trace_reply.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.md_lv, res.md_lv)
- eq_(self.version, res.version)
- eq_(self.use_fdb_only, self.ins.use_fdb_only)
- eq_(self.fwd_yes, self.ins.fwd_yes)
- eq_(self.terminal_mep, self.ins.terminal_mep)
- eq_(self.transaction_id, res.transaction_id)
- eq_(self.ttl, res.ttl)
- eq_(self.relay_action, res.relay_action)
- eq_(self.tlvs, res.tlvs)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.md_lv, res[0] >> 5)
- eq_(self.version, res[0] & 0x1f)
- eq_(self.opcode, res[1])
- eq_(self.use_fdb_only, res[2] >> 7 & 0x01)
- eq_(self.fwd_yes, res[2] >> 6 & 0x01)
- eq_(self.terminal_mep, res[2] >> 5 & 0x01)
- eq_(self.first_tlv_offset, res[3])
- eq_(self.transaction_id, res[4])
- eq_(self.ttl, res[5])
- eq_(self.relay_action, res[6])
- eq_(self.end_tlv, res[7])
-
- def test_len(self):
- # 11 octet (If tlv does not exist)
- eq_(11, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.link_trace_reply()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.link_trace_reply._PACK_STR, six.binary_type(buf))
- eq_(res[0] >> 5, 0)
- eq_(res[0] & 0x1f, 0)
- eq_(res[1], 4)
- eq_(res[2] >> 7, 1)
- eq_(res[2] >> 6 & 0x01, 0)
- eq_(res[2] >> 5 & 0x01, 1)
- eq_(res[3], 6)
- eq_(res[4], 0)
- eq_(res[5], 64)
- eq_(res[6], 1)
-
-
-class Test_sender_id_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_SENDER_ID_TLV
- self.length = 10
- self.chassis_id_length = 1
- self.chassis_id_subtype = 3
- self.chassis_id = b"\x0a"
- self.ma_domain_length = 2
- self.ma_domain = b"\x04\x05"
- self.ma_length = 3
- self.ma = b"\x01\x02\x03"
- self.ins = cfm.sender_id_tlv(
- self.length,
- self.chassis_id_length,
- self.chassis_id_subtype,
- self.chassis_id,
- self.ma_domain_length,
- self.ma_domain,
- self.ma_length,
- self.ma,
- )
- self.form = '!BHBB1sB2sB3s'
- self.buf = struct.pack(
- self.form,
- self._type,
- self.length,
- self.chassis_id_length,
- self.chassis_id_subtype,
- self.chassis_id,
- self.ma_domain_length,
- self.ma_domain,
- self.ma_length,
- self.ma
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.chassis_id_length, self.ins.chassis_id_length)
- eq_(self.chassis_id_subtype, self.ins.chassis_id_subtype)
- eq_(self.chassis_id, self.ins.chassis_id)
- eq_(self.ma_domain_length, self.ins.ma_domain_length)
- eq_(self.ma_domain, self.ins.ma_domain)
- eq_(self.ma_length, self.ins.ma_length)
- eq_(self.ma, self.ins.ma)
-
- def test_parser(self):
- _res = cfm.sender_id_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.chassis_id_length, res.chassis_id_length)
- eq_(self.chassis_id_subtype, res.chassis_id_subtype)
- eq_(self.chassis_id, res.chassis_id)
- eq_(self.ma_domain_length, res.ma_domain_length)
- eq_(self.ma_domain, res.ma_domain)
- eq_(self.ma_length, res.ma_length)
- eq_(self.ma, res.ma)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.chassis_id_length, res[2])
- eq_(self.chassis_id_subtype, res[3])
- eq_(self.chassis_id, res[4])
- eq_(self.ma_domain_length, res[5])
- eq_(self.ma_domain, res[6])
- eq_(self.ma_length, res[7])
- eq_(self.ma, res[8])
-
- def test_serialize_semi_normal_ptn1(self):
- ins = cfm.sender_id_tlv(
- chassis_id_subtype=self.chassis_id_subtype,
- chassis_id=self.chassis_id,
- ma_domain=self.ma_domain,
- )
- buf = ins.serialize()
- form = '!BHBB1sB2sB'
- res = struct.unpack_from(form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(7, res[1])
- eq_(self.chassis_id_length, res[2])
- eq_(self.chassis_id_subtype, res[3])
- eq_(self.chassis_id, res[4])
- eq_(self.ma_domain_length, res[5])
- eq_(self.ma_domain, res[6])
- eq_(0, res[7])
-
- def test_serialize_semi_normal_ptn2(self):
- ins = cfm.sender_id_tlv(
- ma_domain=self.ma_domain,
- ma=self.ma,
- )
- buf = ins.serialize()
- form = '!BHBB2sB3s'
- res = struct.unpack_from(form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(8, res[1])
- eq_(0, res[2])
- eq_(self.ma_domain_length, res[3])
- eq_(self.ma_domain, res[4])
- eq_(self.ma_length, res[5])
- eq_(self.ma, res[6])
-
- def test_serialize_semi_normal_ptn3(self):
- ins = cfm.sender_id_tlv(
- chassis_id_subtype=self.chassis_id_subtype,
- chassis_id=self.chassis_id,
- )
- buf = ins.serialize()
- form = '!BHBB1sB'
- res = struct.unpack_from(form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(4, res[1])
- eq_(self.chassis_id_length, res[2])
- eq_(self.chassis_id_subtype, res[3])
- eq_(self.chassis_id, res[4])
- eq_(0, res[5])
-
- def test_serialize_semi_normal_ptn4(self):
- ins = cfm.sender_id_tlv(
- ma_domain=self.ma_domain,
- )
- buf = ins.serialize()
- form = '!BHBB2sB'
- res = struct.unpack_from(form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(5, res[1])
- eq_(0, res[2])
- eq_(self.ma_domain_length, res[3])
- eq_(self.ma_domain, res[4])
- eq_(0, res[5])
-
- def test_serialize_with_length_zero(self):
- ins = cfm.sender_id_tlv(
- 0,
- 0,
- self.chassis_id_subtype,
- self.chassis_id,
- 0,
- self.ma_domain,
- 0,
- self.ma,
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.chassis_id_length, res[2])
- eq_(self.chassis_id_subtype, res[3])
- eq_(self.chassis_id, res[4])
- eq_(self.ma_domain_length, res[5])
- eq_(self.ma_domain, res[6])
- eq_(self.ma_length, res[7])
- eq_(self.ma, res[8])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 10, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.sender_id_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.sender_id_tlv._PACK_STR, six.binary_type(buf))
- eq_(res[0], cfm.CFM_SENDER_ID_TLV)
- eq_(res[1], 1)
- eq_(res[2], 0)
-
-
-class Test_port_status_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_PORT_STATUS_TLV
- self.length = 1
- self.port_status = 1
- self.ins = cfm.port_status_tlv(
- self.length,
- self.port_status
- )
- self.form = '!BHB'
- self.buf = struct.pack(
- self.form,
- self._type,
- self.length,
- self.port_status
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.port_status, self.ins.port_status)
-
- def test_parser(self):
- _res = cfm.port_status_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.port_status, res.port_status)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.port_status, res[2])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 1, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.port_status_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.port_status_tlv._PACK_STR, six.binary_type(buf))
- eq_(res[0], cfm.CFM_PORT_STATUS_TLV)
- eq_(res[1], 1)
- eq_(res[2], 2)
-
-
-class Test_data_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_DATA_TLV
- self.length = 3
- self.data_value = b"\x01\x02\x03"
- self.ins = cfm.data_tlv(
- self.length,
- self.data_value
- )
- self.form = '!BH3s'
- self.buf = struct.pack(
- self.form,
- self._type,
- self.length,
- self.data_value,
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.data_value, self.ins.data_value)
-
- def test_parser(self):
- _res = cfm.data_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.data_value, res.data_value)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.data_value, res[2])
-
- def test_serialize_with_length_zero(self):
- ins = cfm.data_tlv(
- 0,
- self.data_value
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.data_value, res[2])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 3, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.data_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.data_tlv._PACK_STR, six.binary_type(buf))
- eq_(res[0], cfm.CFM_DATA_TLV)
- eq_(res[1], 0)
-
-
-class Test_interface_status_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_INTERFACE_STATUS_TLV
- self.length = 1
- self.interface_status = 4
- self.ins = cfm.interface_status_tlv(
- self.length,
- self.interface_status
- )
- self.form = '!BHB'
- self.buf = struct.pack(
- self.form,
- self._type,
- self.length,
- self.interface_status
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.interface_status, self.ins.interface_status)
-
- def test_parser(self):
- _res = cfm.interface_status_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.interface_status, res.interface_status)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.interface_status, res[2])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 1, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.interface_status_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.interface_status_tlv._PACK_STR, six.binary_type(buf))
- eq_(res[0], cfm.CFM_INTERFACE_STATUS_TLV)
- eq_(res[1], 1)
- eq_(res[2], 1)
-
-
-class Test_ltm_egress_identifier_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_LTM_EGRESS_IDENTIFIER_TLV
- self.length = 8
- self.egress_id_ui = 7
- self.egress_id_mac = "11:22:33:44:55:66"
- self.ins = cfm.ltm_egress_identifier_tlv(
- self.length,
- self.egress_id_ui,
- self.egress_id_mac
- )
- self.form = '!BHH6s'
- self.buf = struct.pack(
- self.form,
- self._type,
- self.length,
- self.egress_id_ui,
- addrconv.mac.text_to_bin(self.egress_id_mac)
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.egress_id_ui, self.ins.egress_id_ui)
- eq_(self.egress_id_mac, self.ins.egress_id_mac)
-
- def test_parser(self):
- _res = cfm.ltm_egress_identifier_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.egress_id_ui, res.egress_id_ui)
- eq_(self.egress_id_mac, res.egress_id_mac)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.egress_id_ui, res[2])
- eq_(addrconv.mac.text_to_bin(self.egress_id_mac), res[3])
-
- def test_serialize_with_length_zero(self):
- ins = cfm.ltm_egress_identifier_tlv(
- 0,
- self.egress_id_ui,
- self.egress_id_mac
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.egress_id_ui, res[2])
- eq_(addrconv.mac.text_to_bin(self.egress_id_mac), res[3])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 8, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.ltm_egress_identifier_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(
- cfm.ltm_egress_identifier_tlv._PACK_STR, six.binary_type(buf))
- eq_(res[0], cfm.CFM_LTM_EGRESS_IDENTIFIER_TLV)
- eq_(res[1], 8)
- eq_(res[2], 0)
- eq_(res[3], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
-
-class Test_ltr_egress_identifier_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_LTR_EGRESS_IDENTIFIER_TLV
- self.length = 16
- self.last_egress_id_ui = 7
- self.last_egress_id_mac = "11:22:33:44:55:66"
- self.next_egress_id_ui = 5
- self.next_egress_id_mac = "33:11:33:aa:bb:cc"
- self.ins = cfm.ltr_egress_identifier_tlv(self.length,
- self.last_egress_id_ui,
- self.last_egress_id_mac,
- self.next_egress_id_ui,
- self.next_egress_id_mac
- )
- self.form = '!BHH6sH6s'
- self.buf = struct.pack(
- self.form,
- self._type,
- self.length,
- self.last_egress_id_ui,
- addrconv.mac.text_to_bin(self.last_egress_id_mac),
- self.next_egress_id_ui,
- addrconv.mac.text_to_bin(self.next_egress_id_mac))
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.last_egress_id_ui, self.ins.last_egress_id_ui)
- eq_(self.last_egress_id_mac, self.ins.last_egress_id_mac)
- eq_(self.next_egress_id_ui, self.ins.next_egress_id_ui)
- eq_(self.next_egress_id_mac, self.ins.next_egress_id_mac)
-
- def test_parser(self):
- _res = cfm.ltr_egress_identifier_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.last_egress_id_ui, res.last_egress_id_ui)
- eq_(self.last_egress_id_mac, res.last_egress_id_mac)
- eq_(self.next_egress_id_ui, res.next_egress_id_ui)
- eq_(self.next_egress_id_mac, res.next_egress_id_mac)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.last_egress_id_ui, res[2])
- eq_(addrconv.mac.text_to_bin(self.last_egress_id_mac), res[3])
- eq_(self.next_egress_id_ui, res[4])
- eq_(addrconv.mac.text_to_bin(self.next_egress_id_mac), res[5])
-
- def test_serialize_with_length_zero(self):
- ins = cfm.ltr_egress_identifier_tlv(0,
- self.last_egress_id_ui,
- self.last_egress_id_mac,
- self.next_egress_id_ui,
- self.next_egress_id_mac
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.last_egress_id_ui, res[2])
- eq_(addrconv.mac.text_to_bin(self.last_egress_id_mac), res[3])
- eq_(self.next_egress_id_ui, res[4])
- eq_(addrconv.mac.text_to_bin(self.next_egress_id_mac), res[5])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 16, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.ltr_egress_identifier_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.ltr_egress_identifier_tlv._PACK_STR,
- six.binary_type(buf))
- eq_(res[0], cfm.CFM_LTR_EGRESS_IDENTIFIER_TLV)
- eq_(res[1], 16)
- eq_(res[2], 0)
- eq_(res[3], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
- eq_(res[4], 0)
- eq_(res[5], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
-
-class Test_organization_specific_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_ORGANIZATION_SPECIFIC_TLV
- self.length = 10
- self.oui = b"\xff\x12\x34"
- self.subtype = 3
- self.value = b"\x01\x02\x0f\x0e\x0d\x0c"
- self.ins = cfm.organization_specific_tlv(self.length,
- self.oui,
- self.subtype,
- self.value
- )
- self.form = '!BH3sB6s'
- self.buf = struct.pack(self.form,
- self._type,
- self.length,
- self.oui,
- self.subtype,
- self.value
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.oui, self.ins.oui)
- eq_(self.subtype, self.ins.subtype)
- eq_(self.value, self.ins.value)
-
- def test_parser(self):
- _res = cfm.organization_specific_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.oui, res.oui)
- eq_(self.subtype, res.subtype)
- eq_(self.value, res.value)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.oui, res[2])
- eq_(self.subtype, res[3])
- eq_(self.value, res[4])
-
- def test_serialize_with_zero(self):
- ins = cfm.organization_specific_tlv(0,
- self.oui,
- self.subtype,
- self.value
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.oui, res[2])
- eq_(self.subtype, res[3])
- eq_(self.value, res[4])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 10, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.organization_specific_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.organization_specific_tlv._PACK_STR,
- six.binary_type(buf))
- eq_(res[0], cfm.CFM_ORGANIZATION_SPECIFIC_TLV)
- eq_(res[1], 4)
- eq_(res[2], b"\x00\x00\x00")
- eq_(res[3], 0)
-
-
-class Test_reply_ingress_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_REPLY_INGRESS_TLV
- self.length = 12
- self.action = 2
- self.mac_address = 'aa:bb:cc:56:34:12'
- self.port_id_length = 3
- self.port_id_subtype = 2
- self.port_id = b"\x01\x04\x09"
- self.ins = cfm.reply_ingress_tlv(self.length, self.action,
- self.mac_address,
- self.port_id_length,
- self.port_id_subtype,
- self.port_id
- )
- self.form = '!BHB6sBB3s'
- self.buf = struct.pack(self.form,
- self._type,
- self.length,
- self.action,
- addrconv.mac.text_to_bin(self.mac_address),
- self.port_id_length,
- self.port_id_subtype,
- self.port_id
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.action, self.ins.action)
- eq_(self.mac_address, self.ins.mac_address)
- eq_(self.port_id_length, self.ins.port_id_length)
- eq_(self.port_id_subtype, self.ins.port_id_subtype)
- eq_(self.port_id, self.ins.port_id)
-
- def test_parser(self):
- _res = cfm.reply_ingress_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.action, res.action)
- eq_(self.mac_address, res.mac_address)
- eq_(self.port_id_length, res.port_id_length)
- eq_(self.port_id_subtype, res.port_id_subtype)
- eq_(self.port_id, res.port_id)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.action, res[2])
- eq_(addrconv.mac.text_to_bin(self.mac_address), res[3])
- eq_(self.port_id_length, res[4])
- eq_(self.port_id_subtype, res[5])
- eq_(self.port_id, res[6])
-
- def test_serialize_with_zero(self):
- ins = cfm.reply_ingress_tlv(0,
- self.action,
- self.mac_address,
- 0,
- self.port_id_subtype,
- self.port_id
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.action, res[2])
- eq_(addrconv.mac.text_to_bin(self.mac_address), res[3])
- eq_(self.port_id_length, res[4])
- eq_(self.port_id_subtype, res[5])
- eq_(self.port_id, res[6])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 12, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.reply_ingress_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.reply_ingress_tlv._PACK_STR, six.binary_type(buf))
- eq_(res[0], cfm.CFM_REPLY_INGRESS_TLV)
- eq_(res[1], 7)
- eq_(res[2], 1)
- eq_(res[3], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
-
-class Test_reply_egress_tlv(unittest.TestCase):
-
- def setUp(self):
- self._type = cfm.CFM_REPLY_EGRESS_TLV
- self.length = 12
- self.action = 2
- self.mac_address = 'aa:bb:cc:56:34:12'
- self.port_id_length = 3
- self.port_id_subtype = 2
- self.port_id = b"\x01\x04\x09"
- self.ins = cfm.reply_egress_tlv(self.length,
- self.action,
- self.mac_address,
- self.port_id_length,
- self.port_id_subtype,
- self.port_id
- )
- self.form = '!BHB6sBB3s'
- self.buf = struct.pack(self.form,
- self._type,
- self.length,
- self.action,
- addrconv.mac.text_to_bin(self.mac_address),
- self.port_id_length,
- self.port_id_subtype,
- self.port_id
- )
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.length, self.ins.length)
- eq_(self.action, self.ins.action)
- eq_(self.mac_address, self.ins.mac_address)
- eq_(self.port_id_length, self.ins.port_id_length)
- eq_(self.port_id_subtype, self.ins.port_id_subtype)
- eq_(self.port_id, self.ins.port_id)
-
- def test_parser(self):
- _res = cfm.reply_ingress_tlv.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.length, res.length)
- eq_(self.action, res.action)
- eq_(self.mac_address, res.mac_address)
- eq_(self.port_id_length, res.port_id_length)
- eq_(self.port_id_subtype, res.port_id_subtype)
- eq_(self.port_id, res.port_id)
-
- def test_serialize(self):
- buf = self.ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.action, res[2])
- eq_(addrconv.mac.text_to_bin(self.mac_address), res[3])
- eq_(self.port_id_length, res[4])
- eq_(self.port_id_subtype, res[5])
- eq_(self.port_id, res[6])
-
- def test_serialize_with_zero(self):
- ins = cfm.reply_egress_tlv(0,
- self.action,
- self.mac_address,
- 0,
- self.port_id_subtype,
- self.port_id
- )
- buf = ins.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self._type, res[0])
- eq_(self.length, res[1])
- eq_(self.action, res[2])
- eq_(addrconv.mac.text_to_bin(self.mac_address), res[3])
- eq_(self.port_id_length, res[4])
- eq_(self.port_id_subtype, res[5])
- eq_(self.port_id, res[6])
-
- def test_len(self):
- # tlv_length = type_len + length_len + value_len
- eq_(1 + 2 + 12, len(self.ins))
-
- def test_default_args(self):
- ins = cfm.reply_egress_tlv()
- buf = ins.serialize()
- res = struct.unpack_from(cfm.reply_egress_tlv._PACK_STR,
- six.binary_type(buf))
- eq_(res[0], cfm.CFM_REPLY_EGRESS_TLV)
- eq_(res[1], 7)
- eq_(res[2], 1)
- eq_(res[3], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
diff --git a/tests/unit/packet/test_dhcp.py b/tests/unit/packet/test_dhcp.py
deleted file mode 100644
index cc96804b..00000000
--- a/tests/unit/packet/test_dhcp.py
+++ /dev/null
@@ -1,218 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import inspect
-import logging
-import struct
-import unittest
-
-import six
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.lib import addrconv
-from ryu.lib.packet import dhcp
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_dhcp_offer(unittest.TestCase):
-
- op = dhcp.DHCP_BOOT_REPLY
- chaddr = 'aa:aa:aa:aa:aa:aa'
- htype = 1
- hlen = 6
- hops = 0
- xid = 1
- secs = 0
- flags = 1
- ciaddr = '192.168.10.10'
- yiaddr = '192.168.20.20'
- siaddr = '192.168.30.30'
- giaddr = '192.168.40.40'
- sname = 'abc'
- boot_file = ''
-
- option_list = [
- dhcp.option(dhcp.DHCP_MESSAGE_TYPE_OPT, b'\x02', 1),
- dhcp.option(dhcp.DHCP_SUBNET_MASK_OPT, b'\xff\xff\xff\x00', 4),
- dhcp.option(dhcp.DHCP_GATEWAY_ADDR_OPT, b'\xc0\xa8\x0a\x09', 4),
- dhcp.option(dhcp.DHCP_DNS_SERVER_ADDR_OPT, b'\xc0\xa8\x0a\x09', 4),
- dhcp.option(dhcp.DHCP_IP_ADDR_LEASE_TIME_OPT, b'\x00\x03\xf4\x80', 4),
- dhcp.option(dhcp.DHCP_RENEWAL_TIME_OPT, b'\x00\x01\xfa\x40', 4),
- dhcp.option(dhcp.DHCP_REBINDING_TIME_OPT, b'\x00\x03\x75\xf0', 4),
- dhcp.option(dhcp.DHCP_SERVER_IDENTIFIER_OPT, b'\xc0\xa8\x0a\x09', 4)]
- magic_cookie = '99.130.83.99'
- options = dhcp.options(option_list=option_list, options_len=50,
- magic_cookie=magic_cookie)
-
- dh = dhcp.dhcp(op, chaddr, options, htype=htype, hlen=hlen,
- hops=hops, xid=xid, secs=secs, flags=flags,
- ciaddr=ciaddr, yiaddr=yiaddr, siaddr=siaddr,
- giaddr=giaddr, sname=sname, boot_file=boot_file)
-
- buf = (
- b"\x02\x01\x06\x00\x00\x00\x00\x01\x00\x00\x00\x01\xc0\xa8\x0a\x0a"
- b"\xc0\xa8\x14\x14\xc0\xa8\x1e\x1e\xc0\xa8\x28\x28\xaa\xaa\xaa\xaa"
- b"\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x62\x63\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
- b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x82\x53\x63"
- b"\x35\x01\x02\x01\x04\xff\xff\xff\x00\x03\x04\xc0\xa8\x0a\x09\x06"
- b"\x04\xc0\xa8\x0a\x09\x33\x04\x00\x03\xf4\x80\x3a\x04\x00\x01\xfa"
- b"\x40\x3b\x04\x00\x03\x75\xf0\x36\x04\xc0\xa8\x0a\x09\xff")
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.op, self.dh.op)
- eq_(self.htype, self.dh.htype)
- eq_(self.hlen, self.dh.hlen)
- eq_(self.hops, self.dh.hops)
- eq_(self.xid, self.dh.xid)
- eq_(self.secs, self.dh.secs)
- eq_(self.flags, self.dh.flags)
- eq_(self.ciaddr, self.dh.ciaddr)
- eq_(self.yiaddr, self.dh.yiaddr)
- eq_(self.siaddr, self.dh.siaddr)
- eq_(self.giaddr, self.dh.giaddr)
- eq_(self.chaddr, self.dh.chaddr)
- eq_(self.sname, self.dh.sname)
- eq_(self.boot_file, self.dh.boot_file)
- eq_(str(self.options), str(self.dh.options))
-
- def test_parser(self):
- res, _, rest = dhcp.dhcp.parser(self.buf)
-
- eq_(self.op, res.op)
- eq_(self.htype, res.htype)
- eq_(self.hlen, res.hlen)
- eq_(self.hops, res.hops)
- eq_(self.xid, res.xid)
- eq_(self.secs, res.secs)
- eq_(self.flags, res.flags)
- eq_(self.ciaddr, res.ciaddr)
- eq_(self.yiaddr, res.yiaddr)
- eq_(self.siaddr, res.siaddr)
- eq_(self.giaddr, res.giaddr)
- eq_(self.chaddr, res.chaddr)
- # sname is 64 byte length. rest of data is filled by '\x00'.
- eq_(self.sname.ljust(64, '\x00'), res.sname)
- # boof_file is 128 byte length. rest of data is filled by '\x00'.
- eq_(self.boot_file.ljust(128, '\x00'), res.boot_file)
- eq_(str(self.options), str(res.options))
- eq_(b'', rest)
-
- def test_parser_corrupted(self):
- corrupt_buf = self.buf[:-4]
- pkt, _, rest = dhcp.dhcp.parser(corrupt_buf)
-
- ok_(isinstance(pkt, dhcp.dhcp))
- ok_(isinstance(pkt.options, dhcp.options))
- for opt in pkt.options.option_list[:-1]:
- ok_(isinstance(opt, dhcp.option))
- ok_(isinstance(pkt.options.option_list[-1], six.binary_type))
-
- buf = pkt.serialize()
- eq_(str(buf), str(corrupt_buf))
- eq_(b'', rest)
-
- def test_serialize(self):
- buf = self.dh.serialize()
-
- res = struct.unpack_from(dhcp.dhcp._DHCP_PACK_STR,
- six.binary_type(buf))
-
- eq_(self.op, res[0])
- eq_(self.htype, res[1])
- eq_(self.hlen, res[2])
- eq_(self.hops, res[3])
- eq_(self.xid, res[4])
- eq_(self.secs, res[5])
- eq_(self.flags, res[6])
- eq_(self.ciaddr, addrconv.ipv4.bin_to_text(res[7]))
- eq_(self.yiaddr, addrconv.ipv4.bin_to_text(res[8]))
- eq_(self.siaddr, addrconv.ipv4.bin_to_text(res[9]))
- eq_(self.giaddr, addrconv.ipv4.bin_to_text(res[10]))
- eq_(self.chaddr, addrconv.mac.bin_to_text(res[11][:6]))
- # sname is 64 byte length. rest of data is filled by '\x00'.
- eq_(self.sname.ljust(64, '\x00'), res[12].decode('ascii'))
- # boof_file is 128 byte length. rest of data is filled by '\x00'.
- eq_(self.boot_file.ljust(128, '\x00'), res[13].decode('ascii'))
- options = dhcp.options.parser(
- buf[struct.calcsize(dhcp.dhcp._DHCP_PACK_STR):])
- eq_(str(self.options), str(options))
-
- def test_to_string(self):
- option_values = ['tag', 'length', 'value']
- opt_str_list = []
- for option in self.option_list:
- _opt_str = ','.join(['%s=%s' % (k, repr(getattr(option, k)))
- for k, v in inspect.getmembers(option)
- if k in option_values])
- opt_str = '%s(%s)' % (dhcp.option.__name__, _opt_str)
- opt_str_list.append(opt_str)
- option_str = '[%s]' % ', '.join(opt_str_list)
-
- opts_vals = {'magic_cookie': repr(self.magic_cookie),
- 'option_list': option_str,
- 'options_len': repr(self.options.options_len)}
- _options_str = ','.join(['%s=%s' % (k, opts_vals[k])
- for k, v in inspect.getmembers(self.options)
- if k in opts_vals])
- options_str = '%s(%s)' % (dhcp.options.__name__, _options_str)
-
- dhcp_values = {'op': repr(self.op),
- 'htype': repr(self.htype),
- 'hlen': repr(self.hlen),
- 'hops': repr(self.hops),
- 'xid': repr(self.xid),
- 'secs': repr(self.secs),
- 'flags': repr(self.flags),
- 'ciaddr': repr(self.ciaddr),
- 'yiaddr': repr(self.yiaddr),
- 'siaddr': repr(self.siaddr),
- 'giaddr': repr(self.giaddr),
- 'chaddr': repr(self.chaddr),
- 'sname': repr(self.sname),
- 'boot_file': repr(self.boot_file),
- 'options': options_str}
- _dh_str = ','.join(['%s=%s' % (k, dhcp_values[k])
- for k, v in inspect.getmembers(self.dh)
- if k in dhcp_values])
- dh_str = '%s(%s)' % (dhcp.dhcp.__name__, _dh_str)
-
- eq_(str(self.dh), dh_str)
- eq_(repr(self.dh), dh_str)
-
- def test_json(self):
- jsondict = self.dh.to_jsondict()
- dh = dhcp.dhcp.from_jsondict(jsondict['dhcp'])
- eq_(str(self.dh), str(dh))
diff --git a/tests/unit/packet/test_ethernet.py b/tests/unit/packet/test_ethernet.py
deleted file mode 100644
index 6fd767bd..00000000
--- a/tests/unit/packet/test_ethernet.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-import struct
-import netaddr
-from struct import *
-from nose.tools import *
-from ryu.ofproto import ether, inet
-from ryu.lib.packet.ethernet import ethernet
-from ryu.lib.packet.packet import Packet
-from ryu.lib.packet.arp import arp
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger('test_ethernet')
-
-
-class Test_ethernet(unittest.TestCase):
- """ Test case for ethernet
- """
-
- dst = 'aa:aa:aa:aa:aa:aa'
- src = 'bb:bb:bb:bb:bb:bb'
- ethertype = ether.ETH_TYPE_ARP
-
- buf = pack(ethernet._PACK_STR,
- addrconv.mac.text_to_bin(dst),
- addrconv.mac.text_to_bin(src), ethertype)
-
- e = ethernet(dst, src, ethertype)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.dst, self.e.dst)
- eq_(self.src, self.e.src)
- eq_(self.ethertype, self.e.ethertype)
-
- def test_parser(self):
- res, ptype, _ = self.e.parser(self.buf)
- LOG.debug((res, ptype))
-
- eq_(res.dst, self.dst)
- eq_(res.src, self.src)
- eq_(res.ethertype, self.ethertype)
- eq_(ptype, arp)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.e.serialize(data, prev)
-
- fmt = ethernet._PACK_STR
- res = struct.unpack(fmt, buf)
-
- eq_(res[0], addrconv.mac.text_to_bin(self.dst))
- eq_(res[1], addrconv.mac.text_to_bin(self.src))
- eq_(res[2], self.ethertype)
-
- @raises(Exception)
- def test_malformed_ethernet(self):
- m_short_buf = self.buf[1:ethernet._MIN_LEN]
- ethernet.parser(m_short_buf)
-
- def test_default_args(self):
- e = ethernet()
- buf = e.serialize(bytearray(), None)
- res = struct.unpack(e._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], addrconv.mac.text_to_bin('ff:ff:ff:ff:ff:ff'))
- eq_(res[1], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
- eq_(res[2], ether.ETH_TYPE_IP)
-
- def test_json(self):
- jsondict = self.e.to_jsondict()
- e = ethernet.from_jsondict(jsondict['ethernet'])
- eq_(str(self.e), str(e))
diff --git a/tests/unit/packet/test_geneve.py b/tests/unit/packet/test_geneve.py
deleted file mode 100644
index 919d05f8..00000000
--- a/tests/unit/packet/test_geneve.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import logging
-import os
-import sys
-
-import unittest
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.lib import pcaplib
-from ryu.lib.packet import geneve
-from ryu.lib.packet import packet
-from ryu.utils import binary_str
-
-
-LOG = logging.getLogger(__name__)
-
-GENEVE_DATA_DIR = os.path.join(
- os.path.dirname(sys.modules[__name__].__file__),
- '../../packet_data/pcap/')
-
-
-class Test_geneve(unittest.TestCase):
- """
- Test case for ryu.lib.packet.geneve.
- """
-
- def test_parser(self):
- files = [
- 'geneve_unknown',
- ]
-
- for f in files:
- # print('*** testing %s ...' % f)
- for _, buf in pcaplib.Reader(
- open(GENEVE_DATA_DIR + f + '.pcap', 'rb')):
- # Checks if message can be parsed as expected.
- pkt = packet.Packet(buf)
- geneve_pkt = pkt.get_protocol(geneve.geneve)
- ok_(isinstance(geneve_pkt, geneve.geneve),
- 'Failed to parse Geneve message: %s' % pkt)
-
- # Checks if message can be serialized as expected.
- pkt.serialize()
- eq_(buf, pkt.data,
- "b'%s' != b'%s'" % (binary_str(buf), binary_str(pkt.data)))
diff --git a/tests/unit/packet/test_gre.py b/tests/unit/packet/test_gre.py
deleted file mode 100644
index c955ec70..00000000
--- a/tests/unit/packet/test_gre.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import logging
-import os
-import sys
-
-import unittest
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.lib import pcaplib
-from ryu.lib.packet import gre
-from ryu.lib.packet import packet
-from ryu.utils import binary_str
-from ryu.lib.packet.ether_types import ETH_TYPE_IP, ETH_TYPE_TEB
-
-LOG = logging.getLogger(__name__)
-
-GENEVE_DATA_DIR = os.path.join(
- os.path.dirname(sys.modules[__name__].__file__),
- '../../packet_data/pcap/')
-
-
-class Test_gre(unittest.TestCase):
- """
- Test case gre for ryu.lib.packet.gre.
- """
-
- version = 0
- gre_proto = ETH_TYPE_IP
- nvgre_proto = ETH_TYPE_TEB
- checksum = 0x440d
- seq_number = 10
- key = 256100
- vsid = 1000
- flow_id = 100
-
- gre = gre.gre(version=version, protocol=gre_proto, checksum=checksum,
- key=key, seq_number=seq_number)
-
- def test_key_setter(self):
- self.gre.key = self.key
- eq_(self.gre._key, self.key)
- eq_(self.gre._vsid, self.vsid)
- eq_(self.gre._flow_id, self.flow_id)
-
- def test_key_setter_none(self):
- self.gre.key = None
- eq_(self.gre._key, None)
- eq_(self.gre._vsid, None)
- eq_(self.gre._flow_id, None)
-
- self.gre.key = self.key
-
- def test_vsid_setter(self):
- self.gre.vsid = self.vsid
- eq_(self.gre._key, self.key)
- eq_(self.gre._vsid, self.vsid)
- eq_(self.gre._flow_id, self.flow_id)
-
- def test_flowid_setter(self):
- self.gre.flow_id = self.flow_id
- eq_(self.gre._key, self.key)
- eq_(self.gre._vsid, self.vsid)
- eq_(self.gre._flow_id, self.flow_id)
-
- def test_nvgre_init(self):
- nvgre = gre.nvgre(version=self.version, vsid=self.vsid,
- flow_id=self.flow_id)
-
- eq_(nvgre.version, self.version)
- eq_(nvgre.protocol, self.nvgre_proto)
- eq_(nvgre.checksum, None)
- eq_(nvgre.seq_number, None)
- eq_(nvgre._key, self.key)
- eq_(nvgre._vsid, self.vsid)
- eq_(nvgre._flow_id, self.flow_id)
-
- def test_parser(self):
- files = [
- 'gre_full_options',
- 'gre_no_option',
- 'gre_nvgre_option',
- ]
-
- for f in files:
- # print('*** testing %s ...' % f)
- for _, buf in pcaplib.Reader(
- open(GENEVE_DATA_DIR + f + '.pcap', 'rb')):
- # Checks if message can be parsed as expected.
- pkt = packet.Packet(buf)
- gre_pkt = pkt.get_protocol(gre.gre)
- ok_(isinstance(gre_pkt, gre.gre),
- 'Failed to parse Gre message: %s' % pkt)
-
- # Checks if message can be serialized as expected.
- pkt.serialize()
-
- eq_(buf, pkt.data,
- "b'%s' != b'%s'" % (binary_str(buf), binary_str(pkt.data)))
diff --git a/tests/unit/packet/test_icmp.py b/tests/unit/packet/test_icmp.py
deleted file mode 100644
index f9438893..00000000
--- a/tests/unit/packet/test_icmp.py
+++ /dev/null
@@ -1,380 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import inspect
-import logging
-import six
-import struct
-import unittest
-
-from nose.tools import eq_
-from ryu.lib.packet import icmp
-from ryu.lib.packet import packet_utils
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_icmp(unittest.TestCase):
-
- echo_id = None
- echo_seq = None
- echo_data = None
-
- unreach_mtu = None
- unreach_data = None
- unreach_data_len = None
-
- te_data = None
- te_data_len = None
-
- def setUp(self):
- self.type_ = icmp.ICMP_ECHO_REQUEST
- self.code = 0
- self.csum = 0
- self.data = None
-
- self.ic = icmp.icmp(self.type_, self.code, self.csum, self.data)
-
- self.buf = bytearray(struct.pack(
- icmp.icmp._PACK_STR, self.type_, self.code, self.csum))
- self.csum_calc = packet_utils.checksum(self.buf)
- struct.pack_into('!H', self.buf, 2, self.csum_calc)
-
- def setUp_with_echo(self):
- self.echo_id = 13379
- self.echo_seq = 1
- self.echo_data = b'\x30\x0e\x09\x00\x00\x00\x00\x00' \
- + b'\x10\x11\x12\x13\x14\x15\x16\x17' \
- + b'\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f' \
- + b'\x20\x21\x22\x23\x24\x25\x26\x27' \
- + b'\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f' \
- + b'\x30\x31\x32\x33\x34\x35\x36\x37'
- self.data = icmp.echo(
- id_=self.echo_id, seq=self.echo_seq, data=self.echo_data)
-
- self.type_ = icmp.ICMP_ECHO_REQUEST
- self.code = 0
- self.ic = icmp.icmp(self.type_, self.code, self.csum, self.data)
-
- self.buf = bytearray(struct.pack(
- icmp.icmp._PACK_STR, self.type_, self.code, self.csum))
- self.buf += self.data.serialize()
- self.csum_calc = packet_utils.checksum(self.buf)
- struct.pack_into('!H', self.buf, 2, self.csum_calc)
-
- def setUp_with_dest_unreach(self):
- self.unreach_mtu = 10
- self.unreach_data = b'abc'
- self.unreach_data_len = len(self.unreach_data)
- self.data = icmp.dest_unreach(
- data_len=self.unreach_data_len, mtu=self.unreach_mtu,
- data=self.unreach_data)
-
- self.type_ = icmp.ICMP_DEST_UNREACH
- self.code = icmp.ICMP_HOST_UNREACH_CODE
- self.ic = icmp.icmp(self.type_, self.code, self.csum, self.data)
-
- self.buf = bytearray(struct.pack(
- icmp.icmp._PACK_STR, self.type_, self.code, self.csum))
- self.buf += self.data.serialize()
- self.csum_calc = packet_utils.checksum(self.buf)
- struct.pack_into('!H', self.buf, 2, self.csum_calc)
-
- def setUp_with_TimeExceeded(self):
- self.te_data = b'abc'
- self.te_data_len = len(self.te_data)
- self.data = icmp.TimeExceeded(
- data_len=self.te_data_len, data=self.te_data)
-
- self.type_ = icmp.ICMP_TIME_EXCEEDED
- self.code = 0
- self.ic = icmp.icmp(self.type_, self.code, self.csum, self.data)
-
- self.buf = bytearray(struct.pack(
- icmp.icmp._PACK_STR, self.type_, self.code, self.csum))
- self.buf += self.data.serialize()
- self.csum_calc = packet_utils.checksum(self.buf)
- struct.pack_into('!H', self.buf, 2, self.csum_calc)
-
- def test_init(self):
- eq_(self.type_, self.ic.type)
- eq_(self.code, self.ic.code)
- eq_(self.csum, self.ic.csum)
- eq_(str(self.data), str(self.ic.data))
-
- def test_init_with_echo(self):
- self.setUp_with_echo()
- self.test_init()
-
- def test_init_with_dest_unreach(self):
- self.setUp_with_dest_unreach()
- self.test_init()
-
- def test_init_with_TimeExceeded(self):
- self.setUp_with_TimeExceeded()
- self.test_init()
-
- def test_parser(self):
- _res = icmp.icmp.parser(six.binary_type(self.buf))
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(self.type_, res.type)
- eq_(self.code, res.code)
- eq_(self.csum_calc, res.csum)
- eq_(str(self.data), str(res.data))
-
- def test_parser_with_echo(self):
- self.setUp_with_echo()
- self.test_parser()
-
- def test_parser_with_dest_unreach(self):
- self.setUp_with_dest_unreach()
- self.test_parser()
-
- def test_parser_with_TimeExceeded(self):
- self.setUp_with_TimeExceeded()
- self.test_parser()
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.ic.serialize(data, prev)
-
- res = struct.unpack_from(icmp.icmp._PACK_STR, six.binary_type(buf))
-
- eq_(self.type_, res[0])
- eq_(self.code, res[1])
- eq_(self.csum_calc, res[2])
-
- def test_serialize_with_echo(self):
- self.setUp_with_echo()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ic.serialize(data, prev)
- echo = icmp.echo.parser(six.binary_type(buf), icmp.icmp._MIN_LEN)
- eq_(repr(self.data), repr(echo))
-
- def test_serialize_with_dest_unreach(self):
- self.setUp_with_dest_unreach()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ic.serialize(data, prev)
- unreach = icmp.dest_unreach.parser(six.binary_type(buf), icmp.icmp._MIN_LEN)
- eq_(repr(self.data), repr(unreach))
-
- def test_serialize_with_TimeExceeded(self):
- self.setUp_with_TimeExceeded()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ic.serialize(data, prev)
- te = icmp.TimeExceeded.parser(six.binary_type(buf), icmp.icmp._MIN_LEN)
- eq_(repr(self.data), repr(te))
-
- def test_to_string(self):
- icmp_values = {'type': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': repr(self.data)}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(self.ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmp.icmp.__name__, _ic_str)
-
- eq_(str(self.ic), ic_str)
- eq_(repr(self.ic), ic_str)
-
- def test_to_string_with_echo(self):
- self.setUp_with_echo()
- self.test_to_string()
-
- def test_to_string_with_dest_unreach(self):
- self.setUp_with_dest_unreach()
- self.test_to_string()
-
- def test_to_string_with_TimeExceeded(self):
- self.setUp_with_TimeExceeded()
- self.test_to_string()
-
- def test_default_args(self):
- ic = icmp.icmp()
- buf = ic.serialize(bytearray(), None)
- res = struct.unpack(icmp.icmp._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], 8)
- eq_(res[1], 0)
- eq_(buf[4:], b'\x00\x00\x00\x00')
-
- # with data
- ic = icmp.icmp(type_=icmp.ICMP_DEST_UNREACH, data=icmp.dest_unreach())
- buf = ic.serialize(bytearray(), None)
- res = struct.unpack(icmp.icmp._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], 3)
- eq_(res[1], 0)
- eq_(buf[4:], b'\x00\x00\x00\x00')
-
- def test_json(self):
- jsondict = self.ic.to_jsondict()
- ic = icmp.icmp.from_jsondict(jsondict['icmp'])
- eq_(str(self.ic), str(ic))
-
- def test_json_with_echo(self):
- self.setUp_with_echo()
- self.test_json()
-
- def test_json_with_dest_unreach(self):
- self.setUp_with_dest_unreach()
- self.test_json()
-
- def test_json_with_TimeExceeded(self):
- self.setUp_with_TimeExceeded()
- self.test_json()
-
-
-class Test_echo(unittest.TestCase):
-
- def setUp(self):
- self.id_ = 13379
- self.seq = 1
- self.data = b'\x30\x0e\x09\x00\x00\x00\x00\x00' \
- + b'\x10\x11\x12\x13\x14\x15\x16\x17' \
- + b'\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f' \
- + b'\x20\x21\x22\x23\x24\x25\x26\x27' \
- + b'\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f' \
- + b'\x30\x31\x32\x33\x34\x35\x36\x37'
- self.echo = icmp.echo(
- self.id_, self.seq, self.data)
- self.buf = struct.pack('!HH', self.id_, self.seq)
- self.buf += self.data
-
- def test_init(self):
- eq_(self.id_, self.echo.id)
- eq_(self.seq, self.echo.seq)
- eq_(self.data, self.echo.data)
-
- def test_parser(self):
- _res = icmp.echo.parser(self.buf, 0)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.id_, res.id)
- eq_(self.seq, res.seq)
- eq_(self.data, res.data)
-
- def test_serialize(self):
- buf = self.echo.serialize()
- res = struct.unpack_from('!HH', six.binary_type(buf))
- eq_(self.id_, res[0])
- eq_(self.seq, res[1])
- eq_(self.data, buf[struct.calcsize('!HH'):])
-
- def test_default_args(self):
- ec = icmp.echo()
- buf = ec.serialize()
- res = struct.unpack(icmp.echo._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
-
-
-class Test_dest_unreach(unittest.TestCase):
-
- def setUp(self):
- self.mtu = 10
- self.data = b'abc'
- self.data_len = len(self.data)
- self.dest_unreach = icmp.dest_unreach(
- data_len=self.data_len, mtu=self.mtu, data=self.data)
- self.buf = struct.pack('!xBH', self.data_len, self.mtu)
- self.buf += self.data
-
- def test_init(self):
- eq_(self.data_len, self.dest_unreach.data_len)
- eq_(self.mtu, self.dest_unreach.mtu)
- eq_(self.data, self.dest_unreach.data)
-
- def test_parser(self):
- _res = icmp.dest_unreach.parser(self.buf, 0)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.data_len, res.data_len)
- eq_(self.mtu, res.mtu)
- eq_(self.data, res.data)
-
- def test_serialize(self):
- buf = self.dest_unreach.serialize()
- res = struct.unpack_from('!xBH', six.binary_type(buf))
- eq_(self.data_len, res[0])
- eq_(self.mtu, res[1])
- eq_(self.data, buf[struct.calcsize('!xBH'):])
-
- def test_default_args(self):
- du = icmp.dest_unreach()
- buf = du.serialize()
- res = struct.unpack(icmp.dest_unreach._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
-
-
-class Test_TimeExceeded(unittest.TestCase):
-
- def setUp(self):
- self.data = b'abc'
- self.data_len = len(self.data)
- self.te = icmp.TimeExceeded(
- data_len=self.data_len, data=self.data)
- self.buf = struct.pack('!xBxx', self.data_len)
- self.buf += self.data
-
- def test_init(self):
- eq_(self.data_len, self.te.data_len)
- eq_(self.data, self.te.data)
-
- def test_parser(self):
- _res = icmp.TimeExceeded.parser(self.buf, 0)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.data_len, res.data_len)
- eq_(self.data, res.data)
-
- def test_serialize(self):
- buf = self.te.serialize()
- res = struct.unpack_from('!xBxx', six.binary_type(buf))
- eq_(self.data_len, res[0])
- eq_(self.data, buf[struct.calcsize('!xBxx'):])
-
- def test_default_args(self):
- te = icmp.TimeExceeded()
- buf = te.serialize()
- res = struct.unpack(icmp.TimeExceeded._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
diff --git a/tests/unit/packet/test_icmpv6.py b/tests/unit/packet/test_icmpv6.py
deleted file mode 100644
index c6438171..00000000
--- a/tests/unit/packet/test_icmpv6.py
+++ /dev/null
@@ -1,2039 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-import struct
-import inspect
-
-from nose.tools import ok_, eq_, nottest, raises
-from ryu.ofproto import ether, inet
-from ryu.lib.packet.ethernet import ethernet
-from ryu.lib.packet.packet import Packet
-from ryu.lib.packet import icmpv6
-from ryu.lib.packet.ipv6 import ipv6
-from ryu.lib.packet import packet_utils
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger(__name__)
-
-
-def icmpv6_csum(prev, buf):
- ph = struct.pack('!16s16sI3xB',
- addrconv.ipv6.text_to_bin(prev.src),
- addrconv.ipv6.text_to_bin(prev.dst),
- prev.payload_length, prev.nxt)
- h = bytearray(buf)
- struct.pack_into('!H', h, 2, 0)
-
- return packet_utils.checksum(ph + h)
-
-
-class Test_icmpv6_header(unittest.TestCase):
- type_ = 255
- code = 0
- csum = 207
- buf = b'\xff\x00\x00\xcf'
- icmp = icmpv6.icmpv6(type_, code, 0)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.type_, self.icmp.type_)
- eq_(self.code, self.icmp.code)
- eq_(0, self.icmp.csum)
-
- def test_parser(self):
- msg, n, _ = self.icmp.parser(self.buf)
-
- eq_(msg.type_, self.type_)
- eq_(msg.code, self.code)
- eq_(msg.csum, self.csum)
- eq_(msg.data, None)
- eq_(n, None)
-
- def test_serialize(self):
- src_ipv6 = 'fe80::200:ff:fe00:ef'
- dst_ipv6 = 'fe80::200:ff:fe00:1'
- prev = ipv6(6, 0, 0, 4, 58, 255, src_ipv6, dst_ipv6)
-
- buf = self.icmp.serialize(bytearray(), prev)
- (type_, code, csum) = struct.unpack(self.icmp._PACK_STR, six.binary_type(buf))
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, self.csum)
-
- @raises(Exception)
- def test_malformed_icmpv6(self):
- m_short_buf = self.buf[1:self.icmp._MIN_LEN]
- self.icmp.parser(m_short_buf)
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6()
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- def test_json(self):
- jsondict = self.icmp.to_jsondict()
- icmp = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(self.icmp), str(icmp))
-
-
-class Test_icmpv6_echo_request(unittest.TestCase):
- type_ = 128
- code = 0
- csum = 0xa572
- id_ = 0x7620
- seq = 0
- data = b'\x01\xc9\xe7\x36\xd3\x39\x06\x00'
- buf = b'\x80\x00\xa5\x72\x76\x20\x00\x00'
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- echo = icmpv6.echo(0, 0)
- eq_(echo.id, 0)
- eq_(echo.seq, 0)
- eq_(echo.data, None)
-
- def _test_parser(self, data=None):
- buf = self.buf + (data or b'')
- msg, n, _ = icmpv6.icmpv6.parser(buf)
-
- eq_(msg.type_, self.type_)
- eq_(msg.code, self.code)
- eq_(msg.csum, self.csum)
- eq_(msg.data.id, self.id_)
- eq_(msg.data.seq, self.seq)
- eq_(msg.data.data, data)
- eq_(n, None)
-
- def test_parser_without_data(self):
- self._test_parser()
-
- def test_parser_with_data(self):
- self._test_parser(self.data)
-
- def _test_serialize(self, echo_data=None):
- buf = self.buf + (echo_data or b'')
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
- prev = ipv6(6, 0, 0, len(buf), 64, 255, src_ipv6, dst_ipv6)
- echo_csum = icmpv6_csum(prev, buf)
-
- echo = icmpv6.echo(self.id_, self.seq, echo_data)
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, echo)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR, buf, 0)
- (id_, seq) = struct.unpack_from(echo._PACK_STR, buf, icmp._MIN_LEN)
- data = buf[(icmp._MIN_LEN + echo._MIN_LEN):]
- data = data if len(data) != 0 else None
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, echo_csum)
- eq_(id_, self.id_)
- eq_(seq, self.seq)
- eq_(data, echo_data)
-
- def test_serialize_without_data(self):
- self._test_serialize()
-
- def test_serialize_with_data(self):
- self._test_serialize(self.data)
-
- def test_to_string(self):
- ec = icmpv6.echo(self.id_, self.seq, self.data)
- ic = icmpv6.icmpv6(self.type_, self.code, self.csum, ec)
-
- echo_values = {'id': self.id_,
- 'seq': self.seq,
- 'data': self.data}
- _echo_str = ','.join(['%s=%s' % (k, repr(echo_values[k]))
- for k, v in inspect.getmembers(ec)
- if k in echo_values])
- echo_str = '%s(%s)' % (icmpv6.echo.__name__, _echo_str)
-
- icmp_values = {'type_': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': echo_str}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _ic_str)
-
- eq_(str(ic), ic_str)
- eq_(repr(ic), ic_str)
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ICMPV6_ECHO_REQUEST, data=icmpv6.echo())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ICMPV6_ECHO_REQUEST)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.echo._PACK_STR, six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
-
- def test_json(self):
- ec = icmpv6.echo(self.id_, self.seq, self.data)
- ic1 = icmpv6.icmpv6(self.type_, self.code, self.csum, ec)
- jsondict = ic1.to_jsondict()
- ic2 = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(ic1), str(ic2))
-
-
-class Test_icmpv6_echo_reply(Test_icmpv6_echo_request):
- def setUp(self):
- self.type_ = 129
- self.csum = 0xa472
- self.buf = b'\x81\x00\xa4\x72\x76\x20\x00\x00'
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ICMPV6_ECHO_REPLY, data=icmpv6.echo())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ICMPV6_ECHO_REPLY)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.echo._PACK_STR, six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
-
-
-class Test_icmpv6_neighbor_solicit(unittest.TestCase):
- type_ = 135
- code = 0
- csum = 0x952d
- res = 0
- dst = '3ffe:507:0:1:200:86ff:fe05:80da'
- nd_type = 1
- nd_length = 1
- nd_hw_src = '00:60:97:07:69:ea'
- data = b'\x01\x01\x00\x60\x97\x07\x69\xea'
- buf = b'\x87\x00\x95\x2d\x00\x00\x00\x00' \
- + b'\x3f\xfe\x05\x07\x00\x00\x00\x01' \
- + b'\x02\x00\x86\xff\xfe\x05\x80\xda'
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- nd = icmpv6.nd_neighbor(self.res, self.dst)
- eq_(nd.res, self.res)
- eq_(nd.dst, self.dst)
- eq_(nd.option, None)
-
- def _test_parser(self, data=None):
- buf = self.buf + (data or b'')
- msg, n, _ = icmpv6.icmpv6.parser(buf)
-
- eq_(msg.type_, self.type_)
- eq_(msg.code, self.code)
- eq_(msg.csum, self.csum)
- eq_(msg.data.res, self.res)
- eq_(addrconv.ipv6.text_to_bin(msg.data.dst),
- addrconv.ipv6.text_to_bin(self.dst))
- eq_(n, None)
- if data:
- nd = msg.data.option
- eq_(nd.length, self.nd_length)
- eq_(nd.hw_src, self.nd_hw_src)
- eq_(nd.data, None)
-
- def test_parser_without_data(self):
- self._test_parser()
-
- def test_parser_with_data(self):
- self._test_parser(self.data)
-
- def test_serialize_without_data(self):
- nd = icmpv6.nd_neighbor(self.res, self.dst)
- prev = ipv6(6, 0, 0, 24, 64, 255, self.src_ipv6, self.dst_ipv6)
- nd_csum = icmpv6_csum(prev, self.buf)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, nd)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR, buf, 0)
- (res, dst) = struct.unpack_from(nd._PACK_STR, buf, icmp._MIN_LEN)
- data = buf[(icmp._MIN_LEN + nd._MIN_LEN):]
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, nd_csum)
- eq_(res >> 29, self.res)
- eq_(dst, addrconv.ipv6.text_to_bin(self.dst))
- eq_(data, b'')
-
- def test_serialize_with_data(self):
- nd_opt = icmpv6.nd_option_sla(self.nd_length, self.nd_hw_src)
- nd = icmpv6.nd_neighbor(self.res, self.dst, nd_opt)
- prev = ipv6(6, 0, 0, 32, 64, 255, self.src_ipv6, self.dst_ipv6)
- nd_csum = icmpv6_csum(prev, self.buf + self.data)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, nd)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR, buf, 0)
- (res, dst) = struct.unpack_from(nd._PACK_STR, buf, icmp._MIN_LEN)
- (nd_type, nd_length, nd_hw_src) = struct.unpack_from(
- nd_opt._PACK_STR, buf, icmp._MIN_LEN + nd._MIN_LEN)
- data = buf[(icmp._MIN_LEN + nd._MIN_LEN + 8):]
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, nd_csum)
- eq_(res >> 29, self.res)
- eq_(dst, addrconv.ipv6.text_to_bin(self.dst))
- eq_(nd_type, self.nd_type)
- eq_(nd_length, self.nd_length)
- eq_(nd_hw_src, addrconv.mac.text_to_bin(self.nd_hw_src))
-
- def test_to_string(self):
- nd_opt = icmpv6.nd_option_sla(self.nd_length, self.nd_hw_src)
- nd = icmpv6.nd_neighbor(self.res, self.dst, nd_opt)
- ic = icmpv6.icmpv6(self.type_, self.code, self.csum, nd)
-
- nd_opt_values = {'length': self.nd_length,
- 'hw_src': self.nd_hw_src,
- 'data': None}
- _nd_opt_str = ','.join(['%s=%s' % (k, repr(nd_opt_values[k]))
- for k, v in inspect.getmembers(nd_opt)
- if k in nd_opt_values])
- nd_opt_str = '%s(%s)' % (icmpv6.nd_option_sla.__name__, _nd_opt_str)
-
- nd_values = {'res': repr(nd.res),
- 'dst': repr(self.dst),
- 'option': nd_opt_str}
- _nd_str = ','.join(['%s=%s' % (k, nd_values[k])
- for k, v in inspect.getmembers(nd)
- if k in nd_values])
- nd_str = '%s(%s)' % (icmpv6.nd_neighbor.__name__, _nd_str)
-
- icmp_values = {'type_': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': nd_str}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _ic_str)
-
- eq_(str(ic), ic_str)
- eq_(repr(ic), ic_str)
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_NEIGHBOR_SOLICIT, data=icmpv6.nd_neighbor())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_NEIGHBOR_SOLICIT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_neighbor._PACK_STR, six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
-
- # with nd_option_sla
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_NEIGHBOR_SOLICIT,
- data=icmpv6.nd_neighbor(
- option=icmpv6.nd_option_sla()))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_NEIGHBOR_SOLICIT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_neighbor._PACK_STR,
- six.binary_type(buf[4:24]))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
-
- res = struct.unpack(icmpv6.nd_option_sla._PACK_STR,
- six.binary_type(buf[24:]))
-
- eq_(res[0], icmpv6.ND_OPTION_SLA)
- eq_(res[1], len(icmpv6.nd_option_sla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
- def test_json(self):
- nd_opt = icmpv6.nd_option_sla(self.nd_length, self.nd_hw_src)
- nd = icmpv6.nd_neighbor(self.res, self.dst, nd_opt)
- ic1 = icmpv6.icmpv6(self.type_, self.code, self.csum, nd)
- jsondict = ic1.to_jsondict()
- ic2 = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(ic1), str(ic2))
-
-
-class Test_icmpv6_neighbor_advert(Test_icmpv6_neighbor_solicit):
- def setUp(self):
- self.type_ = 136
- self.csum = 0xb8ba
- self.res = 7
- self.dst = '3ffe:507:0:1:260:97ff:fe07:69ea'
- self.nd_type = 2
- self.nd_length = 1
- self.nd_data = None
- self.nd_hw_src = '00:60:97:07:69:ea'
- self.data = b'\x02\x01\x00\x60\x97\x07\x69\xea'
- self.buf = b'\x88\x00\xb8\xba\xe0\x00\x00\x00' \
- + b'\x3f\xfe\x05\x07\x00\x00\x00\x01' \
- + b'\x02\x60\x97\xff\xfe\x07\x69\xea'
-
- def test_serialize_with_data(self):
- nd_opt = icmpv6.nd_option_tla(self.nd_length, self.nd_hw_src)
- nd = icmpv6.nd_neighbor(self.res, self.dst, nd_opt)
- prev = ipv6(6, 0, 0, 32, 64, 255, self.src_ipv6, self.dst_ipv6)
- nd_csum = icmpv6_csum(prev, self.buf + self.data)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, nd)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR, buf, 0)
- (res, dst) = struct.unpack_from(nd._PACK_STR, buf, icmp._MIN_LEN)
- (nd_type, nd_length, nd_hw_src) = struct.unpack_from(
- nd_opt._PACK_STR, buf, icmp._MIN_LEN + nd._MIN_LEN)
- data = buf[(icmp._MIN_LEN + nd._MIN_LEN + 8):]
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, nd_csum)
- eq_(res >> 29, self.res)
- eq_(dst, addrconv.ipv6.text_to_bin(self.dst))
- eq_(nd_type, self.nd_type)
- eq_(nd_length, self.nd_length)
- eq_(nd_hw_src, addrconv.mac.text_to_bin(self.nd_hw_src))
-
- def test_to_string(self):
- nd_opt = icmpv6.nd_option_tla(self.nd_length, self.nd_hw_src)
- nd = icmpv6.nd_neighbor(self.res, self.dst, nd_opt)
- ic = icmpv6.icmpv6(self.type_, self.code, self.csum, nd)
-
- nd_opt_values = {'length': self.nd_length,
- 'hw_src': self.nd_hw_src,
- 'data': None}
- _nd_opt_str = ','.join(['%s=%s' % (k, repr(nd_opt_values[k]))
- for k, v in inspect.getmembers(nd_opt)
- if k in nd_opt_values])
- nd_opt_str = '%s(%s)' % (icmpv6.nd_option_tla.__name__, _nd_opt_str)
-
- nd_values = {'res': repr(nd.res),
- 'dst': repr(self.dst),
- 'option': nd_opt_str}
- _nd_str = ','.join(['%s=%s' % (k, nd_values[k])
- for k, v in inspect.getmembers(nd)
- if k in nd_values])
- nd_str = '%s(%s)' % (icmpv6.nd_neighbor.__name__, _nd_str)
-
- icmp_values = {'type_': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': nd_str}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _ic_str)
-
- eq_(str(ic), ic_str)
- eq_(repr(ic), ic_str)
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_NEIGHBOR_ADVERT, data=icmpv6.nd_neighbor())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_NEIGHBOR_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_neighbor._PACK_STR, six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
-
- # with nd_option_tla
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_NEIGHBOR_ADVERT,
- data=icmpv6.nd_neighbor(
- option=icmpv6.nd_option_tla()))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_NEIGHBOR_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_neighbor._PACK_STR,
- six.binary_type(buf[4:24]))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
-
- res = struct.unpack(icmpv6.nd_option_tla._PACK_STR,
- six.binary_type(buf[24:]))
-
- eq_(res[0], icmpv6.ND_OPTION_TLA)
- eq_(res[1], len(icmpv6.nd_option_tla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
-
-class Test_icmpv6_router_solicit(unittest.TestCase):
- type_ = 133
- code = 0
- csum = 0x97d9
- res = 0
- nd_type = 1
- nd_length = 1
- nd_hw_src = '12:2d:a5:6d:bc:0f'
- data = b'\x00\x00\x00\x00\x01\x01\x12\x2d\xa5\x6d\xbc\x0f'
- buf = b'\x85\x00\x97\xd9'
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- rs = icmpv6.nd_router_solicit(self.res)
- eq_(rs.res, self.res)
- eq_(rs.option, None)
-
- def _test_parser(self, data=None):
- buf = self.buf + (data or b'')
- msg, n, _ = icmpv6.icmpv6.parser(buf)
-
- eq_(msg.type_, self.type_)
- eq_(msg.code, self.code)
- eq_(msg.csum, self.csum)
- if data is not None:
- eq_(msg.data.res, self.res)
- eq_(n, None)
- if data:
- rs = msg.data.option
- eq_(rs.length, self.nd_length)
- eq_(rs.hw_src, self.nd_hw_src)
- eq_(rs.data, None)
-
- def test_parser_without_data(self):
- self._test_parser()
-
- def test_parser_with_data(self):
- self._test_parser(self.data)
-
- def test_serialize_without_data(self):
- rs = icmpv6.nd_router_solicit(self.res)
- prev = ipv6(6, 0, 0, 8, 64, 255, self.src_ipv6, self.dst_ipv6)
- rs_csum = icmpv6_csum(prev, self.buf)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, rs)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR, buf, 0)
- res = struct.unpack_from(rs._PACK_STR, buf, icmp._MIN_LEN)
- data = buf[(icmp._MIN_LEN + rs._MIN_LEN):]
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, rs_csum)
- eq_(res[0], self.res)
- eq_(data, b'')
-
- def test_serialize_with_data(self):
- nd_opt = icmpv6.nd_option_sla(self.nd_length, self.nd_hw_src)
- rs = icmpv6.nd_router_solicit(self.res, nd_opt)
- prev = ipv6(6, 0, 0, 16, 64, 255, self.src_ipv6, self.dst_ipv6)
- rs_csum = icmpv6_csum(prev, self.buf + self.data)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, rs)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR, buf, 0)
- res = struct.unpack_from(rs._PACK_STR, buf, icmp._MIN_LEN)
- (nd_type, nd_length, nd_hw_src) = struct.unpack_from(
- nd_opt._PACK_STR, buf, icmp._MIN_LEN + rs._MIN_LEN)
- data = buf[(icmp._MIN_LEN + rs._MIN_LEN + 8):]
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, rs_csum)
- eq_(res[0], self.res)
- eq_(nd_type, self.nd_type)
- eq_(nd_length, self.nd_length)
- eq_(nd_hw_src, addrconv.mac.text_to_bin(self.nd_hw_src))
-
- def test_to_string(self):
- nd_opt = icmpv6.nd_option_sla(self.nd_length, self.nd_hw_src)
- rs = icmpv6.nd_router_solicit(self.res, nd_opt)
- ic = icmpv6.icmpv6(self.type_, self.code, self.csum, rs)
-
- nd_opt_values = {'length': self.nd_length,
- 'hw_src': self.nd_hw_src,
- 'data': None}
- _nd_opt_str = ','.join(['%s=%s' % (k, repr(nd_opt_values[k]))
- for k, v in inspect.getmembers(nd_opt)
- if k in nd_opt_values])
- nd_opt_str = '%s(%s)' % (icmpv6.nd_option_sla.__name__, _nd_opt_str)
-
- rs_values = {'res': repr(rs.res),
- 'option': nd_opt_str}
- _rs_str = ','.join(['%s=%s' % (k, rs_values[k])
- for k, v in inspect.getmembers(rs)
- if k in rs_values])
- rs_str = '%s(%s)' % (icmpv6.nd_router_solicit.__name__, _rs_str)
-
- icmp_values = {'type_': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': rs_str}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _ic_str)
-
- eq_(str(ic), ic_str)
- eq_(repr(ic), ic_str)
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_SOLICIT, data=icmpv6.nd_router_solicit())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_SOLICIT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_solicit._PACK_STR,
- six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
-
- # with nd_option_sla
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_SOLICIT,
- data=icmpv6.nd_router_solicit(
- option=icmpv6.nd_option_sla()))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_SOLICIT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_solicit._PACK_STR,
- six.binary_type(buf[4:8]))
-
- eq_(res[0], 0)
-
- res = struct.unpack(icmpv6.nd_option_sla._PACK_STR,
- six.binary_type(buf[8:]))
-
- eq_(res[0], icmpv6.ND_OPTION_SLA)
- eq_(res[1], len(icmpv6.nd_option_sla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
- def test_json(self):
- nd_opt = icmpv6.nd_option_sla(self.nd_length, self.nd_hw_src)
- rs = icmpv6.nd_router_solicit(self.res, nd_opt)
- ic1 = icmpv6.icmpv6(self.type_, self.code, self.csum, rs)
- jsondict = ic1.to_jsondict()
- ic2 = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(ic1), str(ic2))
-
-
-class Test_icmpv6_router_advert(unittest.TestCase):
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_ADVERT, data=icmpv6.nd_router_advert())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_advert._PACK_STR,
- six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
-
- # with nd_option_sla
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_ADVERT,
- data=icmpv6.nd_router_advert(
- options=[icmpv6.nd_option_sla()]))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_advert._PACK_STR,
- six.binary_type(buf[4:16]))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
-
- res = struct.unpack(icmpv6.nd_option_sla._PACK_STR,
- six.binary_type(buf[16:]))
-
- eq_(res[0], icmpv6.ND_OPTION_SLA)
- eq_(res[1], len(icmpv6.nd_option_sla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
- # with nd_option_pi
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_ADVERT,
- data=icmpv6.nd_router_advert(
- options=[icmpv6.nd_option_pi()]))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_advert._PACK_STR,
- six.binary_type(buf[4:16]))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
-
- res = struct.unpack(icmpv6.nd_option_pi._PACK_STR,
- six.binary_type(buf[16:]))
-
- eq_(res[0], icmpv6.ND_OPTION_PI)
- eq_(res[1], 4)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
- eq_(res[5], 0)
- eq_(res[6], 0)
- eq_(res[7], addrconv.ipv6.text_to_bin('::'))
-
- # with nd_option_sla and nd_option_pi
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_ADVERT,
- data=icmpv6.nd_router_advert(
- options=[icmpv6.nd_option_sla(), icmpv6.nd_option_pi()]))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_advert._PACK_STR,
- six.binary_type(buf[4:16]))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
-
- res = struct.unpack(icmpv6.nd_option_sla._PACK_STR,
- six.binary_type(buf[16:24]))
-
- eq_(res[0], icmpv6.ND_OPTION_SLA)
- eq_(res[1], len(icmpv6.nd_option_sla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
- res = struct.unpack(icmpv6.nd_option_pi._PACK_STR,
- six.binary_type(buf[24:]))
-
- eq_(res[0], icmpv6.ND_OPTION_PI)
- eq_(res[1], len(icmpv6.nd_option_pi()) // 8)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
- eq_(res[5], 0)
- eq_(res[6], 0)
- eq_(res[7], addrconv.ipv6.text_to_bin('::'))
-
- def test_json(self):
- ic1 = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_ADVERT,
- data=icmpv6.nd_router_advert(
- options=[icmpv6.nd_option_sla(), icmpv6.nd_option_pi()]))
- jsondict = ic1.to_jsondict()
- ic2 = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(ic1), str(ic2))
-
-
-class Test_icmpv6_nd_option_la(unittest.TestCase):
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_default_args(self):
- la = icmpv6.nd_option_sla()
- buf = la.serialize()
- res = struct.unpack(icmpv6.nd_option_sla._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], icmpv6.ND_OPTION_SLA)
- eq_(res[1], len(icmpv6.nd_option_sla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
- # with nd_neighbor
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_NEIGHBOR_ADVERT,
- data=icmpv6.nd_neighbor(
- option=icmpv6.nd_option_tla()))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_NEIGHBOR_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_neighbor._PACK_STR,
- six.binary_type(buf[4:24]))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
-
- res = struct.unpack(icmpv6.nd_option_tla._PACK_STR,
- six.binary_type(buf[24:]))
-
- eq_(res[0], icmpv6.ND_OPTION_TLA)
- eq_(res[1], len(icmpv6.nd_option_tla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
- # with nd_router_solicit
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_SOLICIT,
- data=icmpv6.nd_router_solicit(
- option=icmpv6.nd_option_sla()))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_SOLICIT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_solicit._PACK_STR,
- six.binary_type(buf[4:8]))
-
- eq_(res[0], 0)
-
- res = struct.unpack(icmpv6.nd_option_sla._PACK_STR,
- six.binary_type(buf[8:]))
-
- eq_(res[0], icmpv6.ND_OPTION_SLA)
- eq_(res[1], len(icmpv6.nd_option_sla()) // 8)
- eq_(res[2], addrconv.mac.text_to_bin('00:00:00:00:00:00'))
-
-
-class Test_icmpv6_nd_option_pi(unittest.TestCase):
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_default_args(self):
- pi = icmpv6.nd_option_pi()
- buf = pi.serialize()
- res = struct.unpack(icmpv6.nd_option_pi._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], icmpv6.ND_OPTION_PI)
- eq_(res[1], len(icmpv6.nd_option_pi()) // 8)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
- eq_(res[5], 0)
- eq_(res[6], 0)
- eq_(res[7], addrconv.ipv6.text_to_bin('::'))
-
- # with nd_router_advert
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.ND_ROUTER_ADVERT,
- data=icmpv6.nd_router_advert(
- options=[icmpv6.nd_option_pi()]))
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.ND_ROUTER_ADVERT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.nd_router_advert._PACK_STR,
- six.binary_type(buf[4:16]))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
-
- res = struct.unpack(icmpv6.nd_option_pi._PACK_STR,
- six.binary_type(buf[16:]))
-
- eq_(res[0], icmpv6.ND_OPTION_PI)
- eq_(res[1], 4)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 0)
- eq_(res[5], 0)
- eq_(res[6], 0)
- eq_(res[7], addrconv.ipv6.text_to_bin('::'))
-
-
-class Test_icmpv6_membership_query(unittest.TestCase):
- type_ = 130
- code = 0
- csum = 0xb5a4
- maxresp = 10000
- address = 'ff08::1'
- buf = b'\x82\x00\xb5\xa4\x27\x10\x00\x00' \
- + b'\xff\x08\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01'
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- mld = icmpv6.mld(self.maxresp, self.address)
- eq_(mld.maxresp, self.maxresp)
- eq_(mld.address, self.address)
-
- def test_parser(self):
- msg, n, _ = icmpv6.icmpv6.parser(self.buf)
-
- eq_(msg.type_, self.type_)
- eq_(msg.code, self.code)
- eq_(msg.csum, self.csum)
- eq_(msg.data.maxresp, self.maxresp)
- eq_(msg.data.address, self.address)
- eq_(n, None)
-
- def test_serialize(self):
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
- prev = ipv6(6, 0, 0, len(self.buf), 64, 255, src_ipv6, dst_ipv6)
- mld_csum = icmpv6_csum(prev, self.buf)
-
- mld = icmpv6.mld(self.maxresp, self.address)
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, mld)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR, buf, 0)
- (maxresp, address) = struct.unpack_from(
- mld._PACK_STR, buf, icmp._MIN_LEN)
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, mld_csum)
- eq_(maxresp, self.maxresp)
- eq_(address, addrconv.ipv6.text_to_bin(self.address))
-
- def test_to_string(self):
- ml = icmpv6.mld(self.maxresp, self.address)
- ic = icmpv6.icmpv6(self.type_, self.code, self.csum, ml)
-
- mld_values = {'maxresp': self.maxresp,
- 'address': self.address}
- _mld_str = ','.join(['%s=%s' % (k, repr(mld_values[k]))
- for k, v in inspect.getmembers(ml)
- if k in mld_values])
- mld_str = '%s(%s)' % (icmpv6.mld.__name__, _mld_str)
-
- icmp_values = {'type_': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': mld_str}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _ic_str)
-
- eq_(str(ic), ic_str)
- eq_(repr(ic), ic_str)
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.MLD_LISTENER_QUERY, data=icmpv6.mld())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.MLD_LISTENER_QUERY)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.mld._PACK_STR, six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
-
- def test_json(self):
- ic1 = icmpv6.icmpv6(
- type_=icmpv6.MLD_LISTENER_QUERY,
- data=icmpv6.mld())
- jsondict = ic1.to_jsondict()
- ic2 = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(ic1), str(ic2))
-
-
-class Test_icmpv6_membership_report(Test_icmpv6_membership_query):
- type_ = 131
- code = 0
- csum = 0xb4a4
- maxresp = 10000
- address = 'ff08::1'
- buf = b'\x83\x00\xb4\xa4\x27\x10\x00\x00' \
- + b'\xff\x08\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01'
-
- def test_json(self):
- ic1 = icmpv6.icmpv6(
- type_=icmpv6.MLD_LISTENER_REPOR,
- data=icmpv6.mld())
- jsondict = ic1.to_jsondict()
- ic2 = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(ic1), str(ic2))
-
-
-class Test_icmpv6_membership_done(Test_icmpv6_membership_query):
- type_ = 132
- code = 0
- csum = 0xb3a4
- maxresp = 10000
- address = 'ff08::1'
- buf = b'\x84\x00\xb3\xa4\x27\x10\x00\x00' \
- + b'\xff\x08\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01'
-
- def test_json(self):
- ic1 = icmpv6.icmpv6(
- type_=icmpv6.MLD_LISTENER_DONE,
- data=icmpv6.mld())
- jsondict = ic1.to_jsondict()
- ic2 = icmpv6.icmpv6.from_jsondict(jsondict['icmpv6'])
- eq_(str(ic1), str(ic2))
-
-
-class Test_mldv2_query(unittest.TestCase):
- type_ = 130
- code = 0
- csum = 0xb5a4
- maxresp = 10000
- address = 'ff08::1'
- s_flg = 0
- qrv = 2
- s_qrv = s_flg << 3 | qrv
- qqic = 10
- num = 0
- srcs = []
-
- mld = icmpv6.mldv2_query(
- maxresp, address, s_flg, qrv, qqic, num, srcs)
-
- buf = b'\x82\x00\xb5\xa4\x27\x10\x00\x00' \
- + b'\xff\x08\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\x02\x0a\x00\x00'
-
- def setUp(self):
- pass
-
- def setUp_with_srcs(self):
- self.num = 2
- self.srcs = ['ff80::1', 'ff80::2']
- self.mld = icmpv6.mldv2_query(
- self.maxresp, self.address, self.s_flg, self.qrv, self.qqic,
- self.num, self.srcs)
- self.buf = b'\x82\x00\xb5\xa4\x27\x10\x00\x00' \
- + b'\xff\x08\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\x02\x0a\x00\x02' \
- + b'\xff\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\xff\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x02'
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.mld.maxresp, self.maxresp)
- eq_(self.mld.address, self.address)
- eq_(self.mld.s_flg, self.s_flg)
- eq_(self.mld.qrv, self.qrv)
- eq_(self.mld.qqic, self.qqic)
- eq_(self.mld.num, self.num)
- eq_(self.mld.srcs, self.srcs)
-
- def test_init_with_srcs(self):
- self.setUp_with_srcs()
- self.test_init()
-
- def test_parser(self):
- msg, n, _ = icmpv6.icmpv6.parser(self.buf)
-
- eq_(msg.type_, self.type_)
- eq_(msg.code, self.code)
- eq_(msg.csum, self.csum)
- eq_(msg.data.maxresp, self.maxresp)
- eq_(msg.data.address, self.address)
- eq_(msg.data.s_flg, self.s_flg)
- eq_(msg.data.qrv, self.qrv)
- eq_(msg.data.qqic, self.qqic)
- eq_(msg.data.num, self.num)
- eq_(msg.data.srcs, self.srcs)
- eq_(n, None)
-
- def test_parser_with_srcs(self):
- self.setUp_with_srcs()
- self.test_parser()
-
- def test_serialize(self):
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
- prev = ipv6(6, 0, 0, len(self.buf), 64, 255, src_ipv6, dst_ipv6)
- mld_csum = icmpv6_csum(prev, self.buf)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, self.mld)
- buf = icmp.serialize(bytearray(), prev)
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR,
- six.binary_type(buf))
- (maxresp, address, s_qrv, qqic, num) = struct.unpack_from(
- self.mld._PACK_STR, six.binary_type(buf), icmp._MIN_LEN)
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, mld_csum)
- eq_(maxresp, self.maxresp)
- eq_(address, addrconv.ipv6.text_to_bin(self.address))
- s_flg = (s_qrv >> 3) & 0b1
- qrv = s_qrv & 0b111
- eq_(s_flg, self.s_flg)
- eq_(qrv, self.qrv)
- eq_(qqic, self.qqic)
- eq_(num, self.num)
-
- def test_serialize_with_srcs(self):
- self.setUp_with_srcs()
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
- prev = ipv6(6, 0, 0, len(self.buf), 64, 255, src_ipv6, dst_ipv6)
- mld_csum = icmpv6_csum(prev, self.buf)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, self.mld)
- buf = icmp.serialize(bytearray(), prev)
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR,
- six.binary_type(buf))
- (maxresp, address, s_qrv, qqic, num) = struct.unpack_from(
- self.mld._PACK_STR, six.binary_type(buf), icmp._MIN_LEN)
- (addr1, addr2) = struct.unpack_from(
- '!16s16s', six.binary_type(buf), icmp._MIN_LEN + self.mld._MIN_LEN)
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, mld_csum)
- eq_(maxresp, self.maxresp)
- eq_(address, addrconv.ipv6.text_to_bin(self.address))
- s_flg = (s_qrv >> 3) & 0b1
- qrv = s_qrv & 0b111
- eq_(s_flg, self.s_flg)
- eq_(qrv, self.qrv)
- eq_(qqic, self.qqic)
- eq_(num, self.num)
- eq_(addr1, addrconv.ipv6.text_to_bin(self.srcs[0]))
- eq_(addr2, addrconv.ipv6.text_to_bin(self.srcs[1]))
-
- def _build_mldv2_query(self):
- e = ethernet(ethertype=ether.ETH_TYPE_IPV6)
- i = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(type_=icmpv6.MLD_LISTENER_QUERY,
- data=self.mld)
- p = e / i / ic
- return p
-
- def test_build_mldv2_query(self):
- p = self._build_mldv2_query()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_IPV6)
-
- i = self.find_protocol(p, "ipv6")
- ok_(i)
- eq_(i.nxt, inet.IPPROTO_ICMPV6)
-
- ic = self.find_protocol(p, "icmpv6")
- ok_(ic)
- eq_(ic.type_, icmpv6.MLD_LISTENER_QUERY)
-
- eq_(ic.data.maxresp, self.maxresp)
- eq_(ic.data.address, self.address)
- eq_(ic.data.s_flg, self.s_flg)
- eq_(ic.data.qrv, self.qrv)
- eq_(ic.data.num, self.num)
- eq_(ic.data.srcs, self.srcs)
-
- def test_build_mldv2_query_with_srcs(self):
- self.setUp_with_srcs()
- self.test_build_mldv2_query()
-
- def test_to_string(self):
- ic = icmpv6.icmpv6(self.type_, self.code, self.csum, self.mld)
-
- mld_values = {'maxresp': self.maxresp,
- 'address': self.address,
- 's_flg': self.s_flg,
- 'qrv': self.qrv,
- 'qqic': self.qqic,
- 'num': self.num,
- 'srcs': self.srcs}
- _mld_str = ','.join(['%s=%s' % (k, repr(mld_values[k]))
- for k, v in inspect.getmembers(self.mld)
- if k in mld_values])
- mld_str = '%s(%s)' % (icmpv6.mldv2_query.__name__, _mld_str)
-
- icmp_values = {'type_': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': mld_str}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _ic_str)
-
- eq_(str(ic), ic_str)
- eq_(repr(ic), ic_str)
-
- def test_to_string_with_srcs(self):
- self.setUp_with_srcs()
- self.test_to_string()
-
- @raises(Exception)
- def test_num_larger_than_srcs(self):
- self.srcs = ['ff80::1', 'ff80::2', 'ff80::3']
- self.num = len(self.srcs) + 1
- self.buf = pack(icmpv6.mldv2_query._PACK_STR, self.maxresp,
- addrconv.ipv6.text_to_bin(self.address),
- self.s_qrv, self.qqic, self.num)
- for src in self.srcs:
- self.buf += pack('16s', addrconv.ipv6.text_to_bin(src))
- self.mld = icmpv6.mldv2_query(
- self.maxresp, self.address, self.s_flg, self.qrv, self.qqic,
- self.num, self.srcs)
- self.test_parser()
-
- @raises(Exception)
- def test_num_smaller_than_srcs(self):
- self.srcs = ['ff80::1', 'ff80::2', 'ff80::3']
- self.num = len(self.srcs) - 1
- self.buf = pack(icmpv6.mldv2_query._PACK_STR, self.maxresp,
- addrconv.ipv6.text_to_bin(self.address),
- self.s_qrv, self.qqic, self.num)
- for src in self.srcs:
- self.buf += pack('16s', addrconv.ipv6.text_to_bin(src))
- self.mld = icmpv6.mldv2_query(
- self.maxresp, self.address, self.s_flg, self.qrv, self.qqic,
- self.num, self.srcs)
- self.test_parser()
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.MLD_LISTENER_QUERY, data=icmpv6.mldv2_query())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.MLD_LISTENER_QUERY)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.mldv2_query._PACK_STR, six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
- eq_(res[2], 2)
- eq_(res[3], 0)
- eq_(res[4], 0)
-
- # srcs without num
- srcs = ['ff80::1', 'ff80::2', 'ff80::3']
- que = icmpv6.mldv2_query(srcs=srcs)
- buf = que.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_query._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], addrconv.ipv6.text_to_bin('::'))
- eq_(res[2], 2)
- eq_(res[3], 0)
- eq_(res[4], len(srcs))
-
- (src1, src2, src3) = struct.unpack_from(
- '16s16s16s', six.binary_type(buf), icmpv6.mldv2_query._MIN_LEN)
-
- eq_(src1, addrconv.ipv6.text_to_bin(srcs[0]))
- eq_(src2, addrconv.ipv6.text_to_bin(srcs[1]))
- eq_(src3, addrconv.ipv6.text_to_bin(srcs[2]))
-
- def test_json(self):
- jsondict = self.mld.to_jsondict()
- mld = icmpv6.mldv2_query.from_jsondict(jsondict['mldv2_query'])
- eq_(str(self.mld), str(mld))
-
- def test_json_with_srcs(self):
- self.setUp_with_srcs()
- self.test_json()
-
-
-class Test_mldv2_report(unittest.TestCase):
- type_ = 143
- code = 0
- csum = 0xb5a4
- record_num = 0
- records = []
-
- mld = icmpv6.mldv2_report(record_num, records)
-
- buf = b'\x8f\x00\xb5\xa4\x00\x00\x00\x00'
-
- def setUp(self):
- pass
-
- def setUp_with_records(self):
- self.record1 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 0, 'ff00::1')
- self.record2 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 2, 'ff00::2',
- ['fe80::1', 'fe80::2'])
- self.record3 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 1, 0, 'ff00::3', [], b'abc\x00')
- self.record4 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 2, 2, 'ff00::4',
- ['fe80::1', 'fe80::2'], b'abcde\x00\x00\x00')
- self.records = [self.record1, self.record2, self.record3,
- self.record4]
- self.record_num = len(self.records)
- self.mld = icmpv6.mldv2_report(self.record_num, self.records)
- self.buf = b'\x8f\x00\xb5\xa4\x00\x00\x00\x04' \
- + b'\x01\x00\x00\x00' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\x01\x00\x00\x02' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x02' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x02' \
- + b'\x01\x01\x00\x00' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x03' \
- + b'\x61\x62\x63\x00' \
- + b'\x01\x02\x00\x02' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x04' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x02' \
- + b'\x61\x62\x63\x64\x65\x00\x00\x00'
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.mld.record_num, self.record_num)
- eq_(self.mld.records, self.records)
-
- def test_init_with_records(self):
- self.setUp_with_records()
- self.test_init()
-
- def test_parser(self):
- msg, n, _ = icmpv6.icmpv6.parser(self.buf)
-
- eq_(msg.type_, self.type_)
- eq_(msg.code, self.code)
- eq_(msg.csum, self.csum)
- eq_(msg.data.record_num, self.record_num)
- eq_(repr(msg.data.records), repr(self.records))
-
- def test_parser_with_records(self):
- self.setUp_with_records()
- self.test_parser()
-
- def test_serialize(self):
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
- prev = ipv6(6, 0, 0, len(self.buf), 64, 255, src_ipv6, dst_ipv6)
- mld_csum = icmpv6_csum(prev, self.buf)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, self.mld)
- buf = icmp.serialize(bytearray(), prev)
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR,
- six.binary_type(buf))
- (record_num, ) = struct.unpack_from(
- self.mld._PACK_STR, six.binary_type(buf), icmp._MIN_LEN)
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, mld_csum)
- eq_(record_num, self.record_num)
-
- def test_serialize_with_records(self):
- self.setUp_with_records()
- src_ipv6 = '3ffe:507:0:1:200:86ff:fe05:80da'
- dst_ipv6 = '3ffe:501:0:1001::2'
- prev = ipv6(6, 0, 0, len(self.buf), 64, 255, src_ipv6, dst_ipv6)
- mld_csum = icmpv6_csum(prev, self.buf)
-
- icmp = icmpv6.icmpv6(self.type_, self.code, 0, self.mld)
- buf = six.binary_type(icmp.serialize(bytearray(), prev))
-
- (type_, code, csum) = struct.unpack_from(icmp._PACK_STR,
- six.binary_type(buf))
- (record_num, ) = struct.unpack_from(
- self.mld._PACK_STR, six.binary_type(buf), icmp._MIN_LEN)
- offset = icmp._MIN_LEN + self.mld._MIN_LEN
- rec1 = icmpv6.mldv2_report_group.parser(buf[offset:])
- offset += len(rec1)
- rec2 = icmpv6.mldv2_report_group.parser(buf[offset:])
- offset += len(rec2)
- rec3 = icmpv6.mldv2_report_group.parser(buf[offset:])
- offset += len(rec3)
- rec4 = icmpv6.mldv2_report_group.parser(buf[offset:])
-
- eq_(type_, self.type_)
- eq_(code, self.code)
- eq_(csum, mld_csum)
- eq_(record_num, self.record_num)
- eq_(repr(rec1), repr(self.record1))
- eq_(repr(rec2), repr(self.record2))
- eq_(repr(rec3), repr(self.record3))
- eq_(repr(rec4), repr(self.record4))
-
- def _build_mldv2_report(self):
- e = ethernet(ethertype=ether.ETH_TYPE_IPV6)
- i = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(type_=icmpv6.MLDV2_LISTENER_REPORT,
- data=self.mld)
- p = e / i / ic
- return p
-
- def test_build_mldv2_report(self):
- p = self._build_mldv2_report()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_IPV6)
-
- i = self.find_protocol(p, "ipv6")
- ok_(i)
- eq_(i.nxt, inet.IPPROTO_ICMPV6)
-
- ic = self.find_protocol(p, "icmpv6")
- ok_(ic)
- eq_(ic.type_, icmpv6.MLDV2_LISTENER_REPORT)
-
- eq_(ic.data.record_num, self.record_num)
- eq_(ic.data.records, self.records)
-
- def test_build_mldv2_report_with_records(self):
- self.setUp_with_records()
- self.test_build_mldv2_report()
-
- def test_to_string(self):
- ic = icmpv6.icmpv6(self.type_, self.code, self.csum, self.mld)
-
- mld_values = {'record_num': self.record_num,
- 'records': self.records}
- _mld_str = ','.join(['%s=%s' % (k, repr(mld_values[k]))
- for k, v in inspect.getmembers(self.mld)
- if k in mld_values])
- mld_str = '%s(%s)' % (icmpv6.mldv2_report.__name__, _mld_str)
-
- icmp_values = {'type_': repr(self.type_),
- 'code': repr(self.code),
- 'csum': repr(self.csum),
- 'data': mld_str}
- _ic_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, v in inspect.getmembers(ic)
- if k in icmp_values])
- ic_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _ic_str)
-
- eq_(str(ic), ic_str)
- eq_(repr(ic), ic_str)
-
- def test_to_string_with_records(self):
- self.setUp_with_records()
- self.test_to_string()
-
- @raises(Exception)
- def test_record_num_larger_than_records(self):
- self.record1 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 0, 'ff00::1')
- self.record2 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 2, 'ff00::2',
- ['fe80::1', 'fe80::2'])
- self.record3 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 1, 0, 'ff00::3', [], b'abc\x00')
- self.record4 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 2, 2, 'ff00::4',
- ['fe80::1', 'fe80::2'], b'abcde\x00\x00\x00')
- self.records = [self.record1, self.record2, self.record3,
- self.record4]
- self.record_num = len(self.records) + 1
- self.buf = struct.pack(
- icmpv6.mldv2_report._PACK_STR, self.record_num)
- self.buf += self.record1.serialize()
- self.buf += self.record2.serialize()
- self.buf += self.record3.serialize()
- self.buf += self.record4.serialize()
- self.mld = icmpv6.mldv2_report(self.record_num, self.records)
- self.test_parser()
-
- @raises(Exception)
- def test_record_num_smaller_than_records(self):
- self.record1 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 0, 'ff00::1')
- self.record2 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 2, 'ff00::2',
- ['fe80::1', 'fe80::2'])
- self.record3 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 1, 0, 'ff00::3', [], b'abc\x00')
- self.record4 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 2, 2, 'ff00::4',
- ['fe80::1', 'fe80::2'], b'abcde\x00\x00\x00')
- self.records = [self.record1, self.record2, self.record3,
- self.record4]
- self.record_num = len(self.records) - 1
- self.buf = struct.pack(
- icmpv6.mldv2_report._PACK_STR, self.record_num)
- self.buf += self.record1.serialize()
- self.buf += self.record2.serialize()
- self.buf += self.record3.serialize()
- self.buf += self.record4.serialize()
- self.mld = icmpv6.mldv2_report(self.record_num, self.records)
- self.test_parser()
-
- def test_default_args(self):
- prev = ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6(
- type_=icmpv6.MLDV2_LISTENER_REPORT, data=icmpv6.mldv2_report())
- prev.serialize(ic, None)
- buf = ic.serialize(bytearray(), prev)
- res = struct.unpack(icmpv6.icmpv6._PACK_STR, six.binary_type(buf[:4]))
-
- eq_(res[0], icmpv6.MLDV2_LISTENER_REPORT)
- eq_(res[1], 0)
- eq_(res[2], icmpv6_csum(prev, buf))
-
- res = struct.unpack(icmpv6.mldv2_report._PACK_STR, six.binary_type(buf[4:]))
-
- eq_(res[0], 0)
-
- # records without record_num
- record1 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 0, 'ff00::1')
- record2 = icmpv6.mldv2_report_group(
- icmpv6.MODE_IS_INCLUDE, 0, 2, 'ff00::2',
- ['fe80::1', 'fe80::2'])
- records = [record1, record2]
- rep = icmpv6.mldv2_report(records=records)
- buf = rep.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_report._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], len(records))
-
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf),
- icmpv6.mldv2_report._MIN_LEN)
-
- eq_(res[0], icmpv6.MODE_IS_INCLUDE)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], addrconv.ipv6.text_to_bin('ff00::1'))
-
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf),
- icmpv6.mldv2_report._MIN_LEN +
- icmpv6.mldv2_report_group._MIN_LEN)
-
- eq_(res[0], icmpv6.MODE_IS_INCLUDE)
- eq_(res[1], 0)
- eq_(res[2], 2)
- eq_(res[3], addrconv.ipv6.text_to_bin('ff00::2'))
-
- res = struct.unpack_from(
- '16s16s', six.binary_type(buf),
- icmpv6.mldv2_report._MIN_LEN +
- icmpv6.mldv2_report_group._MIN_LEN +
- icmpv6.mldv2_report_group._MIN_LEN)
-
- eq_(res[0], addrconv.ipv6.text_to_bin('fe80::1'))
- eq_(res[1], addrconv.ipv6.text_to_bin('fe80::2'))
-
- def test_json(self):
- jsondict = self.mld.to_jsondict()
- mld = icmpv6.mldv2_report.from_jsondict(jsondict['mldv2_report'])
- eq_(str(self.mld), str(mld))
-
- def test_json_with_records(self):
- self.setUp_with_records()
- self.test_json()
-
-
-class Test_mldv2_report_group(unittest.TestCase):
- type_ = icmpv6.MODE_IS_INCLUDE
- aux_len = 0
- num = 0
- address = 'ff00::1'
- srcs = []
- aux = None
- mld = icmpv6.mldv2_report_group(
- type_, aux_len, num, address, srcs, aux)
- buf = b'\x01\x00\x00\x00' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01'
-
- def setUp(self):
- pass
-
- def setUp_with_srcs(self):
- self.srcs = ['fe80::1', 'fe80::2', 'fe80::3']
- self.num = len(self.srcs)
- self.mld = icmpv6.mldv2_report_group(
- self.type_, self.aux_len, self.num, self.address, self.srcs,
- self.aux)
- self.buf = b'\x01\x00\x00\x03' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x02' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x03'
-
- def setUp_with_aux(self):
- self.aux = b'\x01\x02\x03\x04\x05\x06\x07\x08'
- self.aux_len = len(self.aux) // 4
- self.mld = icmpv6.mldv2_report_group(
- self.type_, self.aux_len, self.num, self.address, self.srcs,
- self.aux)
- self.buf = b'\x01\x02\x00\x00' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\x01\x02\x03\x04\x05\x06\x07\x08'
-
- def setUp_with_srcs_and_aux(self):
- self.srcs = ['fe80::1', 'fe80::2', 'fe80::3']
- self.num = len(self.srcs)
- self.aux = b'\x01\x02\x03\x04\x05\x06\x07\x08'
- self.aux_len = len(self.aux) // 4
- self.mld = icmpv6.mldv2_report_group(
- self.type_, self.aux_len, self.num, self.address, self.srcs,
- self.aux)
- self.buf = b'\x01\x02\x00\x03' \
- + b'\xff\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x02' \
- + b'\xfe\x80\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x03' \
- + b'\x01\x02\x03\x04\x05\x06\x07\x08'
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.mld.type_, self.type_)
- eq_(self.mld.aux_len, self.aux_len)
- eq_(self.mld.num, self.num)
- eq_(self.mld.address, self.address)
- eq_(self.mld.srcs, self.srcs)
- eq_(self.mld.aux, self.aux)
-
- def test_init_with_srcs(self):
- self.setUp_with_srcs()
- self.test_init()
-
- def test_init_with_aux(self):
- self.setUp_with_aux()
- self.test_init()
-
- def test_init_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- self.test_init()
-
- def test_parser(self):
- _res = icmpv6.mldv2_report_group.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(res.type_, self.type_)
- eq_(res.aux_len, self.aux_len)
- eq_(res.num, self.num)
- eq_(res.address, self.address)
- eq_(res.srcs, self.srcs)
- eq_(res.aux, self.aux)
-
- def test_parser_with_srcs(self):
- self.setUp_with_srcs()
- self.test_parser()
-
- def test_parser_with_aux(self):
- self.setUp_with_aux()
- self.test_parser()
-
- def test_parser_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- self.test_parser()
-
- def test_serialize(self):
- buf = self.mld.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv6.text_to_bin(self.address))
-
- def test_serialize_with_srcs(self):
- self.setUp_with_srcs()
- buf = self.mld.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf))
- (src1, src2, src3) = struct.unpack_from(
- '16s16s16s', six.binary_type(buf), icmpv6.mldv2_report_group._MIN_LEN)
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv6.text_to_bin(self.address))
- eq_(src1, addrconv.ipv6.text_to_bin(self.srcs[0]))
- eq_(src2, addrconv.ipv6.text_to_bin(self.srcs[1]))
- eq_(src3, addrconv.ipv6.text_to_bin(self.srcs[2]))
-
- def test_serialize_with_aux(self):
- self.setUp_with_aux()
- buf = self.mld.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf))
- (aux, ) = struct.unpack_from(
- '%ds' % (self.aux_len * 4), six.binary_type(buf),
- icmpv6.mldv2_report_group._MIN_LEN)
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv6.text_to_bin(self.address))
- eq_(aux, self.aux)
-
- def test_serialize_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- buf = self.mld.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf))
- (src1, src2, src3) = struct.unpack_from(
- '16s16s16s', six.binary_type(buf), icmpv6.mldv2_report_group._MIN_LEN)
- (aux, ) = struct.unpack_from(
- '%ds' % (self.aux_len * 4), six.binary_type(buf),
- icmpv6.mldv2_report_group._MIN_LEN + 16 * 3)
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv6.text_to_bin(self.address))
- eq_(src1, addrconv.ipv6.text_to_bin(self.srcs[0]))
- eq_(src2, addrconv.ipv6.text_to_bin(self.srcs[1]))
- eq_(src3, addrconv.ipv6.text_to_bin(self.srcs[2]))
- eq_(aux, self.aux)
-
- def test_to_string(self):
- igmp_values = {'type_': repr(self.type_),
- 'aux_len': repr(self.aux_len),
- 'num': repr(self.num),
- 'address': repr(self.address),
- 'srcs': repr(self.srcs),
- 'aux': repr(self.aux)}
- _g_str = ','.join(['%s=%s' % (k, igmp_values[k])
- for k, v in inspect.getmembers(self.mld)
- if k in igmp_values])
- g_str = '%s(%s)' % (icmpv6.mldv2_report_group.__name__, _g_str)
-
- eq_(str(self.mld), g_str)
- eq_(repr(self.mld), g_str)
-
- def test_to_string_with_srcs(self):
- self.setUp_with_srcs()
- self.test_to_string()
-
- def test_to_string_with_aux(self):
- self.setUp_with_aux()
- self.test_to_string()
-
- def test_to_string_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- self.test_to_string()
-
- def test_len(self):
- eq_(len(self.mld), 20)
-
- def test_len_with_srcs(self):
- self.setUp_with_srcs()
- eq_(len(self.mld), 68)
-
- def test_len_with_aux(self):
- self.setUp_with_aux()
- eq_(len(self.mld), 28)
-
- def test_len_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- eq_(len(self.mld), 76)
-
- @raises
- def test_num_larger_than_srcs(self):
- self.srcs = ['fe80::1', 'fe80::2', 'fe80::3']
- self.num = len(self.srcs) + 1
- self.buf = struct.pack(
- icmpv6.mldv2_report_group._PACK_STR, self.type_, self.aux_len,
- self.num, addrconv.ipv6.text_to_bin(self.address))
- for src in self.srcs:
- self.buf += pack('16s', addrconv.ipv6.text_to_bin(src))
- self.mld = icmpv6.mldv2_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- @raises
- def test_num_smaller_than_srcs(self):
- self.srcs = ['fe80::1', 'fe80::2', 'fe80::3']
- self.num = len(self.srcs) - 1
- self.buf = struct.pack(
- icmpv6.mldv2_report_group._PACK_STR, self.type_, self.aux_len,
- self.num, addrconv.ipv6.text_to_bin(self.address))
- for src in self.srcs:
- self.buf += pack('16s', addrconv.ipv6.text_to_bin(src))
- self.mld = icmpv6.mldv2_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- @raises
- def test_aux_len_larger_than_aux(self):
- self.aux = b'\x01\x02\x03\x04\x05\x06\x07\x08'
- self.aux_len = len(self.aux) // 4 + 1
- self.buf = struct.pack(
- icmpv6.mldv2_report_group._PACK_STR, self.type_, self.aux_len,
- self.num, addrconv.ipv6.text_to_bin(self.address))
- self.buf += self.aux
- self.mld = icmpv6.mldv2_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- @raises
- def test_aux_len_smaller_than_aux(self):
- self.aux = b'\x01\x02\x03\x04\x05\x06\x07\x08'
- self.aux_len = len(self.aux) // 4 - 1
- self.buf = struct.pack(
- icmpv6.mldv2_report_group._PACK_STR, self.type_, self.aux_len,
- self.num, addrconv.ipv6.text_to_bin(self.address))
- self.buf += self.aux
- self.mld = icmpv6.mldv2_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- def test_default_args(self):
- rep = icmpv6.mldv2_report_group()
- buf = rep.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], addrconv.ipv6.text_to_bin('::'))
-
- # srcs without num
- srcs = ['fe80::1', 'fe80::2', 'fe80::3']
- rep = icmpv6.mldv2_report_group(srcs=srcs)
- buf = rep.serialize()
- LOG.info(repr(buf))
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], len(srcs))
- eq_(res[3], addrconv.ipv6.text_to_bin('::'))
-
- (src1, src2, src3) = struct.unpack_from(
- '16s16s16s', six.binary_type(buf), icmpv6.mldv2_report_group._MIN_LEN)
-
- eq_(src1, addrconv.ipv6.text_to_bin(srcs[0]))
- eq_(src2, addrconv.ipv6.text_to_bin(srcs[1]))
- eq_(src3, addrconv.ipv6.text_to_bin(srcs[2]))
-
- # aux without aux_len
- rep = icmpv6.mldv2_report_group(aux=b'\x01\x02\x03')
- buf = rep.serialize()
- res = struct.unpack_from(
- icmpv6.mldv2_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 1)
- eq_(res[2], 0)
- eq_(res[3], addrconv.ipv6.text_to_bin('::'))
- eq_(buf[icmpv6.mldv2_report_group._MIN_LEN:], b'\x01\x02\x03\x00')
-
- def test_json(self):
- jsondict = self.mld.to_jsondict()
- mld = icmpv6.mldv2_report_group.from_jsondict(
- jsondict['mldv2_report_group'])
- eq_(str(self.mld), str(mld))
-
- def test_json_with_srcs(self):
- self.setUp_with_srcs()
- self.test_json()
-
- def test_json_with_aux(self):
- self.setUp_with_aux()
- self.test_json()
-
- def test_json_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- self.test_json()
diff --git a/tests/unit/packet/test_igmp.py b/tests/unit/packet/test_igmp.py
deleted file mode 100644
index 9813450d..00000000
--- a/tests/unit/packet/test_igmp.py
+++ /dev/null
@@ -1,997 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import inspect
-import logging
-import six
-
-from struct import pack, unpack_from, pack_into
-from nose.tools import ok_, eq_, raises
-from ryu.ofproto import ether
-from ryu.ofproto import inet
-from ryu.lib.packet.ethernet import ethernet
-from ryu.lib.packet.ipv4 import ipv4
-from ryu.lib.packet.packet import Packet
-from ryu.lib.packet.packet_utils import checksum
-from ryu.lib import addrconv
-from ryu.lib.packet.igmp import igmp
-from ryu.lib.packet.igmp import igmpv3_query
-from ryu.lib.packet.igmp import igmpv3_report
-from ryu.lib.packet.igmp import igmpv3_report_group
-from ryu.lib.packet.igmp import IGMP_TYPE_QUERY
-from ryu.lib.packet.igmp import IGMP_TYPE_REPORT_V3
-from ryu.lib.packet.igmp import MODE_IS_INCLUDE
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_igmp(unittest.TestCase):
- """ Test case for Internet Group Management Protocol
- """
- def setUp(self):
- self.msgtype = IGMP_TYPE_QUERY
- self.maxresp = 100
- self.csum = 0
- self.address = '225.0.0.1'
-
- self.buf = pack(igmp._PACK_STR, self.msgtype, self.maxresp,
- self.csum,
- addrconv.ipv4.text_to_bin(self.address))
-
- self.g = igmp(self.msgtype, self.maxresp, self.csum,
- self.address)
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.msgtype, self.g.msgtype)
- eq_(self.maxresp, self.g.maxresp)
- eq_(self.csum, self.g.csum)
- eq_(self.address, self.g.address)
-
- def test_parser(self):
- _res = self.g.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(res.msgtype, self.msgtype)
- eq_(res.maxresp, self.maxresp)
- eq_(res.csum, self.csum)
- eq_(res.address, self.address)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.g.serialize(data, prev)
-
- res = unpack_from(igmp._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], self.msgtype)
- eq_(res[1], self.maxresp)
- eq_(res[2], checksum(self.buf))
- eq_(res[3], addrconv.ipv4.text_to_bin(self.address))
-
- def _build_igmp(self):
- dl_dst = '11:22:33:44:55:66'
- dl_src = 'aa:bb:cc:dd:ee:ff'
- dl_type = ether.ETH_TYPE_IP
- e = ethernet(dl_dst, dl_src, dl_type)
-
- total_length = 20 + igmp._MIN_LEN
- nw_proto = inet.IPPROTO_IGMP
- nw_dst = '11.22.33.44'
- nw_src = '55.66.77.88'
- i = ipv4(total_length=total_length, src=nw_src, dst=nw_dst,
- proto=nw_proto)
-
- p = Packet()
-
- p.add_protocol(e)
- p.add_protocol(i)
- p.add_protocol(self.g)
- p.serialize()
- return p
-
- def test_build_igmp(self):
- p = self._build_igmp()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_IP)
-
- i = self.find_protocol(p, "ipv4")
- ok_(i)
- eq_(i.proto, inet.IPPROTO_IGMP)
-
- g = self.find_protocol(p, "igmp")
- ok_(g)
-
- eq_(g.msgtype, self.msgtype)
- eq_(g.maxresp, self.maxresp)
- eq_(g.csum, checksum(self.buf))
- eq_(g.address, self.address)
-
- def test_to_string(self):
- igmp_values = {'msgtype': repr(self.msgtype),
- 'maxresp': repr(self.maxresp),
- 'csum': repr(self.csum),
- 'address': repr(self.address)}
- _g_str = ','.join(['%s=%s' % (k, igmp_values[k])
- for k, v in inspect.getmembers(self.g)
- if k in igmp_values])
- g_str = '%s(%s)' % (igmp.__name__, _g_str)
-
- eq_(str(self.g), g_str)
- eq_(repr(self.g), g_str)
-
- @raises(Exception)
- def test_malformed_igmp(self):
- m_short_buf = self.buf[1:igmp._MIN_LEN]
- igmp.parser(m_short_buf)
-
- def test_default_args(self):
- ig = igmp()
- buf = ig.serialize(bytearray(), None)
- res = unpack_from(igmp._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0x11)
- eq_(res[1], 0)
- eq_(res[3], addrconv.ipv4.text_to_bin('0.0.0.0'))
-
- def test_json(self):
- jsondict = self.g.to_jsondict()
- g = igmp.from_jsondict(jsondict['igmp'])
- eq_(str(self.g), str(g))
-
-
-class Test_igmpv3_query(unittest.TestCase):
- """ Test case for Internet Group Management Protocol v3
- Membership Query Message"""
- def setUp(self):
- self.msgtype = IGMP_TYPE_QUERY
- self.maxresp = 100
- self.csum = 0
- self.address = '225.0.0.1'
- self.s_flg = 0
- self.qrv = 2
- self.qqic = 10
- self.num = 0
- self.srcs = []
-
- self.s_qrv = self.s_flg << 3 | self.qrv
-
- self.buf = pack(igmpv3_query._PACK_STR, self.msgtype,
- self.maxresp, self.csum,
- addrconv.ipv4.text_to_bin(self.address),
- self.s_qrv, self.qqic, self.num)
-
- self.g = igmpv3_query(
- self.msgtype, self.maxresp, self.csum, self.address,
- self.s_flg, self.qrv, self.qqic, self.num, self.srcs)
-
- def setUp_with_srcs(self):
- self.srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- self.num = len(self.srcs)
- self.buf = pack(igmpv3_query._PACK_STR, self.msgtype,
- self.maxresp, self.csum,
- addrconv.ipv4.text_to_bin(self.address),
- self.s_qrv, self.qqic, self.num)
- for src in self.srcs:
- self.buf += pack('4s', addrconv.ipv4.text_to_bin(src))
- self.g = igmpv3_query(
- self.msgtype, self.maxresp, self.csum, self.address,
- self.s_flg, self.qrv, self.qqic, self.num, self.srcs)
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.msgtype, self.g.msgtype)
- eq_(self.maxresp, self.g.maxresp)
- eq_(self.csum, self.g.csum)
- eq_(self.address, self.g.address)
- eq_(self.s_flg, self.g.s_flg)
- eq_(self.qrv, self.g.qrv)
- eq_(self.qqic, self.g.qqic)
- eq_(self.num, self.g.num)
- eq_(self.srcs, self.g.srcs)
-
- def test_init_with_srcs(self):
- self.setUp_with_srcs()
- self.test_init()
-
- def test_parser(self):
- _res = self.g.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(res.msgtype, self.msgtype)
- eq_(res.maxresp, self.maxresp)
- eq_(res.csum, self.csum)
- eq_(res.address, self.address)
- eq_(res.s_flg, self.s_flg)
- eq_(res.qrv, self.qrv)
- eq_(res.qqic, self.qqic)
- eq_(res.num, self.num)
- eq_(res.srcs, self.srcs)
-
- def test_parser_with_srcs(self):
- self.setUp_with_srcs()
- self.test_parser()
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.g.serialize(data, prev)
-
- res = unpack_from(igmpv3_query._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], self.msgtype)
- eq_(res[1], self.maxresp)
- eq_(res[2], checksum(self.buf))
- eq_(res[3], addrconv.ipv4.text_to_bin(self.address))
- eq_(res[4], self.s_qrv)
- eq_(res[5], self.qqic)
- eq_(res[6], self.num)
-
- def test_serialize_with_srcs(self):
- self.setUp_with_srcs()
- data = bytearray()
- prev = None
- buf = self.g.serialize(data, prev)
-
- res = unpack_from(igmpv3_query._PACK_STR, six.binary_type(buf))
- (src1, src2, src3) = unpack_from('4s4s4s', six.binary_type(buf),
- igmpv3_query._MIN_LEN)
-
- eq_(res[0], self.msgtype)
- eq_(res[1], self.maxresp)
- eq_(res[2], checksum(self.buf))
- eq_(res[3], addrconv.ipv4.text_to_bin(self.address))
- eq_(res[4], self.s_qrv)
- eq_(res[5], self.qqic)
- eq_(res[6], self.num)
- eq_(src1, addrconv.ipv4.text_to_bin(self.srcs[0]))
- eq_(src2, addrconv.ipv4.text_to_bin(self.srcs[1]))
- eq_(src3, addrconv.ipv4.text_to_bin(self.srcs[2]))
-
- def _build_igmp(self):
- dl_dst = '11:22:33:44:55:66'
- dl_src = 'aa:bb:cc:dd:ee:ff'
- dl_type = ether.ETH_TYPE_IP
- e = ethernet(dl_dst, dl_src, dl_type)
-
- total_length = len(ipv4()) + len(self.g)
- nw_proto = inet.IPPROTO_IGMP
- nw_dst = '11.22.33.44'
- nw_src = '55.66.77.88'
- i = ipv4(total_length=total_length, src=nw_src, dst=nw_dst,
- proto=nw_proto, ttl=1)
-
- p = Packet()
-
- p.add_protocol(e)
- p.add_protocol(i)
- p.add_protocol(self.g)
- p.serialize()
- return p
-
- def test_build_igmp(self):
- p = self._build_igmp()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_IP)
-
- i = self.find_protocol(p, "ipv4")
- ok_(i)
- eq_(i.proto, inet.IPPROTO_IGMP)
-
- g = self.find_protocol(p, "igmpv3_query")
- ok_(g)
-
- eq_(g.msgtype, self.msgtype)
- eq_(g.maxresp, self.maxresp)
- eq_(g.csum, checksum(self.buf))
- eq_(g.address, self.address)
- eq_(g.s_flg, self.s_flg)
- eq_(g.qrv, self.qrv)
- eq_(g.qqic, self.qqic)
- eq_(g.num, self.num)
- eq_(g.srcs, self.srcs)
-
- def test_build_igmp_with_srcs(self):
- self.setUp_with_srcs()
- self.test_build_igmp()
-
- def test_to_string(self):
- igmp_values = {'msgtype': repr(self.msgtype),
- 'maxresp': repr(self.maxresp),
- 'csum': repr(self.csum),
- 'address': repr(self.address),
- 's_flg': repr(self.s_flg),
- 'qrv': repr(self.qrv),
- 'qqic': repr(self.qqic),
- 'num': repr(self.num),
- 'srcs': repr(self.srcs)}
- _g_str = ','.join(['%s=%s' % (k, igmp_values[k])
- for k, v in inspect.getmembers(self.g)
- if k in igmp_values])
- g_str = '%s(%s)' % (igmpv3_query.__name__, _g_str)
-
- eq_(str(self.g), g_str)
- eq_(repr(self.g), g_str)
-
- def test_to_string_with_srcs(self):
- self.setUp_with_srcs()
- self.test_to_string()
-
- @raises(Exception)
- def test_num_larger_than_srcs(self):
- self.srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- self.num = len(self.srcs) + 1
- self.buf = pack(igmpv3_query._PACK_STR, self.msgtype,
- self.maxresp, self.csum,
- addrconv.ipv4.text_to_bin(self.address),
- self.s_qrv, self.qqic, self.num)
- for src in self.srcs:
- self.buf += pack('4s', addrconv.ipv4.text_to_bin(src))
- self.g = igmpv3_query(
- self.msgtype, self.maxresp, self.csum, self.address,
- self.s_flg, self.qrv, self.qqic, self.num, self.srcs)
- self.test_parser()
-
- @raises(Exception)
- def test_num_smaller_than_srcs(self):
- self.srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- self.num = len(self.srcs) - 1
- self.buf = pack(igmpv3_query._PACK_STR, self.msgtype,
- self.maxresp, self.csum,
- addrconv.ipv4.text_to_bin(self.address),
- self.s_qrv, self.qqic, self.num)
- for src in self.srcs:
- self.buf += pack('4s', addrconv.ipv4.text_to_bin(src))
- self.g = igmpv3_query(
- self.msgtype, self.maxresp, self.csum, self.address,
- self.s_flg, self.qrv, self.qqic, self.num, self.srcs)
- self.test_parser()
-
- def test_default_args(self):
- prev = ipv4(proto=inet.IPPROTO_IGMP)
- g = igmpv3_query()
- prev.serialize(g, None)
- buf = g.serialize(bytearray(), prev)
- res = unpack_from(igmpv3_query._PACK_STR, six.binary_type(buf))
- buf = bytearray(buf)
- pack_into('!H', buf, 2, 0)
-
- eq_(res[0], IGMP_TYPE_QUERY)
- eq_(res[1], 100)
- eq_(res[2], checksum(buf))
- eq_(res[3], addrconv.ipv4.text_to_bin('0.0.0.0'))
- eq_(res[4], 2)
- eq_(res[5], 0)
- eq_(res[6], 0)
-
- # srcs without num
- prev = ipv4(proto=inet.IPPROTO_IGMP)
- srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- g = igmpv3_query(srcs=srcs)
- prev.serialize(g, None)
- buf = g.serialize(bytearray(), prev)
- res = unpack_from(igmpv3_query._PACK_STR, six.binary_type(buf))
- buf = bytearray(buf)
- pack_into('!H', buf, 2, 0)
-
- eq_(res[0], IGMP_TYPE_QUERY)
- eq_(res[1], 100)
- eq_(res[2], checksum(buf))
- eq_(res[3], addrconv.ipv4.text_to_bin('0.0.0.0'))
- eq_(res[4], 2)
- eq_(res[5], 0)
- eq_(res[6], len(srcs))
-
- res = unpack_from('4s4s4s', six.binary_type(buf), igmpv3_query._MIN_LEN)
-
- eq_(res[0], addrconv.ipv4.text_to_bin(srcs[0]))
- eq_(res[1], addrconv.ipv4.text_to_bin(srcs[1]))
- eq_(res[2], addrconv.ipv4.text_to_bin(srcs[2]))
-
- def test_json(self):
- jsondict = self.g.to_jsondict()
- g = igmpv3_query.from_jsondict(jsondict['igmpv3_query'])
- eq_(str(self.g), str(g))
-
- def test_json_with_srcs(self):
- self.setUp_with_srcs()
- self.test_json()
-
-
-class Test_igmpv3_report(unittest.TestCase):
- """ Test case for Internet Group Management Protocol v3
- Membership Report Message"""
- def setUp(self):
- self.msgtype = IGMP_TYPE_REPORT_V3
- self.csum = 0
- self.record_num = 0
- self.records = []
-
- self.buf = pack(igmpv3_report._PACK_STR, self.msgtype,
- self.csum, self.record_num)
-
- self.g = igmpv3_report(
- self.msgtype, self.csum, self.record_num, self.records)
-
- def setUp_with_records(self):
- self.record1 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 0, '225.0.0.1')
- self.record2 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 2, '225.0.0.2',
- ['172.16.10.10', '172.16.10.27'])
- self.record3 = igmpv3_report_group(
- MODE_IS_INCLUDE, 1, 0, '225.0.0.3', [], b'abc\x00')
- self.record4 = igmpv3_report_group(
- MODE_IS_INCLUDE, 2, 2, '225.0.0.4',
- ['172.16.10.10', '172.16.10.27'], b'abcde\x00\x00\x00')
- self.records = [self.record1, self.record2, self.record3,
- self.record4]
- self.record_num = len(self.records)
- self.buf = pack(igmpv3_report._PACK_STR, self.msgtype,
- self.csum, self.record_num)
- self.buf += self.record1.serialize()
- self.buf += self.record2.serialize()
- self.buf += self.record3.serialize()
- self.buf += self.record4.serialize()
- self.g = igmpv3_report(
- self.msgtype, self.csum, self.record_num, self.records)
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.msgtype, self.g.msgtype)
- eq_(self.csum, self.g.csum)
- eq_(self.record_num, self.g.record_num)
- eq_(self.records, self.g.records)
-
- def test_init_with_records(self):
- self.setUp_with_records()
- self.test_init()
-
- def test_parser(self):
- _res = self.g.parser(six.binary_type(self.buf))
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(res.msgtype, self.msgtype)
- eq_(res.csum, self.csum)
- eq_(res.record_num, self.record_num)
- eq_(repr(res.records), repr(self.records))
-
- def test_parser_with_records(self):
- self.setUp_with_records()
- self.test_parser()
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.g.serialize(data, prev)
-
- res = unpack_from(igmpv3_report._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], self.msgtype)
- eq_(res[1], checksum(self.buf))
- eq_(res[2], self.record_num)
-
- def test_serialize_with_records(self):
- self.setUp_with_records()
- data = bytearray()
- prev = None
- buf = six.binary_type(self.g.serialize(data, prev))
-
- res = unpack_from(igmpv3_report._PACK_STR, buf)
- offset = igmpv3_report._MIN_LEN
- rec1 = igmpv3_report_group.parser(buf[offset:])
- offset += len(rec1)
- rec2 = igmpv3_report_group.parser(buf[offset:])
- offset += len(rec2)
- rec3 = igmpv3_report_group.parser(buf[offset:])
- offset += len(rec3)
- rec4 = igmpv3_report_group.parser(buf[offset:])
-
- eq_(res[0], self.msgtype)
- eq_(res[1], checksum(self.buf))
- eq_(res[2], self.record_num)
- eq_(repr(rec1), repr(self.record1))
- eq_(repr(rec2), repr(self.record2))
- eq_(repr(rec3), repr(self.record3))
- eq_(repr(rec4), repr(self.record4))
-
- def _build_igmp(self):
- dl_dst = '11:22:33:44:55:66'
- dl_src = 'aa:bb:cc:dd:ee:ff'
- dl_type = ether.ETH_TYPE_IP
- e = ethernet(dl_dst, dl_src, dl_type)
-
- total_length = len(ipv4()) + len(self.g)
- nw_proto = inet.IPPROTO_IGMP
- nw_dst = '11.22.33.44'
- nw_src = '55.66.77.88'
- i = ipv4(total_length=total_length, src=nw_src, dst=nw_dst,
- proto=nw_proto, ttl=1)
-
- p = Packet()
-
- p.add_protocol(e)
- p.add_protocol(i)
- p.add_protocol(self.g)
- p.serialize()
- return p
-
- def test_build_igmp(self):
- p = self._build_igmp()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_IP)
-
- i = self.find_protocol(p, "ipv4")
- ok_(i)
- eq_(i.proto, inet.IPPROTO_IGMP)
-
- g = self.find_protocol(p, "igmpv3_report")
- ok_(g)
-
- eq_(g.msgtype, self.msgtype)
- eq_(g.csum, checksum(self.buf))
- eq_(g.record_num, self.record_num)
- eq_(g.records, self.records)
-
- def test_build_igmp_with_records(self):
- self.setUp_with_records()
- self.test_build_igmp()
-
- def test_to_string(self):
- igmp_values = {'msgtype': repr(self.msgtype),
- 'csum': repr(self.csum),
- 'record_num': repr(self.record_num),
- 'records': repr(self.records)}
- _g_str = ','.join(['%s=%s' % (k, igmp_values[k])
- for k, v in inspect.getmembers(self.g)
- if k in igmp_values])
- g_str = '%s(%s)' % (igmpv3_report.__name__, _g_str)
-
- eq_(str(self.g), g_str)
- eq_(repr(self.g), g_str)
-
- def test_to_string_with_records(self):
- self.setUp_with_records()
- self.test_to_string()
-
- @raises(Exception)
- def test_record_num_larger_than_records(self):
- self.record1 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 0, '225.0.0.1')
- self.record2 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 2, '225.0.0.2',
- ['172.16.10.10', '172.16.10.27'])
- self.record3 = igmpv3_report_group(
- MODE_IS_INCLUDE, 1, 0, '225.0.0.3', [], b'abc\x00')
- self.record4 = igmpv3_report_group(
- MODE_IS_INCLUDE, 1, 2, '225.0.0.4',
- ['172.16.10.10', '172.16.10.27'], b'abc\x00')
- self.records = [self.record1, self.record2, self.record3,
- self.record4]
- self.record_num = len(self.records) + 1
- self.buf = pack(igmpv3_report._PACK_STR, self.msgtype,
- self.csum, self.record_num)
- self.buf += self.record1.serialize()
- self.buf += self.record2.serialize()
- self.buf += self.record3.serialize()
- self.buf += self.record4.serialize()
- self.g = igmpv3_report(
- self.msgtype, self.csum, self.record_num, self.records)
- self.test_parser()
-
- @raises(Exception)
- def test_record_num_smaller_than_records(self):
- self.record1 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 0, '225.0.0.1')
- self.record2 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 2, '225.0.0.2',
- ['172.16.10.10', '172.16.10.27'])
- self.record3 = igmpv3_report_group(
- MODE_IS_INCLUDE, 1, 0, '225.0.0.3', [], b'abc\x00')
- self.record4 = igmpv3_report_group(
- MODE_IS_INCLUDE, 1, 2, '225.0.0.4',
- ['172.16.10.10', '172.16.10.27'], b'abc\x00')
- self.records = [self.record1, self.record2, self.record3,
- self.record4]
- self.record_num = len(self.records) - 1
- self.buf = pack(igmpv3_report._PACK_STR, self.msgtype,
- self.csum, self.record_num)
- self.buf += self.record1.serialize()
- self.buf += self.record2.serialize()
- self.buf += self.record3.serialize()
- self.buf += self.record4.serialize()
- self.g = igmpv3_report(
- self.msgtype, self.csum, self.record_num, self.records)
- self.test_parser()
-
- def test_default_args(self):
- prev = ipv4(proto=inet.IPPROTO_IGMP)
- g = igmpv3_report()
- prev.serialize(g, None)
- buf = g.serialize(bytearray(), prev)
- res = unpack_from(igmpv3_report._PACK_STR, six.binary_type(buf))
- buf = bytearray(buf)
- pack_into('!H', buf, 2, 0)
-
- eq_(res[0], IGMP_TYPE_REPORT_V3)
- eq_(res[1], checksum(buf))
- eq_(res[2], 0)
-
- # records without record_num
- prev = ipv4(proto=inet.IPPROTO_IGMP)
- record1 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 0, '225.0.0.1')
- record2 = igmpv3_report_group(
- MODE_IS_INCLUDE, 0, 2, '225.0.0.2',
- ['172.16.10.10', '172.16.10.27'])
- record3 = igmpv3_report_group(
- MODE_IS_INCLUDE, 1, 0, '225.0.0.3', [], b'abc\x00')
- record4 = igmpv3_report_group(
- MODE_IS_INCLUDE, 1, 2, '225.0.0.4',
- ['172.16.10.10', '172.16.10.27'], b'abc\x00')
- records = [record1, record2, record3, record4]
- g = igmpv3_report(records=records)
- prev.serialize(g, None)
- buf = g.serialize(bytearray(), prev)
- res = unpack_from(igmpv3_report._PACK_STR, six.binary_type(buf))
- buf = bytearray(buf)
- pack_into('!H', buf, 2, 0)
-
- eq_(res[0], IGMP_TYPE_REPORT_V3)
- eq_(res[1], checksum(buf))
- eq_(res[2], len(records))
-
- def test_json(self):
- jsondict = self.g.to_jsondict()
- g = igmpv3_report.from_jsondict(jsondict['igmpv3_report'])
- eq_(str(self.g), str(g))
-
- def test_json_with_records(self):
- self.setUp_with_records()
- self.test_json()
-
-
-class Test_igmpv3_report_group(unittest.TestCase):
- """Test case for Group Records of
- Internet Group Management Protocol v3 Membership Report Message"""
- def setUp(self):
- self.type_ = MODE_IS_INCLUDE
- self.aux_len = 0
- self.num = 0
- self.address = '225.0.0.1'
- self.srcs = []
- self.aux = None
-
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
-
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
-
- def setUp_with_srcs(self):
- self.srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- self.num = len(self.srcs)
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
- for src in self.srcs:
- self.buf += pack('4s', addrconv.ipv4.text_to_bin(src))
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
-
- def setUp_with_aux(self):
- self.aux = b'\x01\x02\x03\x04\x05\x00\x00\x00'
- self.aux_len = len(self.aux) // 4
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
- self.buf += self.aux
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
-
- def setUp_with_srcs_and_aux(self):
- self.srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- self.num = len(self.srcs)
- self.aux = b'\x01\x02\x03\x04\x05\x00\x00\x00'
- self.aux_len = len(self.aux) // 4
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
- for src in self.srcs:
- self.buf += pack('4s', addrconv.ipv4.text_to_bin(src))
- self.buf += self.aux
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.type_, self.g.type_)
- eq_(self.aux_len, self.g.aux_len)
- eq_(self.num, self.g.num)
- eq_(self.address, self.g.address)
- eq_(self.srcs, self.g.srcs)
- eq_(self.aux, self.g.aux)
-
- def test_init_with_srcs(self):
- self.setUp_with_srcs()
- self.test_init()
-
- def test_init_with_aux(self):
- self.setUp_with_aux()
- self.test_init()
-
- def test_init_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- self.test_init()
-
- def test_parser(self):
- _res = self.g.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(res.type_, self.type_)
- eq_(res.aux_len, self.aux_len)
- eq_(res.num, self.num)
- eq_(res.address, self.address)
- eq_(res.srcs, self.srcs)
- eq_(res.aux, self.aux)
-
- def test_parser_with_srcs(self):
- self.setUp_with_srcs()
- self.test_parser()
-
- def test_parser_with_aux(self):
- self.setUp_with_aux()
- self.test_parser()
-
- def test_parser_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- self.test_parser()
-
- def test_serialize(self):
- buf = self.g.serialize()
- res = unpack_from(igmpv3_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv4.text_to_bin(self.address))
-
- def test_serialize_with_srcs(self):
- self.setUp_with_srcs()
- buf = self.g.serialize()
- res = unpack_from(igmpv3_report_group._PACK_STR, six.binary_type(buf))
- (src1, src2, src3) = unpack_from('4s4s4s', six.binary_type(buf),
- igmpv3_report_group._MIN_LEN)
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv4.text_to_bin(self.address))
- eq_(src1, addrconv.ipv4.text_to_bin(self.srcs[0]))
- eq_(src2, addrconv.ipv4.text_to_bin(self.srcs[1]))
- eq_(src3, addrconv.ipv4.text_to_bin(self.srcs[2]))
-
- def test_serialize_with_aux(self):
- self.setUp_with_aux()
- buf = self.g.serialize()
- res = unpack_from(igmpv3_report_group._PACK_STR, six.binary_type(buf))
- (aux, ) = unpack_from('%ds' % (self.aux_len * 4), six.binary_type(buf),
- igmpv3_report_group._MIN_LEN)
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv4.text_to_bin(self.address))
- eq_(aux, self.aux)
-
- def test_serialize_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- buf = self.g.serialize()
- res = unpack_from(igmpv3_report_group._PACK_STR, six.binary_type(buf))
- (src1, src2, src3) = unpack_from('4s4s4s', six.binary_type(buf),
- igmpv3_report_group._MIN_LEN)
- (aux, ) = unpack_from('%ds' % (self.aux_len * 4), six.binary_type(buf),
- igmpv3_report_group._MIN_LEN + 12)
- eq_(res[0], self.type_)
- eq_(res[1], self.aux_len)
- eq_(res[2], self.num)
- eq_(res[3], addrconv.ipv4.text_to_bin(self.address))
- eq_(src1, addrconv.ipv4.text_to_bin(self.srcs[0]))
- eq_(src2, addrconv.ipv4.text_to_bin(self.srcs[1]))
- eq_(src3, addrconv.ipv4.text_to_bin(self.srcs[2]))
- eq_(aux, self.aux)
-
- def test_to_string(self):
- igmp_values = {'type_': repr(self.type_),
- 'aux_len': repr(self.aux_len),
- 'num': repr(self.num),
- 'address': repr(self.address),
- 'srcs': repr(self.srcs),
- 'aux': repr(self.aux)}
- _g_str = ','.join(['%s=%s' % (k, igmp_values[k])
- for k, v in inspect.getmembers(self.g)
- if k in igmp_values])
- g_str = '%s(%s)' % (igmpv3_report_group.__name__, _g_str)
-
- eq_(str(self.g), g_str)
- eq_(repr(self.g), g_str)
-
- def test_to_string_with_srcs(self):
- self.setUp_with_srcs()
- self.test_to_string()
-
- def test_to_string_with_aux(self):
- self.setUp_with_aux()
- self.test_to_string()
-
- def test_to_string_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- self.test_to_string()
-
- def test_len(self):
- eq_(len(self.g), 8)
-
- def test_len_with_srcs(self):
- self.setUp_with_srcs()
- eq_(len(self.g), 20)
-
- def test_len_with_aux(self):
- self.setUp_with_aux()
- eq_(len(self.g), 16)
-
- def test_len_with_srcs_and_aux(self):
- self.setUp_with_srcs_and_aux()
- eq_(len(self.g), 28)
-
- @raises
- def test_num_larger_than_srcs(self):
- self.srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- self.num = len(self.srcs) + 1
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
- for src in self.srcs:
- self.buf += pack('4s', addrconv.ipv4.text_to_bin(src))
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- @raises
- def test_num_smaller_than_srcs(self):
- self.srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- self.num = len(self.srcs) - 1
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
- for src in self.srcs:
- self.buf += pack('4s', addrconv.ipv4.text_to_bin(src))
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- @raises
- def test_aux_len_larger_than_aux(self):
- self.aux = b'\x01\x02\x03\x04\x05\x00\x00\x00'
- self.aux_len = len(self.aux) // 4 + 1
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
- self.buf += self.aux
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- @raises
- def test_aux_len_smaller_than_aux(self):
- self.aux = b'\x01\x02\x03\x04\x05\x00\x00\x00'
- self.aux_len = len(self.aux) // 4 - 1
- self.buf = pack(igmpv3_report_group._PACK_STR, self.type_,
- self.aux_len, self.num,
- addrconv.ipv4.text_to_bin(self.address))
- self.buf += self.aux
- self.g = igmpv3_report_group(
- self.type_, self.aux_len, self.num, self.address,
- self.srcs, self.aux)
- self.test_parser()
-
- def test_default_args(self):
- rep = igmpv3_report_group()
- buf = rep.serialize()
- res = unpack_from(igmpv3_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], 0)
- eq_(res[3], addrconv.ipv4.text_to_bin('0.0.0.0'))
-
- # srcs without num
- srcs = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
- rep = igmpv3_report_group(srcs=srcs)
- buf = rep.serialize()
- res = unpack_from(igmpv3_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 0)
- eq_(res[2], len(srcs))
- eq_(res[3], addrconv.ipv4.text_to_bin('0.0.0.0'))
-
- res = unpack_from('4s4s4s', six.binary_type(buf),
- igmpv3_report_group._MIN_LEN)
-
- eq_(res[0], addrconv.ipv4.text_to_bin(srcs[0]))
- eq_(res[1], addrconv.ipv4.text_to_bin(srcs[1]))
- eq_(res[2], addrconv.ipv4.text_to_bin(srcs[2]))
-
- # aux without aux_len
- aux = b'abcde'
- rep = igmpv3_report_group(aux=aux)
- buf = rep.serialize()
- res = unpack_from(igmpv3_report_group._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 0)
- eq_(res[1], 2)
- eq_(res[2], 0)
- eq_(res[3], addrconv.ipv4.text_to_bin('0.0.0.0'))
- eq_(buf[igmpv3_report_group._MIN_LEN:], b'abcde\x00\x00\x00')
diff --git a/tests/unit/packet/test_ipv4.py b/tests/unit/packet/test_ipv4.py
deleted file mode 100644
index 69186f3f..00000000
--- a/tests/unit/packet/test_ipv4.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-import struct
-from struct import *
-from nose.tools import *
-from ryu.ofproto import ether, inet
-from ryu.lib.packet import packet_utils
-from ryu.lib.packet.ethernet import ethernet
-from ryu.lib.packet.packet import Packet
-from ryu.lib.packet.ipv4 import ipv4
-from ryu.lib.packet.tcp import tcp
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger('test_ipv4')
-
-
-class Test_ipv4(unittest.TestCase):
- """ Test case for ipv4
- """
-
- version = 4
- header_length = 5 + 10
- ver_hlen = version << 4 | header_length
- tos = 0
- total_length = header_length + 64
- identification = 30774
- flags = 4
- offset = 1480
- flg_off = flags << 13 | offset
- ttl = 64
- proto = inet.IPPROTO_TCP
- csum = 0xadc6
- src = '131.151.32.21'
- dst = '131.151.32.129'
- length = header_length * 4
- option = b'\x86\x28\x00\x00\x00\x01\x01\x22' \
- + b'\x00\x01\xae\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00\x00\x00\x00\x01'
-
- buf = pack(ipv4._PACK_STR, ver_hlen, tos, total_length, identification,
- flg_off, ttl, proto, csum,
- addrconv.ipv4.text_to_bin(src),
- addrconv.ipv4.text_to_bin(dst)) \
- + option
-
- ip = ipv4(version, header_length, tos, total_length, identification,
- flags, offset, ttl, proto, csum, src, dst, option)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.version, self.ip.version)
- eq_(self.header_length, self.ip.header_length)
- eq_(self.tos, self.ip.tos)
- eq_(self.total_length, self.ip.total_length)
- eq_(self.identification, self.ip.identification)
- eq_(self.flags, self.ip.flags)
- eq_(self.offset, self.ip.offset)
- eq_(self.ttl, self.ip.ttl)
- eq_(self.proto, self.ip.proto)
- eq_(self.csum, self.ip.csum)
- eq_(self.src, self.ip.src)
- eq_(self.dst, self.ip.dst)
- eq_(self.length, len(self.ip))
- eq_(self.option, self.ip.option)
-
- def test_parser(self):
- res, ptype, _ = self.ip.parser(self.buf)
-
- eq_(res.version, self.version)
- eq_(res.header_length, self.header_length)
- eq_(res.tos, self.tos)
- eq_(res.total_length, self.total_length)
- eq_(res.identification, self.identification)
- eq_(res.flags, self.flags)
- eq_(res.offset, self.offset)
- eq_(res.ttl, self.ttl)
- eq_(res.proto, self.proto)
- eq_(res.csum, self.csum)
- eq_(res.src, self.src)
- eq_(res.dst, self.dst)
- eq_(ptype, tcp)
-
- def test_serialize(self):
- buf = self.ip.serialize(bytearray(), None)
- res = struct.unpack_from(ipv4._PACK_STR, six.binary_type(buf))
- option = buf[ipv4._MIN_LEN:ipv4._MIN_LEN + len(self.option)]
-
- eq_(res[0], self.ver_hlen)
- eq_(res[1], self.tos)
- eq_(res[2], self.total_length)
- eq_(res[3], self.identification)
- eq_(res[4], self.flg_off)
- eq_(res[5], self.ttl)
- eq_(res[6], self.proto)
- eq_(res[8], addrconv.ipv4.text_to_bin(self.src))
- eq_(res[9], addrconv.ipv4.text_to_bin(self.dst))
- eq_(option, self.option)
-
- # checksum
- csum = packet_utils.checksum(buf)
- eq_(csum, 0)
-
- @raises(Exception)
- def test_malformed_ipv4(self):
- m_short_buf = self.buf[1:ipv4._MIN_LEN]
- ipv4.parser(m_short_buf)
-
- def test_json(self):
- jsondict = self.ip.to_jsondict()
- ip = ipv4.from_jsondict(jsondict['ipv4'])
- eq_(str(self.ip), str(ip))
diff --git a/tests/unit/packet/test_ipv6.py b/tests/unit/packet/test_ipv6.py
deleted file mode 100644
index 455dc8c3..00000000
--- a/tests/unit/packet/test_ipv6.py
+++ /dev/null
@@ -1,1128 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import unittest
-import logging
-import inspect
-import six
-import struct
-
-from nose.tools import *
-from ryu.lib import addrconv
-from ryu.lib import ip
-from ryu.lib.packet import ipv6
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_ipv6(unittest.TestCase):
-
- def setUp(self):
- self.version = 6
- self.traffic_class = 0
- self.flow_label = 0
- self.payload_length = 817
- self.nxt = 6
- self.hop_limit = 128
- self.src = '2002:4637:d5d3::4637:d5d3'
- self.dst = '2001:4860:0:2001::68'
- self.ext_hdrs = []
- self.ip = ipv6.ipv6(
- self.version, self.traffic_class, self.flow_label,
- self.payload_length, self.nxt, self.hop_limit, self.src,
- self.dst, self.ext_hdrs)
-
- self.v_tc_flow = (
- self.version << 28 | self.traffic_class << 20 |
- self.flow_label << 12)
- self.buf = struct.pack(
- ipv6.ipv6._PACK_STR, self.v_tc_flow,
- self.payload_length, self.nxt, self.hop_limit,
- addrconv.ipv6.text_to_bin(self.src),
- addrconv.ipv6.text_to_bin(self.dst))
-
- def setUp_with_hop_opts(self):
- self.opt1_type = 5
- self.opt1_len = 2
- self.opt1_data = b'\x00\x00'
- self.opt2_type = 1
- self.opt2_len = 0
- self.opt2_data = None
- self.options = [
- ipv6.option(self.opt1_type, self.opt1_len, self.opt1_data),
- ipv6.option(self.opt2_type, self.opt2_len, self.opt2_data),
- ]
- self.hop_opts_nxt = 6
- self.hop_opts_size = 0
- self.hop_opts = ipv6.hop_opts(
- self.hop_opts_nxt, self.hop_opts_size, self.options)
- self.ext_hdrs = [self.hop_opts]
- self.payload_length += len(self.hop_opts)
- self.nxt = ipv6.hop_opts.TYPE
- self.ip = ipv6.ipv6(
- self.version, self.traffic_class, self.flow_label,
- self.payload_length, self.nxt, self.hop_limit, self.src,
- self.dst, self.ext_hdrs)
- self.buf = struct.pack(
- ipv6.ipv6._PACK_STR, self.v_tc_flow,
- self.payload_length, self.nxt, self.hop_limit,
- addrconv.ipv6.text_to_bin(self.src),
- addrconv.ipv6.text_to_bin(self.dst))
- self.buf += self.hop_opts.serialize()
-
- def setUp_with_dst_opts(self):
- self.opt1_type = 5
- self.opt1_len = 2
- self.opt1_data = b'\x00\x00'
- self.opt2_type = 1
- self.opt2_len = 0
- self.opt2_data = None
- self.options = [
- ipv6.option(self.opt1_type, self.opt1_len, self.opt1_data),
- ipv6.option(self.opt2_type, self.opt2_len, self.opt2_data),
- ]
- self.dst_opts_nxt = 6
- self.dst_opts_size = 0
- self.dst_opts = ipv6.dst_opts(
- self.dst_opts_nxt, self.dst_opts_size, self.options)
- self.ext_hdrs = [self.dst_opts]
- self.payload_length += len(self.dst_opts)
- self.nxt = ipv6.dst_opts.TYPE
- self.ip = ipv6.ipv6(
- self.version, self.traffic_class, self.flow_label,
- self.payload_length, self.nxt, self.hop_limit, self.src,
- self.dst, self.ext_hdrs)
- self.buf = struct.pack(
- ipv6.ipv6._PACK_STR, self.v_tc_flow,
- self.payload_length, self.nxt, self.hop_limit,
- addrconv.ipv6.text_to_bin(self.src),
- addrconv.ipv6.text_to_bin(self.dst))
- self.buf += self.dst_opts.serialize()
-
- def setUp_with_routing_type3(self):
- self.routing_nxt = 6
- self.routing_size = 6
- self.routing_type = 3
- self.routing_seg = 2
- self.routing_cmpi = 0
- self.routing_cmpe = 0
- self.routing_adrs = ["2001:db8:dead::1", "2001:db8:dead::2",
- "2001:db8:dead::3"]
- self.routing = ipv6.routing_type3(
- self.routing_nxt, self.routing_size,
- self.routing_type, self.routing_seg,
- self.routing_cmpi, self.routing_cmpe,
- self.routing_adrs)
- self.ext_hdrs = [self.routing]
- self.payload_length += len(self.routing)
- self.nxt = ipv6.routing.TYPE
- self.ip = ipv6.ipv6(
- self.version, self.traffic_class, self.flow_label,
- self.payload_length, self.nxt, self.hop_limit, self.src,
- self.dst, self.ext_hdrs)
- self.buf = struct.pack(
- ipv6.ipv6._PACK_STR, self.v_tc_flow,
- self.payload_length, self.nxt, self.hop_limit,
- addrconv.ipv6.text_to_bin(self.src),
- addrconv.ipv6.text_to_bin(self.dst))
- self.buf += self.routing.serialize()
-
- def setUp_with_fragment(self):
- self.fragment_nxt = 6
- self.fragment_offset = 50
- self.fragment_more = 1
- self.fragment_id = 123
- self.fragment = ipv6.fragment(
- self.fragment_nxt, self.fragment_offset, self.fragment_more,
- self.fragment_id)
- self.ext_hdrs = [self.fragment]
- self.payload_length += len(self.fragment)
- self.nxt = ipv6.fragment.TYPE
- self.ip = ipv6.ipv6(
- self.version, self.traffic_class, self.flow_label,
- self.payload_length, self.nxt, self.hop_limit, self.src,
- self.dst, self.ext_hdrs)
- self.buf = struct.pack(
- ipv6.ipv6._PACK_STR, self.v_tc_flow,
- self.payload_length, self.nxt, self.hop_limit,
- addrconv.ipv6.text_to_bin(self.src),
- addrconv.ipv6.text_to_bin(self.dst))
- self.buf += self.fragment.serialize()
-
- def setUp_with_auth(self):
- self.auth_nxt = 6
- self.auth_size = 4
- self.auth_spi = 256
- self.auth_seq = 1
- self.auth_data = b'\xa0\xe7\xf8\xab\xf9\x69\x1a\x8b\xf3\x9f\x7c\xae'
- self.auth = ipv6.auth(
- self.auth_nxt, self.auth_size, self.auth_spi, self.auth_seq,
- self.auth_data)
- self.ext_hdrs = [self.auth]
- self.payload_length += len(self.auth)
- self.nxt = ipv6.auth.TYPE
- self.ip = ipv6.ipv6(
- self.version, self.traffic_class, self.flow_label,
- self.payload_length, self.nxt, self.hop_limit, self.src,
- self.dst, self.ext_hdrs)
- self.buf = struct.pack(
- ipv6.ipv6._PACK_STR, self.v_tc_flow,
- self.payload_length, self.nxt, self.hop_limit,
- addrconv.ipv6.text_to_bin(self.src),
- addrconv.ipv6.text_to_bin(self.dst))
- self.buf += self.auth.serialize()
-
- def setUp_with_multi_headers(self):
- self.opt1_type = 5
- self.opt1_len = 2
- self.opt1_data = b'\x00\x00'
- self.opt2_type = 1
- self.opt2_len = 0
- self.opt2_data = None
- self.options = [
- ipv6.option(self.opt1_type, self.opt1_len, self.opt1_data),
- ipv6.option(self.opt2_type, self.opt2_len, self.opt2_data),
- ]
- self.hop_opts_nxt = ipv6.auth.TYPE
- self.hop_opts_size = 0
- self.hop_opts = ipv6.hop_opts(
- self.hop_opts_nxt, self.hop_opts_size, self.options)
- self.auth_nxt = 6
- self.auth_size = 4
- self.auth_spi = 256
- self.auth_seq = 1
- self.auth_data = b'\xa0\xe7\xf8\xab\xf9\x69\x1a\x8b\xf3\x9f\x7c\xae'
- self.auth = ipv6.auth(
- self.auth_nxt, self.auth_size, self.auth_spi, self.auth_seq,
- self.auth_data)
- self.ext_hdrs = [self.hop_opts, self.auth]
- self.payload_length += len(self.hop_opts) + len(self.auth)
- self.nxt = ipv6.hop_opts.TYPE
- self.ip = ipv6.ipv6(
- self.version, self.traffic_class, self.flow_label,
- self.payload_length, self.nxt, self.hop_limit, self.src,
- self.dst, self.ext_hdrs)
- self.buf = struct.pack(
- ipv6.ipv6._PACK_STR, self.v_tc_flow,
- self.payload_length, self.nxt, self.hop_limit,
- addrconv.ipv6.text_to_bin(self.src),
- addrconv.ipv6.text_to_bin(self.dst))
- self.buf += self.hop_opts.serialize()
- self.buf += self.auth.serialize()
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.version, self.ip.version)
- eq_(self.traffic_class, self.ip.traffic_class)
- eq_(self.flow_label, self.ip.flow_label)
- eq_(self.payload_length, self.ip.payload_length)
- eq_(self.nxt, self.ip.nxt)
- eq_(self.hop_limit, self.ip.hop_limit)
- eq_(self.src, self.ip.src)
- eq_(self.dst, self.ip.dst)
- eq_(str(self.ext_hdrs), str(self.ip.ext_hdrs))
-
- def test_init_with_hop_opts(self):
- self.setUp_with_hop_opts()
- self.test_init()
-
- def test_init_with_dst_opts(self):
- self.setUp_with_dst_opts()
- self.test_init()
-
- def test_init_with_routing_type3(self):
- self.setUp_with_routing_type3()
- self.test_init()
-
- def test_init_with_fragment(self):
- self.setUp_with_fragment()
- self.test_init()
-
- def test_init_with_auth(self):
- self.setUp_with_auth()
- self.test_init()
-
- def test_init_with_multi_headers(self):
- self.setUp_with_multi_headers()
- self.test_init()
-
- def test_parser(self):
- _res = self.ip.parser(six.binary_type(self.buf))
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(self.version, res.version)
- eq_(self.traffic_class, res.traffic_class)
- eq_(self.flow_label, res.flow_label)
- eq_(self.payload_length, res.payload_length)
- eq_(self.nxt, res.nxt)
- eq_(self.hop_limit, res.hop_limit)
- eq_(self.src, res.src)
- eq_(self.dst, res.dst)
- eq_(str(self.ext_hdrs), str(res.ext_hdrs))
-
- def test_parser_with_hop_opts(self):
- self.setUp_with_hop_opts()
- self.test_parser()
-
- def test_parser_with_dst_opts(self):
- self.setUp_with_dst_opts()
- self.test_parser()
-
- def test_parser_with_routing_type3(self):
- self.setUp_with_routing_type3()
- self.test_parser()
-
- def test_parser_with_fragment(self):
- self.setUp_with_fragment()
- self.test_parser()
-
- def test_parser_with_auth(self):
- self.setUp_with_auth()
- self.test_parser()
-
- def test_parser_with_multi_headers(self):
- self.setUp_with_multi_headers()
- self.test_parser()
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.ip.serialize(data, prev)
-
- res = struct.unpack_from(ipv6.ipv6._PACK_STR, six.binary_type(buf))
-
- eq_(self.v_tc_flow, res[0])
- eq_(self.payload_length, res[1])
- eq_(self.nxt, res[2])
- eq_(self.hop_limit, res[3])
- eq_(self.src, addrconv.ipv6.bin_to_text(res[4]))
- eq_(self.dst, addrconv.ipv6.bin_to_text(res[5]))
-
- def test_serialize_with_hop_opts(self):
- self.setUp_with_hop_opts()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ip.serialize(data, prev)
- hop_opts = ipv6.hop_opts.parser(six.binary_type(buf[ipv6.ipv6._MIN_LEN:]))
- eq_(repr(self.hop_opts), repr(hop_opts))
-
- def test_serialize_with_dst_opts(self):
- self.setUp_with_dst_opts()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ip.serialize(data, prev)
- dst_opts = ipv6.dst_opts.parser(six.binary_type(buf[ipv6.ipv6._MIN_LEN:]))
- eq_(repr(self.dst_opts), repr(dst_opts))
-
- def test_serialize_with_routing_type3(self):
- self.setUp_with_routing_type3()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ip.serialize(data, prev)
- routing = ipv6.routing.parser(six.binary_type(buf[ipv6.ipv6._MIN_LEN:]))
- eq_(repr(self.routing), repr(routing))
-
- def test_serialize_with_fragment(self):
- self.setUp_with_fragment()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ip.serialize(data, prev)
- fragment = ipv6.fragment.parser(six.binary_type(buf[ipv6.ipv6._MIN_LEN:]))
- eq_(repr(self.fragment), repr(fragment))
-
- def test_serialize_with_auth(self):
- self.setUp_with_auth()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ip.serialize(data, prev)
- auth = ipv6.auth.parser(six.binary_type(buf[ipv6.ipv6._MIN_LEN:]))
- eq_(repr(self.auth), repr(auth))
-
- def test_serialize_with_multi_headers(self):
- self.setUp_with_multi_headers()
- self.test_serialize()
-
- data = bytearray()
- prev = None
- buf = self.ip.serialize(data, prev)
- offset = ipv6.ipv6._MIN_LEN
- hop_opts = ipv6.hop_opts.parser(six.binary_type(buf[offset:]))
- offset += len(hop_opts)
- auth = ipv6.auth.parser(six.binary_type(buf[offset:]))
- eq_(repr(self.hop_opts), repr(hop_opts))
- eq_(repr(self.auth), repr(auth))
-
- def test_to_string(self):
- ipv6_values = {'version': self.version,
- 'traffic_class': self.traffic_class,
- 'flow_label': self.flow_label,
- 'payload_length': self.payload_length,
- 'nxt': self.nxt,
- 'hop_limit': self.hop_limit,
- 'src': repr(self.src),
- 'dst': repr(self.dst),
- 'ext_hdrs': self.ext_hdrs}
- _ipv6_str = ','.join(['%s=%s' % (k, ipv6_values[k])
- for k, v in inspect.getmembers(self.ip)
- if k in ipv6_values])
- ipv6_str = '%s(%s)' % (ipv6.ipv6.__name__, _ipv6_str)
-
- eq_(str(self.ip), ipv6_str)
- eq_(repr(self.ip), ipv6_str)
-
- def test_to_string_with_hop_opts(self):
- self.setUp_with_hop_opts()
- self.test_to_string()
-
- def test_to_string_with_dst_opts(self):
- self.setUp_with_dst_opts()
- self.test_to_string()
-
- def test_to_string_with_fragment(self):
- self.setUp_with_fragment()
- self.test_to_string()
-
- def test_to_string_with_auth(self):
- self.setUp_with_auth()
- self.test_to_string()
-
- def test_to_string_with_multi_headers(self):
- self.setUp_with_multi_headers()
- self.test_to_string()
-
- def test_len(self):
- eq_(len(self.ip), 40)
-
- def test_len_with_hop_opts(self):
- self.setUp_with_hop_opts()
- eq_(len(self.ip), 40 + len(self.hop_opts))
-
- def test_len_with_dst_opts(self):
- self.setUp_with_dst_opts()
- eq_(len(self.ip), 40 + len(self.dst_opts))
-
- def test_len_with_routing_type3(self):
- self.setUp_with_routing_type3()
- eq_(len(self.ip), 40 + len(self.routing))
-
- def test_len_with_fragment(self):
- self.setUp_with_fragment()
- eq_(len(self.ip), 40 + len(self.fragment))
-
- def test_len_with_auth(self):
- self.setUp_with_auth()
- eq_(len(self.ip), 40 + len(self.auth))
-
- def test_len_with_multi_headers(self):
- self.setUp_with_multi_headers()
- eq_(len(self.ip), 40 + len(self.hop_opts) + len(self.auth))
-
- def test_default_args(self):
- ip = ipv6.ipv6()
- buf = ip.serialize(bytearray(), None)
- res = struct.unpack(ipv6.ipv6._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], 6 << 28)
- eq_(res[1], 0)
- eq_(res[2], 6)
- eq_(res[3], 255)
- eq_(res[4], addrconv.ipv6.text_to_bin('10::10'))
- eq_(res[5], addrconv.ipv6.text_to_bin('20::20'))
-
- # with extension header
- ip = ipv6.ipv6(
- nxt=0, ext_hdrs=[
- ipv6.hop_opts(58, 0, [
- ipv6.option(5, 2, b'\x00\x00'),
- ipv6.option(1, 0, None)])])
- buf = ip.serialize(bytearray(), None)
- res = struct.unpack(ipv6.ipv6._PACK_STR + '8s', six.binary_type(buf))
-
- eq_(res[0], 6 << 28)
- eq_(res[1], 8)
- eq_(res[2], 0)
- eq_(res[3], 255)
- eq_(res[4], addrconv.ipv6.text_to_bin('10::10'))
- eq_(res[5], addrconv.ipv6.text_to_bin('20::20'))
- eq_(res[6], b'\x3a\x00\x05\x02\x00\x00\x01\x00')
-
- def test_json(self):
- jsondict = self.ip.to_jsondict()
- ip = ipv6.ipv6.from_jsondict(jsondict['ipv6'])
- eq_(str(self.ip), str(ip))
-
- def test_json_with_hop_opts(self):
- self.setUp_with_hop_opts()
- self.test_json()
-
- def test_json_with_dst_opts(self):
- self.setUp_with_dst_opts()
- self.test_json()
-
- def test_json_with_routing_type3(self):
- self.setUp_with_routing_type3()
- self.test_json()
-
- def test_json_with_fragment(self):
- self.setUp_with_fragment()
- self.test_json()
-
- def test_json_with_auth(self):
- self.setUp_with_auth()
- self.test_json()
-
- def test_json_with_multi_headers(self):
- self.setUp_with_multi_headers()
- self.test_json()
-
-
-class Test_hop_opts(unittest.TestCase):
-
- def setUp(self):
- self.nxt = 0
- self.size = 8
- self.data = [
- ipv6.option(5, 2, b'\x00\x00'),
- ipv6.option(1, 0, None),
- ipv6.option(0xc2, 4, b'\x00\x01\x00\x00'),
- ipv6.option(1, 0, None),
- ]
- self.hop = ipv6.hop_opts(self.nxt, self.size, self.data)
- self.form = '!BB'
- self.buf = struct.pack(self.form, self.nxt, self.size) \
- + self.data[0].serialize() \
- + self.data[1].serialize() \
- + self.data[2].serialize() \
- + self.data[3].serialize()
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.nxt, self.hop.nxt)
- eq_(self.size, self.hop.size)
- eq_(self.data, self.hop.data)
-
- @raises(Exception)
- def test_invalid_size(self):
- ipv6.hop_opts(self.nxt, 1, self.data)
-
- def test_parser(self):
- _res = ipv6.hop_opts.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.nxt, res.nxt)
- eq_(self.size, res.size)
- eq_(str(self.data), str(res.data))
-
- def test_serialize(self):
- buf = self.hop.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.nxt, res[0])
- eq_(self.size, res[1])
- offset = struct.calcsize(self.form)
- opt1 = ipv6.option.parser(six.binary_type(buf[offset:]))
- offset += len(opt1)
- opt2 = ipv6.option.parser(six.binary_type(buf[offset:]))
- offset += len(opt2)
- opt3 = ipv6.option.parser(six.binary_type(buf[offset:]))
- offset += len(opt3)
- opt4 = ipv6.option.parser(six.binary_type(buf[offset:]))
- eq_(5, opt1.type_)
- eq_(2, opt1.len_)
- eq_(b'\x00\x00', opt1.data)
- eq_(1, opt2.type_)
- eq_(0, opt2.len_)
- eq_(None, opt2.data)
- eq_(0xc2, opt3.type_)
- eq_(4, opt3.len_)
- eq_(b'\x00\x01\x00\x00', opt3.data)
- eq_(1, opt4.type_)
- eq_(0, opt4.len_)
- eq_(None, opt4.data)
-
- def test_len(self):
- eq_(16, len(self.hop))
-
- def test_default_args(self):
- hdr = ipv6.hop_opts()
- buf = hdr.serialize()
- res = struct.unpack('!BB', six.binary_type(buf[:2]))
-
- eq_(res[0], 6)
- eq_(res[1], 0)
- opt = ipv6.option(type_=1, len_=4, data=b'\x00\x00\x00\x00')
- eq_(six.binary_type(buf[2:]), opt.serialize())
-
-
-class Test_dst_opts(unittest.TestCase):
-
- def setUp(self):
- self.nxt = 60
- self.size = 8
- self.data = [
- ipv6.option(5, 2, b'\x00\x00'),
- ipv6.option(1, 0, None),
- ipv6.option(0xc2, 4, b'\x00\x01\x00\x00'),
- ipv6.option(1, 0, None),
- ]
- self.dst = ipv6.dst_opts(self.nxt, self.size, self.data)
- self.form = '!BB'
- self.buf = struct.pack(self.form, self.nxt, self.size) \
- + self.data[0].serialize() \
- + self.data[1].serialize() \
- + self.data[2].serialize() \
- + self.data[3].serialize()
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.nxt, self.dst.nxt)
- eq_(self.size, self.dst.size)
- eq_(self.data, self.dst.data)
-
- @raises(Exception)
- def test_invalid_size(self):
- ipv6.dst_opts(self.nxt, 1, self.data)
-
- def test_parser(self):
- _res = ipv6.dst_opts.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.nxt, res.nxt)
- eq_(self.size, res.size)
- eq_(str(self.data), str(res.data))
-
- def test_serialize(self):
- buf = self.dst.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.nxt, res[0])
- eq_(self.size, res[1])
- offset = struct.calcsize(self.form)
- opt1 = ipv6.option.parser(six.binary_type(buf[offset:]))
- offset += len(opt1)
- opt2 = ipv6.option.parser(six.binary_type(buf[offset:]))
- offset += len(opt2)
- opt3 = ipv6.option.parser(six.binary_type(buf[offset:]))
- offset += len(opt3)
- opt4 = ipv6.option.parser(six.binary_type(buf[offset:]))
- eq_(5, opt1.type_)
- eq_(2, opt1.len_)
- eq_(b'\x00\x00', opt1.data)
- eq_(1, opt2.type_)
- eq_(0, opt2.len_)
- eq_(None, opt2.data)
- eq_(0xc2, opt3.type_)
- eq_(4, opt3.len_)
- eq_(b'\x00\x01\x00\x00', opt3.data)
- eq_(1, opt4.type_)
- eq_(0, opt4.len_)
- eq_(None, opt4.data)
-
- def test_len(self):
- eq_(16, len(self.dst))
-
- def test_default_args(self):
- hdr = ipv6.dst_opts()
- buf = hdr.serialize()
- res = struct.unpack('!BB', six.binary_type(buf[:2]))
-
- eq_(res[0], 6)
- eq_(res[1], 0)
- opt = ipv6.option(type_=1, len_=4, data=b'\x00\x00\x00\x00')
- eq_(six.binary_type(buf[2:]), opt.serialize())
-
-
-class Test_option(unittest.TestCase):
-
- def setUp(self):
- self.type_ = 5
- self.data = b'\x00\x00'
- self.len_ = len(self.data)
- self.opt = ipv6.option(self.type_, self.len_, self.data)
- self.form = '!BB%ds' % self.len_
- self.buf = struct.pack(self.form, self.type_, self.len_, self.data)
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.type_, self.opt.type_)
- eq_(self.len_, self.opt.len_)
- eq_(self.data, self.opt.data)
-
- def test_parser(self):
- _res = ipv6.option.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.type_, res.type_)
- eq_(self.len_, res.len_)
- eq_(self.data, res.data)
-
- def test_serialize(self):
- buf = self.opt.serialize()
- res = struct.unpack_from(self.form, buf)
- eq_(self.type_, res[0])
- eq_(self.len_, res[1])
- eq_(self.data, res[2])
-
- def test_len(self):
- eq_(len(self.opt), 2 + self.len_)
-
-
-class Test_option_pad1(Test_option):
-
- def setUp(self):
- self.type_ = 0
- self.len_ = -1
- self.data = None
- self.opt = ipv6.option(self.type_, self.len_, self.data)
- self.form = '!B'
- self.buf = struct.pack(self.form, self.type_)
-
- def test_serialize(self):
- buf = self.opt.serialize()
- res = struct.unpack_from(self.form, buf)
- eq_(self.type_, res[0])
-
- def test_default_args(self):
- opt = ipv6.option()
- buf = opt.serialize()
- res = struct.unpack('!B', buf)
-
- eq_(res[0], 0)
-
-
-class Test_option_padN(Test_option):
-
- def setUp(self):
- self.type_ = 1
- self.len_ = 0
- self.data = None
- self.opt = ipv6.option(self.type_, self.len_, self.data)
- self.form = '!BB'
- self.buf = struct.pack(self.form, self.type_, self.len_)
-
- def test_serialize(self):
- buf = self.opt.serialize()
- res = struct.unpack_from(self.form, buf)
- eq_(self.type_, res[0])
- eq_(self.len_, res[1])
-
-
-class Test_routing(unittest.TestCase):
-
- def setUp(self):
- self.nxt = 0
- self.size = 6
- self.type_ = ipv6.routing.ROUTING_TYPE_3
- self.seg = 0
- self.cmpi = 0
- self.cmpe = 0
- self.adrs = ["2001:db8:dead::1",
- "2001:db8:dead::2",
- "2001:db8:dead::3"]
- # calculate pad
- self.pad = (8 - ((len(self.adrs) - 1) * (16 - self.cmpi) +
- (16 - self.cmpe) % 8)) % 8
- # create buf
- self.form = '!BBBBBB2x16s16s16s'
- self.buf = struct.pack(self.form, self.nxt, self.size,
- self.type_, self.seg,
- (self.cmpi << 4) | self.cmpe,
- self.pad << 4,
- addrconv.ipv6.text_to_bin(self.adrs[0]),
- addrconv.ipv6.text_to_bin(self.adrs[1]),
- addrconv.ipv6.text_to_bin(self.adrs[2]))
-
- def tearDown(self):
- pass
-
- def test_parser(self):
- _res = ipv6.routing.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.nxt, res.nxt)
- eq_(self.size, res.size)
- eq_(self.type_, res.type_)
- eq_(self.seg, res.seg)
- eq_(self.cmpi, res.cmpi)
- eq_(self.cmpe, res.cmpe)
- eq_(self.pad, res._pad)
- eq_(self.adrs[0], res.adrs[0])
- eq_(self.adrs[1], res.adrs[1])
- eq_(self.adrs[2], res.adrs[2])
-
- def test_not_implemented_type(self):
- not_implemented_buf = struct.pack(
- '!BBBBBB2x', 0, 6, ipv6.routing.ROUTING_TYPE_2, 0, 0, 0)
- instance = ipv6.routing.parser(not_implemented_buf)
- assert None == instance
-
- def test_invalid_type(self):
- invalid_type = 99
- invalid_buf = struct.pack('!BBBBBB2x', 0, 6, invalid_type, 0, 0, 0)
- instance = ipv6.routing.parser(invalid_buf)
- assert None == instance
-
-
-class Test_routing_type3(unittest.TestCase):
-
- def setUp(self):
- self.nxt = 0
- self.size = 6
- self.type_ = 3
- self.seg = 0
- self.cmpi = 0
- self.cmpe = 0
- self.adrs = ["2001:db8:dead::1",
- "2001:db8:dead::2",
- "2001:db8:dead::3"]
- # calculate pad
- self.pad = (8 - ((len(self.adrs) - 1) * (16 - self.cmpi) +
- (16 - self.cmpe) % 8)) % 8
-
- self.routing = ipv6.routing_type3(
- self.nxt, self.size, self.type_, self.seg, self.cmpi,
- self.cmpe, self.adrs)
- self.form = '!BBBBBB2x16s16s16s'
- self.buf = struct.pack(self.form, self.nxt, self.size,
- self.type_, self.seg,
- (self.cmpi << 4) | self.cmpe,
- self.pad << 4,
- addrconv.ipv6.text_to_bin(self.adrs[0]),
- addrconv.ipv6.text_to_bin(self.adrs[1]),
- addrconv.ipv6.text_to_bin(self.adrs[2]))
-
- def test_init(self):
- eq_(self.nxt, self.routing.nxt)
- eq_(self.size, self.routing.size)
- eq_(self.type_, self.routing.type_)
- eq_(self.seg, self.routing.seg)
- eq_(self.cmpi, self.routing.cmpi)
- eq_(self.cmpe, self.routing.cmpe)
- eq_(self.pad, self.routing._pad)
- eq_(self.adrs[0], self.routing.adrs[0])
- eq_(self.adrs[1], self.routing.adrs[1])
- eq_(self.adrs[2], self.routing.adrs[2])
-
- def test_parser(self):
- _res = ipv6.routing.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.nxt, res.nxt)
- eq_(self.size, res.size)
- eq_(self.type_, res.type_)
- eq_(self.seg, res.seg)
- eq_(self.cmpi, res.cmpi)
- eq_(self.cmpe, res.cmpe)
- eq_(self.pad, res._pad)
- eq_(self.adrs[0], res.adrs[0])
- eq_(self.adrs[1], res.adrs[1])
- eq_(self.adrs[2], res.adrs[2])
-
- def test_serialize(self):
- buf = self.routing.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.nxt, res[0])
- eq_(self.size, res[1])
- eq_(self.type_, res[2])
- eq_(self.seg, res[3])
- eq_(self.cmpi, res[4] >> 4)
- eq_(self.cmpe, res[4] & 0xf)
- eq_(self.pad, res[5])
- eq_(addrconv.ipv6.text_to_bin(self.adrs[0]), res[6])
- eq_(addrconv.ipv6.text_to_bin(self.adrs[1]), res[7])
- eq_(addrconv.ipv6.text_to_bin(self.adrs[2]), res[8])
-
- def test_parser_with_adrs_zero(self):
- nxt = 0
- size = 0
- type_ = 3
- seg = 0
- cmpi = 0
- cmpe = 0
- adrs = []
- # calculate pad
- pad = (8 - ((len(adrs) - 1) * (16 - cmpi) + (16 - cmpe) % 8)) % 8
-
- form = '!BBBBBB2x'
- buf = struct.pack(form, nxt, size, type_, seg,
- (cmpi << 4) | cmpe, pad << 4)
- _res = ipv6.routing.parser(buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(nxt, res.nxt)
- eq_(size, res.size)
- eq_(type_, res.type_)
- eq_(seg, res.seg)
- eq_(cmpi, res.cmpi)
- eq_(cmpe, res.cmpe)
- eq_(pad, res._pad)
-
- def test_serialize_with_adrs_zero(self):
- nxt = 0
- size = 0
- type_ = 3
- seg = 0
- cmpi = 0
- cmpe = 0
- adrs = []
- # calculate pad
- pad = (8 - ((len(adrs) - 1) * (16 - cmpi) + (16 - cmpe) % 8)) % 8
- routing = ipv6.routing_type3(
- nxt, size, type_, seg, cmpi,
- cmpe, pad)
- buf = routing.serialize()
- form = '!BBBBBB2x'
- res = struct.unpack_from(form, six.binary_type(buf))
- eq_(nxt, res[0])
- eq_(size, res[1])
- eq_(type_, res[2])
- eq_(seg, res[3])
- eq_(cmpi, res[4] >> 4)
- eq_(cmpe, res[4] & 0xf)
- eq_(pad, res[5])
-
- def test_parser_with_compression(self):
- pass
- nxt = 0
- size = 3
- type_ = 3
- seg = 0
- cmpi = 8
- cmpe = 12
- adrs = ["2001:0db8:dead:0123:4567:89ab:cdef:0001",
- "2001:0db8:dead:0123:4567:89ab:cdef:0002",
- "2001:0db8:dead:0123:4567:89ab:cdef:0003"]
- # calculate pad
- pad = (8 - ((len(adrs) - 1) * (16 - cmpi) + (16 - cmpe) % 8)) % 8
- form = '!BBBBBB2x%ds%ds%ds' % (16 - cmpi, 16 - cmpi, 16 - cmpe)
- slice_i = slice(cmpi, 16)
- slice_e = slice(cmpe, 16)
- buf = struct.pack(form, nxt, size, type_, seg,
- (cmpi << 4) | cmpe, pad << 4,
- addrconv.ipv6.text_to_bin(adrs[0])[slice_i],
- addrconv.ipv6.text_to_bin(adrs[1])[slice_i],
- addrconv.ipv6.text_to_bin(adrs[2])[slice_e])
- _res = ipv6.routing.parser(buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(nxt, res.nxt)
- eq_(size, res.size)
- eq_(type_, res.type_)
- eq_(seg, res.seg)
- eq_(cmpi, res.cmpi)
- eq_(cmpe, res.cmpe)
- eq_(pad, res._pad)
- eq_("::4567:89ab:cdef:1", res.adrs[0])
- eq_("::4567:89ab:cdef:2", res.adrs[1])
- eq_("::205.239.0.3", res.adrs[2])
-
- def test_serialize_with_compression(self):
- nxt = 0
- size = 3
- type_ = 3
- seg = 0
- cmpi = 8
- cmpe = 8
- adrs = ["2001:db8:dead::1",
- "2001:db8:dead::2",
- "2001:db8:dead::3"]
- # calculate pad
- pad = (8 - ((len(adrs) - 1) * (16 - cmpi) + (16 - cmpe) % 8)) % 8
- slice_i = slice(cmpi, 16)
- slice_e = slice(cmpe, 16)
- routing = ipv6.routing_type3(
- nxt, size, type_, seg, cmpi, cmpe, adrs)
- buf = routing.serialize()
- form = '!BBBBBB2x8s8s8s'
- res = struct.unpack_from(form, six.binary_type(buf))
- eq_(nxt, res[0])
- eq_(size, res[1])
- eq_(type_, res[2])
- eq_(seg, res[3])
- eq_(cmpi, res[4] >> 4)
- eq_(cmpe, res[4] & 0xf)
- eq_(pad, res[5])
- eq_(addrconv.ipv6.text_to_bin(adrs[0])[slice_i], res[6])
- eq_(addrconv.ipv6.text_to_bin(adrs[1])[slice_i], res[7])
- eq_(addrconv.ipv6.text_to_bin(adrs[2])[slice_e], res[8])
-
- def test_len(self):
- eq_((6 + 1) * 8, len(self.routing))
-
- def test_default_args(self):
- hdr = ipv6.routing_type3()
- buf = hdr.serialize()
- LOG.info(repr(buf))
- res = struct.unpack_from(ipv6.routing_type3._PACK_STR, six.binary_type(buf))
- LOG.info(res)
-
- eq_(res[0], 6)
- eq_(res[1], 0)
- eq_(res[2], 3)
- eq_(res[3], 0)
- eq_(res[4], (0 << 4) | 0)
- eq_(res[5], 0)
-
-
-class Test_fragment(unittest.TestCase):
-
- def setUp(self):
- self.nxt = 44
- self.offset = 50
- self.more = 1
- self.id_ = 123
- self.fragment = ipv6.fragment(
- self.nxt, self.offset, self.more, self.id_)
-
- self.off_m = (self.offset << 3 | self.more)
- self.form = '!BxHI'
- self.buf = struct.pack(self.form, self.nxt, self.off_m, self.id_)
-
- def test_init(self):
- eq_(self.nxt, self.fragment.nxt)
- eq_(self.offset, self.fragment.offset)
- eq_(self.more, self.fragment.more)
- eq_(self.id_, self.fragment.id_)
-
- def test_parser(self):
- _res = ipv6.fragment.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.nxt, res.nxt)
- eq_(self.offset, res.offset)
- eq_(self.more, res.more)
- eq_(self.id_, res.id_)
-
- def test_serialize(self):
- buf = self.fragment.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.nxt, res[0])
- eq_(self.off_m, res[1])
- eq_(self.id_, res[2])
-
- def test_len(self):
- eq_(8, len(self.fragment))
-
- def test_default_args(self):
- hdr = ipv6.fragment()
- buf = hdr.serialize()
- res = struct.unpack_from(ipv6.fragment._PACK_STR, buf)
-
- eq_(res[0], 6)
- eq_(res[1], 0)
- eq_(res[2], 0)
-
-
-class Test_auth(unittest.TestCase):
-
- def setUp(self):
- self.nxt = 0
- self.size = 4
- self.spi = 256
- self.seq = 1
- self.data = b'\x21\xd3\xa9\x5c\x5f\xfd\x4d\x18\x46\x22\xb9\xf8'
- self.auth = ipv6.auth(
- self.nxt, self.size, self.spi, self.seq, self.data)
- self.form = '!BB2xII12s'
- self.buf = struct.pack(self.form, self.nxt, self.size, self.spi,
- self.seq, self.data)
-
- def test_init(self):
- eq_(self.nxt, self.auth.nxt)
- eq_(self.size, self.auth.size)
- eq_(self.spi, self.auth.spi)
- eq_(self.seq, self.auth.seq)
- eq_(self.data, self.auth.data)
-
- def test_parser(self):
- _res = ipv6.auth.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(self.nxt, res.nxt)
- eq_(self.size, res.size)
- eq_(self.spi, res.spi)
- eq_(self.seq, res.seq)
- eq_(self.data, res.data)
-
- def test_serialize(self):
- buf = self.auth.serialize()
- res = struct.unpack_from(self.form, six.binary_type(buf))
- eq_(self.nxt, res[0])
- eq_(self.size, res[1])
- eq_(self.spi, res[2])
- eq_(self.seq, res[3])
- eq_(self.data, res[4])
-
- def test_len(self):
- eq_((4 + 2) * 4, len(self.auth))
-
- def test_len_re(self):
- size = 5
- auth = ipv6.auth(
- 0, size, 256, 1,
- b'\x21\xd3\xa9\x5c\x5f\xfd\x4d\x18\x46\x22\xb9\xf8\xf8\xf8\xf8\xf8')
- eq_((size + 2) * 4, len(auth))
-
- def test_default_args(self):
- hdr = ipv6.auth()
- buf = hdr.serialize()
- LOG.info(repr(buf))
- res = struct.unpack_from(ipv6.auth._PACK_STR, six.binary_type(buf))
- LOG.info(res)
-
- eq_(res[0], 6)
- eq_(res[1], 2)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(buf[ipv6.auth._MIN_LEN:], b'\x00\x00\x00\x00')
diff --git a/tests/unit/packet/test_llc.py b/tests/unit/packet/test_llc.py
deleted file mode 100644
index 05894ab7..00000000
--- a/tests/unit/packet/test_llc.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-
-from nose.tools import eq_
-from ryu.lib.packet import llc
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_ControlFormatI(unittest.TestCase):
- msg = llc.llc(llc.SAP_BPDU, llc.SAP_BPDU, llc.ControlFormatI())
-
- def test_json(self):
- jsondict = self.msg.to_jsondict()
- msg = llc.llc.from_jsondict(jsondict['llc'])
- eq_(str(self.msg), str(msg))
-
-
-class Test_ControlFormatS(Test_ControlFormatI):
- msg = llc.llc(llc.SAP_BPDU, llc.SAP_BPDU, llc.ControlFormatS())
-
-
-class Test_ControlFormatU(Test_ControlFormatI):
- msg = llc.llc(llc.SAP_BPDU, llc.SAP_BPDU, llc.ControlFormatU())
diff --git a/tests/unit/packet/test_lldp.py b/tests/unit/packet/test_lldp.py
deleted file mode 100644
index d8d261c2..00000000
--- a/tests/unit/packet/test_lldp.py
+++ /dev/null
@@ -1,533 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-import struct
-import inspect
-from nose.tools import ok_, eq_, nottest
-
-from ryu.ofproto import ether
-from ryu.lib.packet import packet
-from ryu.lib.packet import ethernet
-from ryu.lib.packet import lldp
-from ryu.lib import addrconv
-
-LOG = logging.getLogger(__name__)
-
-
-class TestLLDPMandatoryTLV(unittest.TestCase):
- def setUp(self):
- # sample data is based on:
- # http://wiki.wireshark.org/LinkLayerDiscoveryProtocol
- #
- # mandatory TLV only
- self.data = b'\x01\x80\xc2\x00\x00\x0e\x00\x04' \
- + b'\x96\x1f\xa7\x26\x88\xcc\x02\x07' \
- + b'\x04\x00\x04\x96\x1f\xa7\x26\x04' \
- + b'\x04\x05\x31\x2f\x33\x06\x02\x00' \
- + b'\x78\x00\x00'
-
- def tearDown(self):
- pass
-
- def test_get_tlv_type(self):
- buf = b'\x02\x07\x04\x00\x04\x96\x1f\xa7\x26'
- eq_(lldp.LLDPBasicTLV.get_type(buf), lldp.LLDP_TLV_CHASSIS_ID)
-
- def test_parse_without_ethernet(self):
- buf = self.data[ethernet.ethernet._MIN_LEN:]
- (lldp_pkt, cls, rest_buf) = lldp.lldp.parser(buf)
- eq_(len(rest_buf), 0)
-
- tlvs = lldp_pkt.tlvs
- eq_(tlvs[0].tlv_type, lldp.LLDP_TLV_CHASSIS_ID)
- eq_(tlvs[0].len, 7)
- eq_(tlvs[0].subtype, lldp.ChassisID.SUB_MAC_ADDRESS)
- eq_(tlvs[0].chassis_id, b'\x00\x04\x96\x1f\xa7\x26')
- eq_(tlvs[1].tlv_type, lldp.LLDP_TLV_PORT_ID)
- eq_(tlvs[1].len, 4)
- eq_(tlvs[1].subtype, lldp.PortID.SUB_INTERFACE_NAME)
- eq_(tlvs[1].port_id, b'1/3')
- eq_(tlvs[2].tlv_type, lldp.LLDP_TLV_TTL)
- eq_(tlvs[2].len, 2)
- eq_(tlvs[2].ttl, 120)
- eq_(tlvs[3].tlv_type, lldp.LLDP_TLV_END)
-
- def test_parse(self):
- buf = self.data
- pkt = packet.Packet(buf)
- i = iter(pkt)
-
- eq_(type(next(i)), ethernet.ethernet)
- eq_(type(next(i)), lldp.lldp)
-
- def test_tlv(self):
- tlv = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=b'\x00\x04\x96\x1f\xa7\x26')
- eq_(tlv.tlv_type, lldp.LLDP_TLV_CHASSIS_ID)
- eq_(tlv.len, 7)
- (typelen, ) = struct.unpack('!H', b'\x02\x07')
- eq_(tlv.typelen, typelen)
-
- def test_serialize_without_ethernet(self):
- tlv_chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=b'\x00\x04\x96\x1f\xa7\x26')
- tlv_port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME,
- port_id=b'1/3')
- tlv_ttl = lldp.TTL(ttl=120)
- tlv_end = lldp.End()
- tlvs = (tlv_chassis_id, tlv_port_id, tlv_ttl, tlv_end)
- lldp_pkt = lldp.lldp(tlvs)
-
- eq_(lldp_pkt.serialize(None, None),
- self.data[ethernet.ethernet._MIN_LEN:])
-
- def test_serialize(self):
- pkt = packet.Packet()
-
- dst = lldp.LLDP_MAC_NEAREST_BRIDGE
- src = '00:04:96:1f:a7:26'
- ethertype = ether.ETH_TYPE_LLDP
- eth_pkt = ethernet.ethernet(dst, src, ethertype)
- pkt.add_protocol(eth_pkt)
-
- tlv_chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=addrconv.mac.
- text_to_bin(src))
- tlv_port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME,
- port_id=b'1/3')
- tlv_ttl = lldp.TTL(ttl=120)
- tlv_end = lldp.End()
- tlvs = (tlv_chassis_id, tlv_port_id, tlv_ttl, tlv_end)
- lldp_pkt = lldp.lldp(tlvs)
- pkt.add_protocol(lldp_pkt)
-
- eq_(len(pkt.protocols), 2)
-
- pkt.serialize()
-
- # Note: If ethernet frame is less than 60 bytes length,
- # ethernet.ethernet() appends padding to the payload.
- # So, we splits the serialized data to compare.
- data_len = len(self.data)
- pkt_data_lldp = pkt.data[:data_len]
- pkt_data_pad = pkt.data[data_len:]
- eq_(b'\x00' * (60 - data_len), pkt_data_pad)
-
- eq_(self.data, pkt_data_lldp)
-
- def test_to_string(self):
- chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=b'\x00\x04\x96\x1f\xa7\x26')
- port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME,
- port_id=b'1/3')
- ttl = lldp.TTL(ttl=120)
- end = lldp.End()
- tlvs = (chassis_id, port_id, ttl, end)
- lldp_pkt = lldp.lldp(tlvs)
-
- chassis_id_values = {'subtype': lldp.ChassisID.SUB_MAC_ADDRESS,
- 'chassis_id': b'\x00\x04\x96\x1f\xa7\x26',
- 'len': chassis_id.len,
- 'typelen': chassis_id.typelen}
- _ch_id_str = ','.join(['%s=%s' % (k, repr(chassis_id_values[k]))
- for k, v in inspect.getmembers(chassis_id)
- if k in chassis_id_values])
- tlv_chassis_id_str = '%s(%s)' % (lldp.ChassisID.__name__, _ch_id_str)
-
- port_id_values = {'subtype': port_id.subtype,
- 'port_id': port_id.port_id,
- 'len': port_id.len,
- 'typelen': port_id.typelen}
- _port_id_str = ','.join(['%s=%s' % (k, repr(port_id_values[k]))
- for k, v in inspect.getmembers(port_id)
- if k in port_id_values])
- tlv_port_id_str = '%s(%s)' % (lldp.PortID.__name__, _port_id_str)
-
- ttl_values = {'ttl': ttl.ttl,
- 'len': ttl.len,
- 'typelen': ttl.typelen}
- _ttl_str = ','.join(['%s=%s' % (k, repr(ttl_values[k]))
- for k, v in inspect.getmembers(ttl)
- if k in ttl_values])
- tlv_ttl_str = '%s(%s)' % (lldp.TTL.__name__, _ttl_str)
-
- end_values = {'len': end.len,
- 'typelen': end.typelen}
- _end_str = ','.join(['%s=%s' % (k, repr(end_values[k]))
- for k, v in inspect.getmembers(end)
- if k in end_values])
- tlv_end_str = '%s(%s)' % (lldp.End.__name__, _end_str)
-
- _tlvs_str = '(%s, %s, %s, %s)'
- tlvs_str = _tlvs_str % (tlv_chassis_id_str,
- tlv_port_id_str,
- tlv_ttl_str,
- tlv_end_str)
-
- _lldp_str = '%s(tlvs=%s)'
- lldp_str = _lldp_str % (lldp.lldp.__name__,
- tlvs_str)
-
- eq_(str(lldp_pkt), lldp_str)
- eq_(repr(lldp_pkt), lldp_str)
-
- def test_json(self):
- chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=b'\x00\x04\x96\x1f\xa7\x26')
- port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME,
- port_id=b'1/3')
- ttl = lldp.TTL(ttl=120)
- end = lldp.End()
- tlvs = (chassis_id, port_id, ttl, end)
- lldp1 = lldp.lldp(tlvs)
- jsondict = lldp1.to_jsondict()
- lldp2 = lldp.lldp.from_jsondict(jsondict['lldp'])
- eq_(str(lldp1), str(lldp2))
-
-
-class TestLLDPOptionalTLV(unittest.TestCase):
- def setUp(self):
- # sample data is based on:
- # http://wiki.wireshark.org/LinkLayerDiscoveryProtocol
- #
- # include optional TLV
- self.data = b'\x01\x80\xc2\x00\x00\x0e\x00\x01' \
- + b'\x30\xf9\xad\xa0\x88\xcc\x02\x07' \
- + b'\x04\x00\x01\x30\xf9\xad\xa0\x04' \
- + b'\x04\x05\x31\x2f\x31\x06\x02\x00' \
- + b'\x78\x08\x17\x53\x75\x6d\x6d\x69' \
- + b'\x74\x33\x30\x30\x2d\x34\x38\x2d' \
- + b'\x50\x6f\x72\x74\x20\x31\x30\x30' \
- + b'\x31\x00\x0a\x0d\x53\x75\x6d\x6d' \
- + b'\x69\x74\x33\x30\x30\x2d\x34\x38' \
- + b'\x00\x0c\x4c\x53\x75\x6d\x6d\x69' \
- + b'\x74\x33\x30\x30\x2d\x34\x38\x20' \
- + b'\x2d\x20\x56\x65\x72\x73\x69\x6f' \
- + b'\x6e\x20\x37\x2e\x34\x65\x2e\x31' \
- + b'\x20\x28\x42\x75\x69\x6c\x64\x20' \
- + b'\x35\x29\x20\x62\x79\x20\x52\x65' \
- + b'\x6c\x65\x61\x73\x65\x5f\x4d\x61' \
- + b'\x73\x74\x65\x72\x20\x30\x35\x2f' \
- + b'\x32\x37\x2f\x30\x35\x20\x30\x34' \
- + b'\x3a\x35\x33\x3a\x31\x31\x00\x0e' \
- + b'\x05\x01\x00\x14\x00\x14\x10\x0e' \
- + b'\x07' \
- + b'\x06\x00\x01\x30\xf9\xad\xa0\x02' \
- + b'\x00\x00\x03\xe9\x00\xfe\x07\x00' \
- + b'\x12\x0f\x02\x07\x01\x00\xfe\x09' \
- + b'\x00\x12\x0f\x01\x03\x6c\x00\x00' \
- + b'\x10\xfe\x09\x00\x12\x0f\x03\x01' \
- + b'\x00\x00\x00\x00\xfe\x06\x00\x12' \
- + b'\x0f\x04\x05\xf2\xfe\x06\x00\x80' \
- + b'\xc2\x01\x01\xe8\xfe\x07\x00\x80' \
- + b'\xc2\x02\x01\x00\x00\xfe\x17\x00' \
- + b'\x80\xc2\x03\x01\xe8\x10\x76\x32' \
- + b'\x2d\x30\x34\x38\x38\x2d\x30\x33' \
- + b'\x2d\x30\x35\x30\x35\x00\xfe\x05' \
- + b'\x00\x80\xc2\x04\x00\x00\x00'
-
- def tearDown(self):
- pass
-
- def test_parse(self):
- buf = self.data
- pkt = packet.Packet(buf)
- i = iter(pkt)
-
- eq_(type(next(i)), ethernet.ethernet)
- lldp_pkt = next(i)
- eq_(type(lldp_pkt), lldp.lldp)
-
- tlvs = lldp_pkt.tlvs
-
- # Port Description
- eq_(tlvs[3].tlv_type, lldp.LLDP_TLV_PORT_DESCRIPTION)
- eq_(tlvs[3].port_description, b'Summit300-48-Port 1001\x00')
-
- # System Name
- eq_(tlvs[4].tlv_type, lldp.LLDP_TLV_SYSTEM_NAME)
- eq_(tlvs[4].system_name, b'Summit300-48\x00')
-
- # System Description
-
- eq_(tlvs[5].tlv_type, lldp.LLDP_TLV_SYSTEM_DESCRIPTION)
- eq_(tlvs[5].system_description,
- b'Summit300-48 - Version 7.4e.1 (Build 5) '
- + b'by Release_Master 05/27/05 04:53:11\x00')
-
- # SystemCapabilities
- eq_(tlvs[6].tlv_type, lldp.LLDP_TLV_SYSTEM_CAPABILITIES)
- eq_(tlvs[6].subtype, lldp.ChassisID.SUB_CHASSIS_COMPONENT)
- eq_(tlvs[6].system_cap & lldp.SystemCapabilities.CAP_MAC_BRIDGE,
- lldp.SystemCapabilities.CAP_MAC_BRIDGE)
- eq_(tlvs[6].enabled_cap & lldp.SystemCapabilities.CAP_MAC_BRIDGE,
- lldp.SystemCapabilities.CAP_MAC_BRIDGE)
- eq_(tlvs[6].system_cap & lldp.SystemCapabilities.CAP_TELEPHONE, 0)
- eq_(tlvs[6].enabled_cap & lldp.SystemCapabilities.CAP_TELEPHONE, 0)
-
- # Management Address
- eq_(tlvs[7].tlv_type, lldp.LLDP_TLV_MANAGEMENT_ADDRESS)
- eq_(tlvs[7].addr_len, 7)
- eq_(tlvs[7].addr, b'\x00\x01\x30\xf9\xad\xa0')
- eq_(tlvs[7].intf_num, 1001)
-
- # Organizationally Specific
- eq_(tlvs[8].tlv_type, lldp.LLDP_TLV_ORGANIZATIONALLY_SPECIFIC)
- eq_(tlvs[8].oui, b'\x00\x12\x0f') # IEEE 802.3
- eq_(tlvs[8].subtype, 0x02) # Power Via MDI
-
- # End
- eq_(tlvs[16].tlv_type, lldp.LLDP_TLV_END)
-
- def test_parse_corrupted(self):
- buf = self.data
- pkt = packet.Packet(buf[:128])
-
- def test_serialize(self):
- pkt = packet.Packet()
-
- dst = lldp.LLDP_MAC_NEAREST_BRIDGE
- src = '00:01:30:f9:ad:a0'
- ethertype = ether.ETH_TYPE_LLDP
- eth_pkt = ethernet.ethernet(dst, src, ethertype)
- pkt.add_protocol(eth_pkt)
-
- tlv_chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=addrconv.mac.
- text_to_bin(src))
- tlv_port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME,
- port_id=b'1/1')
- tlv_ttl = lldp.TTL(ttl=120)
- tlv_port_description = lldp.PortDescription(
- port_description=b'Summit300-48-Port 1001\x00')
- tlv_system_name = lldp.SystemName(system_name=b'Summit300-48\x00')
- tlv_system_description = lldp.SystemDescription(
- system_description=b'Summit300-48 - Version 7.4e.1 (Build 5) '
- + b'by Release_Master 05/27/05 04:53:11\x00')
- tlv_system_capabilities = lldp.SystemCapabilities(
- subtype=lldp.ChassisID.SUB_CHASSIS_COMPONENT,
- system_cap=0x14,
- enabled_cap=0x14)
- tlv_management_address = lldp.ManagementAddress(
- addr_subtype=0x06, addr=b'\x00\x01\x30\xf9\xad\xa0',
- intf_subtype=0x02, intf_num=1001,
- oid=b'')
- tlv_organizationally_specific = lldp.OrganizationallySpecific(
- oui=b'\x00\x12\x0f', subtype=0x02, info=b'\x07\x01\x00')
- tlv_end = lldp.End()
- tlvs = (tlv_chassis_id, tlv_port_id, tlv_ttl, tlv_port_description,
- tlv_system_name, tlv_system_description,
- tlv_system_capabilities, tlv_management_address,
- tlv_organizationally_specific, tlv_end)
- lldp_pkt = lldp.lldp(tlvs)
- pkt.add_protocol(lldp_pkt)
-
- eq_(len(pkt.protocols), 2)
-
- pkt.serialize()
-
- # self.data has many organizationally specific TLVs
- data = six.binary_type(pkt.data[:-2])
- eq_(data, self.data[:len(data)])
-
- def test_to_string(self):
- chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=b'\x00\x01\x30\xf9\xad\xa0')
- port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME,
- port_id=b'1/1')
- ttl = lldp.TTL(ttl=120)
- port_desc = lldp.PortDescription(
- port_description=b'Summit300-48-Port 1001\x00')
- sys_name = lldp.SystemName(system_name=b'Summit300-48\x00')
- sys_desc = lldp.SystemDescription(
- system_description=b'Summit300-48 - Version 7.4e.1 (Build 5) '
- + b'by Release_Master 05/27/05 04:53:11\x00')
- sys_cap = lldp.SystemCapabilities(
- subtype=lldp.ChassisID.SUB_CHASSIS_COMPONENT,
- system_cap=0x14,
- enabled_cap=0x14)
- man_addr = lldp.ManagementAddress(
- addr_subtype=0x06, addr=b'\x00\x01\x30\xf9\xad\xa0',
- intf_subtype=0x02, intf_num=1001,
- oid='')
- org_spec = lldp.OrganizationallySpecific(
- oui=b'\x00\x12\x0f', subtype=0x02, info=b'\x07\x01\x00')
- end = lldp.End()
- tlvs = (chassis_id, port_id, ttl, port_desc, sys_name,
- sys_desc, sys_cap, man_addr, org_spec, end)
- lldp_pkt = lldp.lldp(tlvs)
-
- # ChassisID string
- chassis_id_values = {'subtype': lldp.ChassisID.SUB_MAC_ADDRESS,
- 'chassis_id': b'\x00\x01\x30\xf9\xad\xa0',
- 'len': chassis_id.len,
- 'typelen': chassis_id.typelen}
- _ch_id_str = ','.join(['%s=%s' % (k, repr(chassis_id_values[k]))
- for k, v in inspect.getmembers(chassis_id)
- if k in chassis_id_values])
- tlv_chassis_id_str = '%s(%s)' % (lldp.ChassisID.__name__, _ch_id_str)
-
- # PortID string
- port_id_values = {'subtype': port_id.subtype,
- 'port_id': port_id.port_id,
- 'len': port_id.len,
- 'typelen': port_id.typelen}
- _port_id_str = ','.join(['%s=%s' % (k, repr(port_id_values[k]))
- for k, v in inspect.getmembers(port_id)
- if k in port_id_values])
- tlv_port_id_str = '%s(%s)' % (lldp.PortID.__name__, _port_id_str)
-
- # TTL string
- ttl_values = {'ttl': ttl.ttl,
- 'len': ttl.len,
- 'typelen': ttl.typelen}
- _ttl_str = ','.join(['%s=%s' % (k, repr(ttl_values[k]))
- for k, v in inspect.getmembers(ttl)
- if k in ttl_values])
- tlv_ttl_str = '%s(%s)' % (lldp.TTL.__name__, _ttl_str)
-
- # PortDescription string
- port_desc_values = {'tlv_info': port_desc.tlv_info,
- 'len': port_desc.len,
- 'typelen': port_desc.typelen}
- _port_desc_str = ','.join(['%s=%s' % (k, repr(port_desc_values[k]))
- for k, v in inspect.getmembers(port_desc)
- if k in port_desc_values])
- tlv_port_desc_str = '%s(%s)' % (lldp.PortDescription.__name__,
- _port_desc_str)
-
- # SystemName string
- sys_name_values = {'tlv_info': sys_name.tlv_info,
- 'len': sys_name.len,
- 'typelen': sys_name.typelen}
- _system_name_str = ','.join(['%s=%s' % (k, repr(sys_name_values[k]))
- for k, v in inspect.getmembers(sys_name)
- if k in sys_name_values])
- tlv_system_name_str = '%s(%s)' % (lldp.SystemName.__name__,
- _system_name_str)
-
- # SystemDescription string
- sys_desc_values = {'tlv_info': sys_desc.tlv_info,
- 'len': sys_desc.len,
- 'typelen': sys_desc.typelen}
- _sys_desc_str = ','.join(['%s=%s' % (k, repr(sys_desc_values[k]))
- for k, v in inspect.getmembers(sys_desc)
- if k in sys_desc_values])
- tlv_sys_desc_str = '%s(%s)' % (lldp.SystemDescription.__name__,
- _sys_desc_str)
-
- # SystemCapabilities string
- sys_cap_values = {'subtype': lldp.ChassisID.SUB_CHASSIS_COMPONENT,
- 'system_cap': 0x14,
- 'enabled_cap': 0x14,
- 'len': sys_cap.len,
- 'typelen': sys_cap.typelen}
- _sys_cap_str = ','.join(['%s=%s' % (k, repr(sys_cap_values[k]))
- for k, v in inspect.getmembers(sys_cap)
- if k in sys_cap_values])
- tlv_sys_cap_str = '%s(%s)' % (lldp.SystemCapabilities.__name__,
- _sys_cap_str)
-
- # ManagementAddress string
- man_addr_values = {'addr_subtype': 0x06,
- 'addr': b'\x00\x01\x30\xf9\xad\xa0',
- 'addr_len': man_addr.addr_len,
- 'intf_subtype': 0x02,
- 'intf_num': 1001,
- 'oid': '',
- 'oid_len': man_addr.oid_len,
- 'len': man_addr.len,
- 'typelen': man_addr.typelen}
- _man_addr_str = ','.join(['%s=%s' % (k, repr(man_addr_values[k]))
- for k, v in inspect.getmembers(man_addr)
- if k in man_addr_values])
- tlv_man_addr_str = '%s(%s)' % (lldp.ManagementAddress.__name__,
- _man_addr_str)
-
- # OrganizationallySpecific string
- org_spec_values = {'oui': b'\x00\x12\x0f',
- 'subtype': 0x02,
- 'info': b'\x07\x01\x00',
- 'len': org_spec.len,
- 'typelen': org_spec.typelen}
- _org_spec_str = ','.join(['%s=%s' % (k, repr(org_spec_values[k]))
- for k, v in inspect.getmembers(org_spec)
- if k in org_spec_values])
- tlv_org_spec_str = '%s(%s)' % (lldp.OrganizationallySpecific.__name__,
- _org_spec_str)
-
- # End string
- end_values = {'len': end.len,
- 'typelen': end.typelen}
- _end_str = ','.join(['%s=%s' % (k, repr(end_values[k]))
- for k, v in inspect.getmembers(end)
- if k in end_values])
- tlv_end_str = '%s(%s)' % (lldp.End.__name__, _end_str)
-
- # tlvs string
- _tlvs_str = '(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
- tlvs_str = _tlvs_str % (tlv_chassis_id_str,
- tlv_port_id_str,
- tlv_ttl_str,
- tlv_port_desc_str,
- tlv_system_name_str,
- tlv_sys_desc_str,
- tlv_sys_cap_str,
- tlv_man_addr_str,
- tlv_org_spec_str,
- tlv_end_str)
-
- # lldp string
- _lldp_str = '%s(tlvs=%s)'
- lldp_str = _lldp_str % (lldp.lldp.__name__,
- tlvs_str)
-
- eq_(str(lldp_pkt), lldp_str)
- eq_(repr(lldp_pkt), lldp_str)
-
- def test_json(self):
- chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS,
- chassis_id=b'\x00\x01\x30\xf9\xad\xa0')
- port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME,
- port_id=b'1/1')
- ttl = lldp.TTL(ttl=120)
- port_desc = lldp.PortDescription(
- port_description=b'Summit300-48-Port 1001\x00')
- sys_name = lldp.SystemName(system_name=b'Summit300-48\x00')
- sys_desc = lldp.SystemDescription(
- system_description=b'Summit300-48 - Version 7.4e.1 (Build 5) '
- + b'by Release_Master 05/27/05 04:53:11\x00')
- sys_cap = lldp.SystemCapabilities(
- subtype=lldp.ChassisID.SUB_CHASSIS_COMPONENT,
- system_cap=0x14,
- enabled_cap=0x14)
- man_addr = lldp.ManagementAddress(
- addr_subtype=0x06, addr=b'\x00\x01\x30\xf9\xad\xa0',
- intf_subtype=0x02, intf_num=1001,
- oid='')
- org_spec = lldp.OrganizationallySpecific(
- oui=b'\x00\x12\x0f', subtype=0x02, info=b'\x07\x01\x00')
- end = lldp.End()
- tlvs = (chassis_id, port_id, ttl, port_desc, sys_name,
- sys_desc, sys_cap, man_addr, org_spec, end)
- lldp1 = lldp.lldp(tlvs)
- jsondict = lldp1.to_jsondict()
- lldp2 = lldp.lldp.from_jsondict(jsondict['lldp'])
- eq_(str(lldp1), str(lldp2))
diff --git a/tests/unit/packet/test_mpls.py b/tests/unit/packet/test_mpls.py
deleted file mode 100644
index e3f9bccf..00000000
--- a/tests/unit/packet/test_mpls.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import unittest
-import logging
-import inspect
-
-from nose.tools import eq_
-from ryu.lib.packet import mpls
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_mpls(unittest.TestCase):
-
- label = 29
- exp = 6
- bsb = 1
- ttl = 64
- mp = mpls.mpls(label, exp, bsb, ttl)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_to_string(self):
- mpls_values = {'label': self.label,
- 'exp': self.exp,
- 'bsb': self.bsb,
- 'ttl': self.ttl}
- _mpls_str = ','.join(['%s=%s' % (k, repr(mpls_values[k]))
- for k, v in inspect.getmembers(self.mp)
- if k in mpls_values])
- mpls_str = '%s(%s)' % (mpls.mpls.__name__, _mpls_str)
-
- eq_(str(self.mp), mpls_str)
- eq_(repr(self.mp), mpls_str)
-
- def test_json(self):
- jsondict = self.mp.to_jsondict()
- mp = mpls.mpls.from_jsondict(jsondict['mpls'])
- eq_(str(self.mp), str(mp))
-
- def test_label_from_bin_true(self):
- mpls_label = 0xfffff
- is_bos = True
- buf = b'\xff\xff\xf1'
- mpls_label_out, is_bos_out = mpls.label_from_bin(buf)
-
- eq_(mpls_label, mpls_label_out)
- eq_(is_bos, is_bos_out)
-
- def test_label_from_bin_false(self):
- mpls_label = 0xfffff
- is_bos = False
- buf = b'\xff\xff\xf0'
- mpls_label_out, is_bos_out = mpls.label_from_bin(buf)
-
- eq_(mpls_label, mpls_label_out)
- eq_(is_bos, is_bos_out)
-
- def test_label_to_bin_true(self):
- mpls_label = 0xfffff
- is_bos = True
- label = b'\xff\xff\xf1'
- label_out = mpls.label_to_bin(mpls_label, is_bos)
-
- eq_(label, label_out)
-
- def test_label_to_bin_false(self):
- mpls_label = 0xfffff
- is_bos = False
- label = b'\xff\xff\xf0'
- label_out = mpls.label_to_bin(mpls_label, is_bos)
-
- eq_(label, label_out)
diff --git a/tests/unit/packet/test_openflow.py b/tests/unit/packet/test_openflow.py
deleted file mode 100644
index b0dca25f..00000000
--- a/tests/unit/packet/test_openflow.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import logging
-import os
-import sys
-
-import unittest
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.lib import pcaplib
-from ryu.lib.packet import openflow
-from ryu.lib.packet import packet
-from ryu.utils import binary_str
-
-
-LOG = logging.getLogger(__name__)
-
-OPENFLOW_DATA_DIR = os.path.join(
- os.path.dirname(sys.modules[__name__].__file__),
- '../../packet_data/pcap/')
-
-
-class Test_openflow(unittest.TestCase):
- """
- Test case for ryu.lib.packet.openflow.
- """
-
- def test_pcap(self):
- files = [
- 'openflow_flowmod',
- 'openflow_flowstats_req',
- 'openflow_invalid_version',
- ]
-
- for f in files:
- # print('*** testing %s ...' % f)
- for _, buf in pcaplib.Reader(
- open(OPENFLOW_DATA_DIR + f + '.pcap', 'rb')):
- # Checks if message can be parsed as expected.
- pkt = packet.Packet(buf)
- openflow_pkt = pkt.get_protocol(openflow.openflow)
- ok_(isinstance(openflow_pkt, openflow.openflow),
- 'Failed to parse OpenFlow message: %s' % pkt)
-
- # Checks if message can be serialized as expected.
- pkt.serialize()
- eq_(buf, pkt.data,
- "b'%s' != b'%s'" % (binary_str(buf), binary_str(pkt.data)))
diff --git a/tests/unit/packet/test_ospf.py b/tests/unit/packet/test_ospf.py
deleted file mode 100644
index df57b8de..00000000
--- a/tests/unit/packet/test_ospf.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-from nose.tools import eq_
-from nose.tools import ok_
-
-from ryu.lib.packet import ospf
-
-
-class Test_ospf(unittest.TestCase):
- """ Test case for ryu.lib.packet.ospf
- """
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_router_lsa(self):
- link1 = ospf.RouterLSA.Link(id_='10.0.0.1', data='255.255.255.0',
- type_=ospf.LSA_LINK_TYPE_STUB, metric=10)
- msg = ospf.RouterLSA(id_='192.168.0.1', adv_router='192.168.0.2',
- links=[link1])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.LSA.parser(binmsg)
- eq_(msg.header.checksum, msg2.header.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
-
- def test_network_lsa(self):
- msg = ospf.NetworkLSA(id_='192.168.0.1', adv_router='192.168.0.2',
- mask='255.255.255.0', routers=['192.168.0.2'])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.LSA.parser(binmsg)
- eq_(msg.header.checksum, msg2.header.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
-
- def test_as_external_lsa(self):
- extnw1 = ospf.ASExternalLSA.ExternalNetwork(mask='255.255.255.0',
- metric=20,
- fwd_addr='10.0.0.1')
- msg = ospf.ASExternalLSA(id_='192.168.0.1', adv_router='192.168.0.2',
- extnws=[extnw1])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.LSA.parser(binmsg)
- eq_(msg.header.checksum, msg2.header.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
-
- def test_hello(self):
- msg = ospf.OSPFHello(router_id='192.168.0.1',
- neighbors=['192.168.0.2'])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.OSPFMessage.parser(binmsg)
- eq_(msg.checksum, msg2.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
-
- def test_dbdesc(self):
- link1 = ospf.RouterLSA.Link(id_='10.0.0.1', data='255.255.255.0',
- type_=ospf.LSA_LINK_TYPE_STUB, metric=10)
- lsa1 = ospf.RouterLSA(id_='192.168.0.1', adv_router='192.168.0.2',
- links=[link1])
- msg = ospf.OSPFDBDesc(router_id='192.168.0.1',
- lsa_headers=[lsa1.header])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.OSPFMessage.parser(binmsg)
- eq_(msg.checksum, msg2.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
-
- def test_lsreq(self):
- req = ospf.OSPFLSReq.Request(type_=ospf.OSPF_ROUTER_LSA,
- id_='192.168.0.1',
- adv_router='192.168.0.2')
- msg = ospf.OSPFLSReq(router_id='192.168.0.1', lsa_requests=[req])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.OSPFMessage.parser(binmsg)
- eq_(msg.checksum, msg2.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
-
- def test_lsupd(self):
- link1 = ospf.RouterLSA.Link(id_='10.0.0.1', data='255.255.255.0',
- type_=ospf.LSA_LINK_TYPE_STUB, metric=10)
- lsa1 = ospf.RouterLSA(id_='192.168.0.1', adv_router='192.168.0.2',
- links=[link1])
- msg = ospf.OSPFLSUpd(router_id='192.168.0.1', lsas=[lsa1])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.OSPFMessage.parser(binmsg)
- eq_(msg.checksum, msg2.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
-
- def test_lsack(self):
- link1 = ospf.RouterLSA.Link(id_='10.0.0.1', data='255.255.255.0',
- type_=ospf.LSA_LINK_TYPE_STUB, metric=10)
- lsa1 = ospf.RouterLSA(id_='192.168.0.1', adv_router='192.168.0.2',
- links=[link1])
- msg = ospf.OSPFLSAck(router_id='192.168.0.1',
- lsa_headers=[lsa1.header])
- binmsg = msg.serialize()
- msg2, cls, rest = ospf.OSPFMessage.parser(binmsg)
- eq_(msg.checksum, msg2.checksum)
- eq_(str(msg), str(msg2))
- eq_(rest, b'')
diff --git a/tests/unit/packet/test_packet.py b/tests/unit/packet/test_packet.py
deleted file mode 100644
index 1b4c704b..00000000
--- a/tests/unit/packet/test_packet.py
+++ /dev/null
@@ -1,1553 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import struct
-import inspect
-from nose.tools import ok_, eq_
-import six
-from ryu.ofproto import ether, inet
-from ryu.lib.packet import arp
-from ryu.lib.packet import bpdu
-from ryu.lib.packet import ethernet
-from ryu.lib.packet import icmp, icmpv6
-from ryu.lib.packet import ipv4, ipv6
-from ryu.lib.packet import llc
-from ryu.lib.packet import packet, packet_utils
-from ryu.lib.packet import sctp
-from ryu.lib.packet import tcp, udp
-from ryu.lib.packet import vlan
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger('test_packet')
-
-
-class TestPacket(unittest.TestCase):
- """ Test case for packet
- """
-
- dst_mac = 'aa:aa:aa:aa:aa:aa'
- src_mac = 'bb:bb:bb:bb:bb:bb'
- dst_mac_bin = addrconv.mac.text_to_bin(dst_mac)
- src_mac_bin = addrconv.mac.text_to_bin(src_mac)
- dst_ip = '192.168.128.10'
- src_ip = '192.168.122.20'
- dst_ip_bin = addrconv.ipv4.text_to_bin(dst_ip)
- src_port = 50001
- dst_port = 50002
- src_ip_bin = addrconv.ipv4.text_to_bin(src_ip)
- payload = b'\x06\x06\x47\x50\x00\x00\x00\x00' \
- + b'\xcd\xc5\x00\x00\x00\x00\x00\x00' \
- + b'\x10\x11\x12\x13\x14\x15\x16\x17' \
- + b'\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'
-
- def get_protocols(self, pkt):
- protocols = {}
- for p in pkt:
- if hasattr(p, 'protocol_name'):
- protocols[p.protocol_name] = p
- else:
- protocols['payload'] = p
- return protocols
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_arp(self):
- # buid packet
- e = ethernet.ethernet(self.dst_mac, self.src_mac,
- ether.ETH_TYPE_ARP)
- a = arp.arp(1, ether.ETH_TYPE_IP, 6, 4, 2,
- self.src_mac, self.src_ip, self.dst_mac,
- self.dst_ip)
- p = packet.Packet()
- p.add_protocol(e)
- p.add_protocol(a)
- p.serialize()
-
- # ethernet !6s6sH
- e_buf = self.dst_mac_bin \
- + self.src_mac_bin \
- + b'\x08\x06'
-
- # arp !HHBBH6sI6sI
- a_buf = b'\x00\x01' \
- + b'\x08\x00' \
- + b'\x06' \
- + b'\x04' \
- + b'\x00\x02' \
- + self.src_mac_bin \
- + self.src_ip_bin \
- + self.dst_mac_bin \
- + self.dst_ip_bin
-
- buf = e_buf + a_buf
-
- # Append padding if ethernet frame is less than 60 bytes length
- pad_len = 60 - len(buf)
- if pad_len > 0:
- buf += b'\x00' * pad_len
- eq_(buf, p.data)
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_arp = protocols['arp']
-
- # ethernet
- ok_(p_eth)
- eq_(self.dst_mac, p_eth.dst)
- eq_(self.src_mac, p_eth.src)
- eq_(ether.ETH_TYPE_ARP, p_eth.ethertype)
-
- # arp
- ok_(p_arp)
- eq_(1, p_arp.hwtype)
- eq_(ether.ETH_TYPE_IP, p_arp.proto)
- eq_(6, p_arp.hlen)
- eq_(4, p_arp.plen)
- eq_(2, p_arp.opcode)
- eq_(self.src_mac, p_arp.src_mac)
- eq_(self.src_ip, p_arp.src_ip)
- eq_(self.dst_mac, p_arp.dst_mac)
- eq_(self.dst_ip, p_arp.dst_ip)
-
- # to string
- eth_values = {'dst': self.dst_mac,
- 'src': self.src_mac,
- 'ethertype': ether.ETH_TYPE_ARP}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- arp_values = {'hwtype': 1,
- 'proto': ether.ETH_TYPE_IP,
- 'hlen': 6,
- 'plen': 4,
- 'opcode': 2,
- 'src_mac': self.src_mac,
- 'dst_mac': self.dst_mac,
- 'src_ip': self.src_ip,
- 'dst_ip': self.dst_ip}
- _arp_str = ','.join(['%s=%s' % (k, repr(arp_values[k]))
- for k, v in inspect.getmembers(p_arp)
- if k in arp_values])
- arp_str = '%s(%s)' % (arp.arp.__name__, _arp_str)
-
- pkt_str = '%s, %s' % (eth_str, arp_str)
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(arp_str, str(p_arp))
- eq_(arp_str, repr(p_arp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_vlan_arp(self):
- # buid packet
- e = ethernet.ethernet(self.dst_mac, self.src_mac,
- ether.ETH_TYPE_8021Q)
- v = vlan.vlan(0b111, 0b1, 3, ether.ETH_TYPE_ARP)
- a = arp.arp(1, ether.ETH_TYPE_IP, 6, 4, 2,
- self.src_mac, self.src_ip, self.dst_mac,
- self.dst_ip)
- p = packet.Packet()
- p.add_protocol(e)
- p.add_protocol(v)
- p.add_protocol(a)
- p.serialize()
-
- # ethernet !6s6sH
- e_buf = self.dst_mac_bin \
- + self.src_mac_bin \
- + b'\x81\x00'
-
- # vlan !HH
- v_buf = b'\xF0\x03' \
- + b'\x08\x06'
-
- # arp !HHBBH6sI6sI
- a_buf = b'\x00\x01' \
- + b'\x08\x00' \
- + b'\x06' \
- + b'\x04' \
- + b'\x00\x02' \
- + self.src_mac_bin \
- + self.src_ip_bin \
- + self.dst_mac_bin \
- + self.dst_ip_bin
-
- buf = e_buf + v_buf + a_buf
-
- # Append padding if ethernet frame is less than 60 bytes length
- pad_len = 60 - len(buf)
- if pad_len > 0:
- buf += b'\x00' * pad_len
- eq_(buf, p.data)
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_vlan = protocols['vlan']
- p_arp = protocols['arp']
-
- # ethernet
- ok_(p_eth)
- eq_(self.dst_mac, p_eth.dst)
- eq_(self.src_mac, p_eth.src)
- eq_(ether.ETH_TYPE_8021Q, p_eth.ethertype)
-
- # vlan
- ok_(p_vlan)
- eq_(0b111, p_vlan.pcp)
- eq_(0b1, p_vlan.cfi)
- eq_(3, p_vlan.vid)
- eq_(ether.ETH_TYPE_ARP, p_vlan.ethertype)
-
- # arp
- ok_(p_arp)
- eq_(1, p_arp.hwtype)
- eq_(ether.ETH_TYPE_IP, p_arp.proto)
- eq_(6, p_arp.hlen)
- eq_(4, p_arp.plen)
- eq_(2, p_arp.opcode)
- eq_(self.src_mac, p_arp.src_mac)
- eq_(self.src_ip, p_arp.src_ip)
- eq_(self.dst_mac, p_arp.dst_mac)
- eq_(self.dst_ip, p_arp.dst_ip)
-
- # to string
- eth_values = {'dst': self.dst_mac,
- 'src': self.src_mac,
- 'ethertype': ether.ETH_TYPE_8021Q}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- vlan_values = {'pcp': 0b111,
- 'cfi': 0b1,
- 'vid': 3,
- 'ethertype': ether.ETH_TYPE_ARP}
- _vlan_str = ','.join(['%s=%s' % (k, repr(vlan_values[k]))
- for k, v in inspect.getmembers(p_vlan)
- if k in vlan_values])
- vlan_str = '%s(%s)' % (vlan.vlan.__name__, _vlan_str)
-
- arp_values = {'hwtype': 1,
- 'proto': ether.ETH_TYPE_IP,
- 'hlen': 6,
- 'plen': 4,
- 'opcode': 2,
- 'src_mac': self.src_mac,
- 'dst_mac': self.dst_mac,
- 'src_ip': self.src_ip,
- 'dst_ip': self.dst_ip}
- _arp_str = ','.join(['%s=%s' % (k, repr(arp_values[k]))
- for k, v in inspect.getmembers(p_arp)
- if k in arp_values])
- arp_str = '%s(%s)' % (arp.arp.__name__, _arp_str)
-
- pkt_str = '%s, %s, %s' % (eth_str, vlan_str, arp_str)
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(vlan_str, str(p_vlan))
- eq_(vlan_str, repr(p_vlan))
-
- eq_(arp_str, str(p_arp))
- eq_(arp_str, repr(p_arp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv4_udp(self):
- # buid packet
- e = ethernet.ethernet(self.dst_mac, self.src_mac,
- ether.ETH_TYPE_IP)
- ip = ipv4.ipv4(4, 5, 1, 0, 3, 1, 4, 64, inet.IPPROTO_UDP, 0,
- self.src_ip, self.dst_ip)
- u = udp.udp(0x190F, 0x1F90, 0, 0)
-
- p = packet.Packet()
- p.add_protocol(e)
- p.add_protocol(ip)
- p.add_protocol(u)
- p.add_protocol(self.payload)
- p.serialize()
-
- # ethernet !6s6sH
- e_buf = self.dst_mac_bin \
- + self.src_mac_bin \
- + b'\x08\x00'
-
- # ipv4 !BBHHHBBHII
- ip_buf = b'\x45' \
- + b'\x01' \
- + b'\x00\x3C' \
- + b'\x00\x03' \
- + b'\x20\x04' \
- + b'\x40' \
- + b'\x11' \
- + b'\x00\x00' \
- + self.src_ip_bin \
- + self.dst_ip_bin
-
- # udp !HHHH
- u_buf = b'\x19\x0F' \
- + b'\x1F\x90' \
- + b'\x00\x28' \
- + b'\x00\x00'
-
- buf = e_buf + ip_buf + u_buf + self.payload
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv4 = protocols['ipv4']
- p_udp = protocols['udp']
-
- # ethernet
- ok_(p_eth)
- eq_(self.dst_mac, p_eth.dst)
- eq_(self.src_mac, p_eth.src)
- eq_(ether.ETH_TYPE_IP, p_eth.ethertype)
-
- # ipv4
- ok_(p_ipv4)
- eq_(4, p_ipv4.version)
- eq_(5, p_ipv4.header_length)
- eq_(1, p_ipv4.tos)
- l = len(ip_buf) + len(u_buf) + len(self.payload)
- eq_(l, p_ipv4.total_length)
- eq_(3, p_ipv4.identification)
- eq_(1, p_ipv4.flags)
- eq_(64, p_ipv4.ttl)
- eq_(inet.IPPROTO_UDP, p_ipv4.proto)
- eq_(self.src_ip, p_ipv4.src)
- eq_(self.dst_ip, p_ipv4.dst)
- t = bytearray(ip_buf)
- struct.pack_into('!H', t, 10, p_ipv4.csum)
- eq_(packet_utils.checksum(t), 0)
-
- # udp
- ok_(p_udp)
- eq_(0x190f, p_udp.src_port)
- eq_(0x1F90, p_udp.dst_port)
- eq_(len(u_buf) + len(self.payload), p_udp.total_length)
- eq_(0x77b2, p_udp.csum)
- t = bytearray(u_buf)
- struct.pack_into('!H', t, 6, p_udp.csum)
- ph = struct.pack('!4s4sBBH', self.src_ip_bin, self.dst_ip_bin, 0,
- 17, len(u_buf) + len(self.payload))
- t = ph + t + self.payload
- eq_(packet_utils.checksum(t), 0)
-
- # payload
- ok_('payload' in protocols)
- eq_(self.payload, protocols['payload'])
-
- # to string
- eth_values = {'dst': self.dst_mac,
- 'src': self.src_mac,
- 'ethertype': ether.ETH_TYPE_IP}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv4_values = {'version': 4,
- 'header_length': 5,
- 'tos': 1,
- 'total_length': l,
- 'identification': 3,
- 'flags': 1,
- 'offset': p_ipv4.offset,
- 'ttl': 64,
- 'proto': inet.IPPROTO_UDP,
- 'csum': p_ipv4.csum,
- 'src': self.src_ip,
- 'dst': self.dst_ip,
- 'option': None}
- _ipv4_str = ','.join(['%s=%s' % (k, repr(ipv4_values[k]))
- for k, v in inspect.getmembers(p_ipv4)
- if k in ipv4_values])
- ipv4_str = '%s(%s)' % (ipv4.ipv4.__name__, _ipv4_str)
-
- udp_values = {'src_port': 0x190f,
- 'dst_port': 0x1F90,
- 'total_length': len(u_buf) + len(self.payload),
- 'csum': 0x77b2}
- _udp_str = ','.join(['%s=%s' % (k, repr(udp_values[k]))
- for k, v in inspect.getmembers(p_udp)
- if k in udp_values])
- udp_str = '%s(%s)' % (udp.udp.__name__, _udp_str)
-
- pkt_str = '%s, %s, %s, %s' % (eth_str, ipv4_str, udp_str,
- repr(protocols['payload']))
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv4_str, str(p_ipv4))
- eq_(ipv4_str, repr(p_ipv4))
-
- eq_(udp_str, str(p_udp))
- eq_(udp_str, repr(p_udp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv4_tcp(self):
- # buid packet
- e = ethernet.ethernet(self.dst_mac, self.src_mac,
- ether.ETH_TYPE_IP)
- ip = ipv4.ipv4(4, 5, 0, 0, 0, 0, 0, 64, inet.IPPROTO_TCP, 0,
- self.src_ip, self.dst_ip)
- t = tcp.tcp(0x190F, 0x1F90, 0x123, 1, 6, 0b101010, 2048, 0, 0x6f,
- b'\x01\x02')
-
- p = packet.Packet()
- p.add_protocol(e)
- p.add_protocol(ip)
- p.add_protocol(t)
- p.add_protocol(self.payload)
- p.serialize()
-
- # ethernet !6s6sH
- e_buf = self.dst_mac_bin \
- + self.src_mac_bin \
- + b'\x08\x00'
-
- # ipv4 !BBHHHBBHII
- ip_buf = b'\x45' \
- + b'\x00' \
- + b'\x00\x4C' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x40' \
- + b'\x06' \
- + b'\x00\x00' \
- + self.src_ip_bin \
- + self.dst_ip_bin
-
- # tcp !HHIIBBHHH + option
- t_buf = b'\x19\x0F' \
- + b'\x1F\x90' \
- + b'\x00\x00\x01\x23' \
- + b'\x00\x00\x00\x01' \
- + b'\x60' \
- + b'\x2A' \
- + b'\x08\x00' \
- + b'\x00\x00' \
- + b'\x00\x6F' \
- + b'\x01\x02\x00\x00'
-
- buf = e_buf + ip_buf + t_buf + self.payload
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv4 = protocols['ipv4']
- p_tcp = protocols['tcp']
-
- # ethernet
- ok_(p_eth)
- eq_(self.dst_mac, p_eth.dst)
- eq_(self.src_mac, p_eth.src)
- eq_(ether.ETH_TYPE_IP, p_eth.ethertype)
-
- # ipv4
- ok_(p_ipv4)
- eq_(4, p_ipv4.version)
- eq_(5, p_ipv4.header_length)
- eq_(0, p_ipv4.tos)
- l = len(ip_buf) + len(t_buf) + len(self.payload)
- eq_(l, p_ipv4.total_length)
- eq_(0, p_ipv4.identification)
- eq_(0, p_ipv4.flags)
- eq_(64, p_ipv4.ttl)
- eq_(inet.IPPROTO_TCP, p_ipv4.proto)
- eq_(self.src_ip, p_ipv4.src)
- eq_(self.dst_ip, p_ipv4.dst)
- t = bytearray(ip_buf)
- struct.pack_into('!H', t, 10, p_ipv4.csum)
- eq_(packet_utils.checksum(t), 0)
-
- # tcp
- ok_(p_tcp)
- eq_(0x190f, p_tcp.src_port)
- eq_(0x1F90, p_tcp.dst_port)
- eq_(0x123, p_tcp.seq)
- eq_(1, p_tcp.ack)
- eq_(6, p_tcp.offset)
- eq_(0b101010, p_tcp.bits)
- eq_(2048, p_tcp.window_size)
- eq_(0x6f, p_tcp.urgent)
- eq_(len(t_buf), len(p_tcp))
- t = bytearray(t_buf)
- struct.pack_into('!H', t, 16, p_tcp.csum)
- ph = struct.pack('!4s4sBBH', self.src_ip_bin, self.dst_ip_bin, 0,
- 6, len(t_buf) + len(self.payload))
- t = ph + t + self.payload
- eq_(packet_utils.checksum(t), 0)
-
- # payload
- ok_('payload' in protocols)
- eq_(self.payload, protocols['payload'])
-
- # to string
- eth_values = {'dst': self.dst_mac,
- 'src': self.src_mac,
- 'ethertype': ether.ETH_TYPE_IP}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv4_values = {'version': 4,
- 'header_length': 5,
- 'tos': 0,
- 'total_length': l,
- 'identification': 0,
- 'flags': 0,
- 'offset': p_ipv4.offset,
- 'ttl': 64,
- 'proto': inet.IPPROTO_TCP,
- 'csum': p_ipv4.csum,
- 'src': self.src_ip,
- 'dst': self.dst_ip,
- 'option': None}
- _ipv4_str = ','.join(['%s=%s' % (k, repr(ipv4_values[k]))
- for k, v in inspect.getmembers(p_ipv4)
- if k in ipv4_values])
- ipv4_str = '%s(%s)' % (ipv4.ipv4.__name__, _ipv4_str)
-
- tcp_values = {'src_port': 0x190f,
- 'dst_port': 0x1F90,
- 'seq': 0x123,
- 'ack': 1,
- 'offset': 6,
- 'bits': 0b101010,
- 'window_size': 2048,
- 'csum': p_tcp.csum,
- 'urgent': 0x6f,
- 'option': p_tcp.option}
- _tcp_str = ','.join(['%s=%s' % (k, repr(tcp_values[k]))
- for k, v in inspect.getmembers(p_tcp)
- if k in tcp_values])
- tcp_str = '%s(%s)' % (tcp.tcp.__name__, _tcp_str)
-
- pkt_str = '%s, %s, %s, %s' % (eth_str, ipv4_str, tcp_str,
- repr(protocols['payload']))
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv4_str, str(p_ipv4))
- eq_(ipv4_str, repr(p_ipv4))
-
- eq_(tcp_str, str(p_tcp))
- eq_(tcp_str, repr(p_tcp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv4_sctp(self):
- # build packet
- e = ethernet.ethernet()
- ip = ipv4.ipv4(proto=inet.IPPROTO_SCTP)
- s = sctp.sctp(chunks=[sctp.chunk_data(payload_data=self.payload)])
-
- p = e / ip / s
- p.serialize()
-
- ipaddr = addrconv.ipv4.text_to_bin('0.0.0.0')
-
- # ethernet !6s6sH
- e_buf = b'\xff\xff\xff\xff\xff\xff' \
- + b'\x00\x00\x00\x00\x00\x00' \
- + b'\x08\x00'
-
- # ipv4 !BBHHHBBHII
- ip_buf = b'\x45' \
- + b'\x00' \
- + b'\x00\x50' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\xff' \
- + b'\x84' \
- + b'\x00\x00' \
- + ipaddr \
- + ipaddr
-
- # sctp !HHII + chunk_data !BBHIHHI + payload
- s_buf = b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x00' \
- + b'\x00' \
- + b'\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + self.payload
-
- buf = e_buf + ip_buf + s_buf
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv4 = protocols['ipv4']
- p_sctp = protocols['sctp']
-
- # ethernet
- ok_(p_eth)
- eq_('ff:ff:ff:ff:ff:ff', p_eth.dst)
- eq_('00:00:00:00:00:00', p_eth.src)
- eq_(ether.ETH_TYPE_IP, p_eth.ethertype)
-
- # ipv4
- ok_(p_ipv4)
- eq_(4, p_ipv4.version)
- eq_(5, p_ipv4.header_length)
- eq_(0, p_ipv4.tos)
- l = len(ip_buf) + len(s_buf)
- eq_(l, p_ipv4.total_length)
- eq_(0, p_ipv4.identification)
- eq_(0, p_ipv4.flags)
- eq_(255, p_ipv4.ttl)
- eq_(inet.IPPROTO_SCTP, p_ipv4.proto)
- eq_('10.0.0.1', p_ipv4.src)
- eq_('10.0.0.2', p_ipv4.dst)
- t = bytearray(ip_buf)
- struct.pack_into('!H', t, 10, p_ipv4.csum)
- eq_(packet_utils.checksum(t), 0x1403)
-
- # sctp
- ok_(p_sctp)
- eq_(1, p_sctp.src_port)
- eq_(1, p_sctp.dst_port)
- eq_(0, p_sctp.vtag)
- assert isinstance(p_sctp.chunks[0], sctp.chunk_data)
- eq_(0, p_sctp.chunks[0]._type)
- eq_(0, p_sctp.chunks[0].unordered)
- eq_(0, p_sctp.chunks[0].begin)
- eq_(0, p_sctp.chunks[0].end)
- eq_(16 + len(self.payload), p_sctp.chunks[0].length)
- eq_(0, p_sctp.chunks[0].tsn)
- eq_(0, p_sctp.chunks[0].sid)
- eq_(0, p_sctp.chunks[0].seq)
- eq_(0, p_sctp.chunks[0].payload_id)
- eq_(self.payload, p_sctp.chunks[0].payload_data)
- eq_(len(s_buf), len(p_sctp))
-
- # to string
- eth_values = {'dst': 'ff:ff:ff:ff:ff:ff',
- 'src': '00:00:00:00:00:00',
- 'ethertype': ether.ETH_TYPE_IP}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv4_values = {'version': 4,
- 'header_length': 5,
- 'tos': 0,
- 'total_length': l,
- 'identification': 0,
- 'flags': 0,
- 'offset': 0,
- 'ttl': 255,
- 'proto': inet.IPPROTO_SCTP,
- 'csum': p_ipv4.csum,
- 'src': '10.0.0.1',
- 'dst': '10.0.0.2',
- 'option': None}
- _ipv4_str = ','.join(['%s=%s' % (k, repr(ipv4_values[k]))
- for k, v in inspect.getmembers(p_ipv4)
- if k in ipv4_values])
- ipv4_str = '%s(%s)' % (ipv4.ipv4.__name__, _ipv4_str)
-
- data_values = {'unordered': 0,
- 'begin': 0,
- 'end': 0,
- 'length': 16 + len(self.payload),
- 'tsn': 0,
- 'sid': 0,
- 'seq': 0,
- 'payload_id': 0,
- 'payload_data': self.payload}
- _data_str = ','.join(['%s=%s' % (k, repr(data_values[k]))
- for k in sorted(data_values.keys())])
- data_str = '[%s(%s)]' % (sctp.chunk_data.__name__, _data_str)
-
- sctp_values = {'src_port': 1,
- 'dst_port': 1,
- 'vtag': 0,
- 'csum': repr(p_sctp.csum),
- 'chunks': data_str}
- _sctp_str = ','.join(['%s=%s' % (k, sctp_values[k])
- for k, _ in inspect.getmembers(p_sctp)
- if k in sctp_values])
- sctp_str = '%s(%s)' % (sctp.sctp.__name__, _sctp_str)
-
- pkt_str = '%s, %s, %s' % (eth_str, ipv4_str, sctp_str)
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv4_str, str(p_ipv4))
- eq_(ipv4_str, repr(p_ipv4))
-
- eq_(sctp_str, str(p_sctp))
- eq_(sctp_str, repr(p_sctp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv4_icmp(self):
- # buid packet
- e = ethernet.ethernet()
- ip = ipv4.ipv4(proto=inet.IPPROTO_ICMP)
- ic = icmp.icmp()
-
- p = e / ip / ic
- p.serialize()
-
- ipaddr = addrconv.ipv4.text_to_bin('0.0.0.0')
-
- # ethernet !6s6sH
- e_buf = b'\xff\xff\xff\xff\xff\xff' \
- + b'\x00\x00\x00\x00\x00\x00' \
- + b'\x08\x00'
-
- # ipv4 !BBHHHBBHII
- ip_buf = b'\x45' \
- + b'\x00' \
- + b'\x00\x1c' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\xff' \
- + b'\x01' \
- + b'\x00\x00' \
- + ipaddr \
- + ipaddr
-
- # icmp !BBH + echo !HH
- ic_buf = b'\x08' \
- + b'\x00' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00'
-
- buf = e_buf + ip_buf + ic_buf
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv4 = protocols['ipv4']
- p_icmp = protocols['icmp']
-
- # ethernet
- ok_(p_eth)
- eq_('ff:ff:ff:ff:ff:ff', p_eth.dst)
- eq_('00:00:00:00:00:00', p_eth.src)
- eq_(ether.ETH_TYPE_IP, p_eth.ethertype)
-
- # ipv4
- ok_(p_ipv4)
- eq_(4, p_ipv4.version)
- eq_(5, p_ipv4.header_length)
- eq_(0, p_ipv4.tos)
- l = len(ip_buf) + len(ic_buf)
- eq_(l, p_ipv4.total_length)
- eq_(0, p_ipv4.identification)
- eq_(0, p_ipv4.flags)
- eq_(255, p_ipv4.ttl)
- eq_(inet.IPPROTO_ICMP, p_ipv4.proto)
- eq_('10.0.0.1', p_ipv4.src)
- eq_('10.0.0.2', p_ipv4.dst)
- t = bytearray(ip_buf)
- struct.pack_into('!H', t, 10, p_ipv4.csum)
- eq_(packet_utils.checksum(t), 0x1403)
-
- # icmp
- ok_(p_icmp)
- eq_(8, p_icmp.type)
- eq_(0, p_icmp.code)
- eq_(0, p_icmp.data.id)
- eq_(0, p_icmp.data.seq)
- eq_(len(ic_buf), len(p_icmp))
- t = bytearray(ic_buf)
- struct.pack_into('!H', t, 2, p_icmp.csum)
- eq_(packet_utils.checksum(t), 0)
-
- # to string
- eth_values = {'dst': 'ff:ff:ff:ff:ff:ff',
- 'src': '00:00:00:00:00:00',
- 'ethertype': ether.ETH_TYPE_IP}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, _ in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv4_values = {'version': 4,
- 'header_length': 5,
- 'tos': 0,
- 'total_length': l,
- 'identification': 0,
- 'flags': 0,
- 'offset': p_ipv4.offset,
- 'ttl': 255,
- 'proto': inet.IPPROTO_ICMP,
- 'csum': p_ipv4.csum,
- 'src': '10.0.0.1',
- 'dst': '10.0.0.2',
- 'option': None}
- _ipv4_str = ','.join(['%s=%s' % (k, repr(ipv4_values[k]))
- for k, _ in inspect.getmembers(p_ipv4)
- if k in ipv4_values])
- ipv4_str = '%s(%s)' % (ipv4.ipv4.__name__, _ipv4_str)
-
- echo_values = {'id': 0,
- 'seq': 0,
- 'data': None}
- _echo_str = ','.join(['%s=%s' % (k, repr(echo_values[k]))
- for k in sorted(echo_values.keys())])
- echo_str = '%s(%s)' % (icmp.echo.__name__, _echo_str)
- icmp_values = {'type': 8,
- 'code': 0,
- 'csum': p_icmp.csum,
- 'data': echo_str}
- _icmp_str = ','.join(['%s=%s' % (k, icmp_values[k])
- for k, _ in inspect.getmembers(p_icmp)
- if k in icmp_values])
- icmp_str = '%s(%s)' % (icmp.icmp.__name__, _icmp_str)
-
- pkt_str = '%s, %s, %s' % (eth_str, ipv4_str, icmp_str)
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv4_str, str(p_ipv4))
- eq_(ipv4_str, repr(p_ipv4))
-
- eq_(icmp_str, str(p_icmp))
- eq_(icmp_str, repr(p_icmp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv6_udp(self):
- # build packet
- e = ethernet.ethernet(ethertype=ether.ETH_TYPE_IPV6)
- ip = ipv6.ipv6(nxt=inet.IPPROTO_UDP)
- u = udp.udp()
-
- p = e / ip / u / self.payload
- p.serialize()
-
- ipaddr = addrconv.ipv6.text_to_bin('::')
-
- # ethernet !6s6sH
- e_buf = b'\xff\xff\xff\xff\xff\xff' \
- + b'\x00\x00\x00\x00\x00\x00' \
- + b'\x86\xdd'
-
- # ipv6 !IHBB16s16s'
- ip_buf = b'\x60\x00\x00\x00' \
- + b'\x00\x00' \
- + b'\x11' \
- + b'\xff' \
- + b'\x00\x00' \
- + ipaddr \
- + ipaddr
-
- # udp !HHHH
- u_buf = b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x28' \
- + b'\x00\x00'
-
- buf = e_buf + ip_buf + u_buf + self.payload
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv6 = protocols['ipv6']
- p_udp = protocols['udp']
-
- # ethernet
- ok_(p_eth)
- eq_('ff:ff:ff:ff:ff:ff', p_eth.dst)
- eq_('00:00:00:00:00:00', p_eth.src)
- eq_(ether.ETH_TYPE_IPV6, p_eth.ethertype)
-
- # ipv6
- ok_(p_ipv6)
- eq_(6, p_ipv6.version)
- eq_(0, p_ipv6.traffic_class)
- eq_(0, p_ipv6.flow_label)
- eq_(len(u_buf) + len(self.payload), p_ipv6.payload_length)
- eq_(inet.IPPROTO_UDP, p_ipv6.nxt)
- eq_(255, p_ipv6.hop_limit)
- eq_('10::10', p_ipv6.src)
- eq_('20::20', p_ipv6.dst)
-
- # udp
- ok_(p_udp)
- eq_(1, p_udp.src_port)
- eq_(1, p_udp.dst_port)
- eq_(len(u_buf) + len(self.payload), p_udp.total_length)
- eq_(0x2B60, p_udp.csum)
- t = bytearray(u_buf)
- struct.pack_into('!H', t, 6, p_udp.csum)
- ph = struct.pack('!16s16sI3xB', ipaddr, ipaddr,
- len(u_buf) + len(self.payload), 17)
- t = ph + t + self.payload
- eq_(packet_utils.checksum(t), 0x62)
-
- # payload
- ok_('payload' in protocols)
- eq_(self.payload, protocols['payload'])
-
- # to string
- eth_values = {'dst': 'ff:ff:ff:ff:ff:ff',
- 'src': '00:00:00:00:00:00',
- 'ethertype': ether.ETH_TYPE_IPV6}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv6_values = {'version': 6,
- 'traffic_class': 0,
- 'flow_label': 0,
- 'payload_length': len(u_buf) + len(self.payload),
- 'nxt': inet.IPPROTO_UDP,
- 'hop_limit': 255,
- 'src': '10::10',
- 'dst': '20::20',
- 'ext_hdrs': []}
- _ipv6_str = ','.join(['%s=%s' % (k, repr(ipv6_values[k]))
- for k, v in inspect.getmembers(p_ipv6)
- if k in ipv6_values])
- ipv6_str = '%s(%s)' % (ipv6.ipv6.__name__, _ipv6_str)
-
- udp_values = {'src_port': 1,
- 'dst_port': 1,
- 'total_length': len(u_buf) + len(self.payload),
- 'csum': 0x2B60}
- _udp_str = ','.join(['%s=%s' % (k, repr(udp_values[k]))
- for k, v in inspect.getmembers(p_udp)
- if k in udp_values])
- udp_str = '%s(%s)' % (udp.udp.__name__, _udp_str)
-
- pkt_str = '%s, %s, %s, %s' % (eth_str, ipv6_str, udp_str,
- repr(protocols['payload']))
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv6_str, str(p_ipv6))
- eq_(ipv6_str, repr(p_ipv6))
-
- eq_(udp_str, str(p_udp))
- eq_(udp_str, repr(p_udp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv6_tcp(self):
- # build packet
- e = ethernet.ethernet(ethertype=ether.ETH_TYPE_IPV6)
- ip = ipv6.ipv6()
- t = tcp.tcp(option=b'\x01\x02')
-
- p = e / ip / t / self.payload
- p.serialize()
-
- ipaddr = addrconv.ipv6.text_to_bin('::')
-
- # ethernet !6s6sH
- e_buf = b'\xff\xff\xff\xff\xff\xff' \
- + b'\x00\x00\x00\x00\x00\x00' \
- + b'\x86\xdd'
-
- # ipv6 !IHBB16s16s'
- ip_buf = b'\x60\x00\x00\x00' \
- + b'\x00\x00' \
- + b'\x06' \
- + b'\xff' \
- + b'\x00\x00' \
- + ipaddr \
- + ipaddr
-
- # tcp !HHIIBBHHH + option
- t_buf = b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x60' \
- + b'\x00' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x01\x02\x00\x00'
-
- buf = e_buf + ip_buf + t_buf + self.payload
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv6 = protocols['ipv6']
- p_tcp = protocols['tcp']
-
- # ethernet
- ok_(p_eth)
- eq_('ff:ff:ff:ff:ff:ff', p_eth.dst)
- eq_('00:00:00:00:00:00', p_eth.src)
- eq_(ether.ETH_TYPE_IPV6, p_eth.ethertype)
-
- # ipv6
- ok_(p_ipv6)
- eq_(6, p_ipv6.version)
- eq_(0, p_ipv6.traffic_class)
- eq_(0, p_ipv6.flow_label)
- eq_(len(t_buf) + len(self.payload), p_ipv6.payload_length)
- eq_(inet.IPPROTO_TCP, p_ipv6.nxt)
- eq_(255, p_ipv6.hop_limit)
- eq_('10::10', p_ipv6.src)
- eq_('20::20', p_ipv6.dst)
-
- # tcp
- ok_(p_tcp)
- eq_(1, p_tcp.src_port)
- eq_(1, p_tcp.dst_port)
- eq_(0, p_tcp.seq)
- eq_(0, p_tcp.ack)
- eq_(6, p_tcp.offset)
- eq_(0, p_tcp.bits)
- eq_(0, p_tcp.window_size)
- eq_(0, p_tcp.urgent)
- eq_(len(t_buf), len(p_tcp))
- t = bytearray(t_buf)
- struct.pack_into('!H', t, 16, p_tcp.csum)
- ph = struct.pack('!16s16sI3xB', ipaddr, ipaddr,
- len(t_buf) + len(self.payload), 6)
- t = ph + t + self.payload
- eq_(packet_utils.checksum(t), 0x62)
-
- # payload
- ok_('payload' in protocols)
- eq_(self.payload, protocols['payload'])
-
- # to string
- eth_values = {'dst': 'ff:ff:ff:ff:ff:ff',
- 'src': '00:00:00:00:00:00',
- 'ethertype': ether.ETH_TYPE_IPV6}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv6_values = {'version': 6,
- 'traffic_class': 0,
- 'flow_label': 0,
- 'payload_length': len(t_buf) + len(self.payload),
- 'nxt': inet.IPPROTO_TCP,
- 'hop_limit': 255,
- 'src': '10::10',
- 'dst': '20::20',
- 'ext_hdrs': []}
- _ipv6_str = ','.join(['%s=%s' % (k, repr(ipv6_values[k]))
- for k, v in inspect.getmembers(p_ipv6)
- if k in ipv6_values])
- ipv6_str = '%s(%s)' % (ipv6.ipv6.__name__, _ipv6_str)
-
- tcp_values = {'src_port': 1,
- 'dst_port': 1,
- 'seq': 0,
- 'ack': 0,
- 'offset': 6,
- 'bits': 0,
- 'window_size': 0,
- 'csum': p_tcp.csum,
- 'urgent': 0,
- 'option': p_tcp.option}
- _tcp_str = ','.join(['%s=%s' % (k, repr(tcp_values[k]))
- for k, v in inspect.getmembers(p_tcp)
- if k in tcp_values])
- tcp_str = '%s(%s)' % (tcp.tcp.__name__, _tcp_str)
-
- pkt_str = '%s, %s, %s, %s' % (eth_str, ipv6_str, tcp_str,
- repr(protocols['payload']))
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv6_str, str(p_ipv6))
- eq_(ipv6_str, repr(p_ipv6))
-
- eq_(tcp_str, str(p_tcp))
- eq_(tcp_str, repr(p_tcp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv6_sctp(self):
- # build packet
- e = ethernet.ethernet(ethertype=ether.ETH_TYPE_IPV6)
- ip = ipv6.ipv6(nxt=inet.IPPROTO_SCTP)
- s = sctp.sctp(chunks=[sctp.chunk_data(payload_data=self.payload)])
-
- p = e / ip / s
- p.serialize()
-
- ipaddr = addrconv.ipv6.text_to_bin('::')
-
- # ethernet !6s6sH
- e_buf = b'\xff\xff\xff\xff\xff\xff' \
- + b'\x00\x00\x00\x00\x00\x00' \
- + b'\x86\xdd'
-
- # ipv6 !IHBB16s16s'
- ip_buf = b'\x60\x00\x00\x00' \
- + b'\x00\x00' \
- + b'\x84' \
- + b'\xff' \
- + b'\x00\x00' \
- + ipaddr \
- + ipaddr
-
- # sctp !HHII + chunk_data !BBHIHHI + payload
- s_buf = b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x00' \
- + b'\x00' \
- + b'\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00' \
- + b'\x00\x00\x00\x00' \
- + self.payload
-
- buf = e_buf + ip_buf + s_buf
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv6 = protocols['ipv6']
- p_sctp = protocols['sctp']
-
- # ethernet
- ok_(p_eth)
- eq_('ff:ff:ff:ff:ff:ff', p_eth.dst)
- eq_('00:00:00:00:00:00', p_eth.src)
- eq_(ether.ETH_TYPE_IPV6, p_eth.ethertype)
-
- # ipv6
- ok_(p_ipv6)
- eq_(6, p_ipv6.version)
- eq_(0, p_ipv6.traffic_class)
- eq_(0, p_ipv6.flow_label)
- eq_(len(s_buf), p_ipv6.payload_length)
- eq_(inet.IPPROTO_SCTP, p_ipv6.nxt)
- eq_(255, p_ipv6.hop_limit)
- eq_('10::10', p_ipv6.src)
- eq_('20::20', p_ipv6.dst)
-
- # sctp
- ok_(p_sctp)
- eq_(1, p_sctp.src_port)
- eq_(1, p_sctp.dst_port)
- eq_(0, p_sctp.vtag)
- assert isinstance(p_sctp.chunks[0], sctp.chunk_data)
- eq_(0, p_sctp.chunks[0]._type)
- eq_(0, p_sctp.chunks[0].unordered)
- eq_(0, p_sctp.chunks[0].begin)
- eq_(0, p_sctp.chunks[0].end)
- eq_(16 + len(self.payload), p_sctp.chunks[0].length)
- eq_(0, p_sctp.chunks[0].tsn)
- eq_(0, p_sctp.chunks[0].sid)
- eq_(0, p_sctp.chunks[0].seq)
- eq_(0, p_sctp.chunks[0].payload_id)
- eq_(self.payload, p_sctp.chunks[0].payload_data)
- eq_(len(s_buf), len(p_sctp))
-
- # to string
- eth_values = {'dst': 'ff:ff:ff:ff:ff:ff',
- 'src': '00:00:00:00:00:00',
- 'ethertype': ether.ETH_TYPE_IPV6}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv6_values = {'version': 6,
- 'traffic_class': 0,
- 'flow_label': 0,
- 'payload_length': len(s_buf),
- 'nxt': inet.IPPROTO_SCTP,
- 'hop_limit': 255,
- 'src': '10::10',
- 'dst': '20::20',
- 'ext_hdrs': []}
- _ipv6_str = ','.join(['%s=%s' % (k, repr(ipv6_values[k]))
- for k, v in inspect.getmembers(p_ipv6)
- if k in ipv6_values])
- ipv6_str = '%s(%s)' % (ipv6.ipv6.__name__, _ipv6_str)
-
- data_values = {'unordered': 0,
- 'begin': 0,
- 'end': 0,
- 'length': 16 + len(self.payload),
- 'tsn': 0,
- 'sid': 0,
- 'seq': 0,
- 'payload_id': 0,
- 'payload_data': self.payload}
- _data_str = ','.join(['%s=%s' % (k, repr(data_values[k]))
- for k in sorted(data_values.keys())])
- data_str = '[%s(%s)]' % (sctp.chunk_data.__name__, _data_str)
-
- sctp_values = {'src_port': 1,
- 'dst_port': 1,
- 'vtag': 0,
- 'csum': repr(p_sctp.csum),
- 'chunks': data_str}
- _sctp_str = ','.join(['%s=%s' % (k, sctp_values[k])
- for k, _ in inspect.getmembers(p_sctp)
- if k in sctp_values])
- sctp_str = '%s(%s)' % (sctp.sctp.__name__, _sctp_str)
-
- pkt_str = '%s, %s, %s' % (eth_str, ipv6_str, sctp_str)
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv6_str, str(p_ipv6))
- eq_(ipv6_str, repr(p_ipv6))
-
- eq_(sctp_str, str(p_sctp))
- eq_(sctp_str, repr(p_sctp))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_ipv6_icmpv6(self):
- # build packet
- e = ethernet.ethernet(ethertype=ether.ETH_TYPE_IPV6)
- ip = ipv6.ipv6(nxt=inet.IPPROTO_ICMPV6)
- ic = icmpv6.icmpv6()
-
- p = e / ip / ic
- p.serialize()
-
- ipaddr = addrconv.ipv6.text_to_bin('::')
-
- # ethernet !6s6sH
- e_buf = b'\xff\xff\xff\xff\xff\xff' \
- + b'\x00\x00\x00\x00\x00\x00' \
- + b'\x86\xdd'
-
- # ipv6 !IHBB16s16s'
- ip_buf = b'\x60\x00\x00\x00' \
- + b'\x00\x00' \
- + b'\x3a' \
- + b'\xff' \
- + b'\x00\x00' \
- + ipaddr \
- + ipaddr
-
- # icmpv6 !BBH
- ic_buf = b'\x00' \
- + b'\x00' \
- + b'\x00\x00'
-
- buf = e_buf + ip_buf + ic_buf
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_ipv6 = protocols['ipv6']
- p_icmpv6 = protocols['icmpv6']
-
- # ethernet
- ok_(p_eth)
- eq_('ff:ff:ff:ff:ff:ff', p_eth.dst)
- eq_('00:00:00:00:00:00', p_eth.src)
- eq_(ether.ETH_TYPE_IPV6, p_eth.ethertype)
-
- # ipv6
- ok_(p_ipv6)
- eq_(6, p_ipv6.version)
- eq_(0, p_ipv6.traffic_class)
- eq_(0, p_ipv6.flow_label)
- eq_(len(ic_buf), p_ipv6.payload_length)
- eq_(inet.IPPROTO_ICMPV6, p_ipv6.nxt)
- eq_(255, p_ipv6.hop_limit)
- eq_('10::10', p_ipv6.src)
- eq_('20::20', p_ipv6.dst)
-
- # icmpv6
- ok_(p_icmpv6)
- eq_(0, p_icmpv6.type_)
- eq_(0, p_icmpv6.code)
- eq_(len(ic_buf), len(p_icmpv6))
- t = bytearray(ic_buf)
- struct.pack_into('!H', t, 2, p_icmpv6.csum)
- ph = struct.pack('!16s16sI3xB', ipaddr, ipaddr, len(ic_buf), 58)
- t = ph + t
- eq_(packet_utils.checksum(t), 0x60)
-
- # to string
- eth_values = {'dst': 'ff:ff:ff:ff:ff:ff',
- 'src': '00:00:00:00:00:00',
- 'ethertype': ether.ETH_TYPE_IPV6}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, _ in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ipv6_values = {'version': 6,
- 'traffic_class': 0,
- 'flow_label': 0,
- 'payload_length': len(ic_buf),
- 'nxt': inet.IPPROTO_ICMPV6,
- 'hop_limit': 255,
- 'src': '10::10',
- 'dst': '20::20',
- 'ext_hdrs': []}
- _ipv6_str = ','.join(['%s=%s' % (k, repr(ipv6_values[k]))
- for k, _ in inspect.getmembers(p_ipv6)
- if k in ipv6_values])
- ipv6_str = '%s(%s)' % (ipv6.ipv6.__name__, _ipv6_str)
-
- icmpv6_values = {'type_': 0,
- 'code': 0,
- 'csum': p_icmpv6.csum,
- 'data': None}
- _icmpv6_str = ','.join(['%s=%s' % (k, repr(icmpv6_values[k]))
- for k, _ in inspect.getmembers(p_icmpv6)
- if k in icmpv6_values])
- icmpv6_str = '%s(%s)' % (icmpv6.icmpv6.__name__, _icmpv6_str)
-
- pkt_str = '%s, %s, %s' % (eth_str, ipv6_str, icmpv6_str)
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(ipv6_str, str(p_ipv6))
- eq_(ipv6_str, repr(p_ipv6))
-
- eq_(icmpv6_str, str(p_icmpv6))
- eq_(icmpv6_str, repr(p_icmpv6))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_llc_bpdu(self):
- # buid packet
- e = ethernet.ethernet(self.dst_mac, self.src_mac,
- ether.ETH_TYPE_IEEE802_3)
- llc_control = llc.ControlFormatU(0, 0, 0)
- l = llc.llc(llc.SAP_BPDU, llc.SAP_BPDU, llc_control)
- b = bpdu.ConfigurationBPDUs(flags=0,
- root_priority=32768,
- root_system_id_extension=0,
- root_mac_address=self.src_mac,
- root_path_cost=0,
- bridge_priority=32768,
- bridge_system_id_extension=0,
- bridge_mac_address=self.dst_mac,
- port_priority=128,
- port_number=4,
- message_age=1,
- max_age=20,
- hello_time=2,
- forward_delay=15)
-
- p = packet.Packet()
- p.add_protocol(e)
- p.add_protocol(l)
- p.add_protocol(b)
- p.serialize()
-
- # ethernet !6s6sH
- e_buf = self.dst_mac_bin + self.src_mac_bin + b'\x05\xdc'
-
- # llc !BBB
- l_buf = (b'\x42'
- b'\x42'
- b'\x03')
-
- # bpdu !HBBBQIQHHHHH
- b_buf = (b'\x00\x00'
- b'\x00'
- b'\x00'
- b'\x00'
- b'\x80\x00\xbb\xbb\xbb\xbb\xbb\xbb'
- b'\x00\x00\x00\x00'
- b'\x80\x00\xaa\xaa\xaa\xaa\xaa\xaa'
- b'\x80\x04'
- b'\x01\x00'
- b'\x14\x00'
- b'\x02\x00'
- b'\x0f\x00')
-
- buf = e_buf + l_buf + b_buf
-
- # Append padding if ethernet frame is less than 60 bytes length
- pad_len = 60 - len(buf)
- if pad_len > 0:
- buf += b'\x00' * pad_len
- eq_(buf, p.data)
-
- # parse
- pkt = packet.Packet(p.data)
- protocols = self.get_protocols(pkt)
- p_eth = protocols['ethernet']
- p_llc = protocols['llc']
- p_bpdu = protocols['ConfigurationBPDUs']
-
- # ethernet
- ok_(p_eth)
- eq_(self.dst_mac, p_eth.dst)
- eq_(self.src_mac, p_eth.src)
- eq_(ether.ETH_TYPE_IEEE802_3, p_eth.ethertype)
-
- # llc
- ok_(p_llc)
- eq_(llc.SAP_BPDU, p_llc.dsap_addr)
- eq_(llc.SAP_BPDU, p_llc.ssap_addr)
- eq_(0, p_llc.control.modifier_function1)
- eq_(0, p_llc.control.pf_bit)
- eq_(0, p_llc.control.modifier_function2)
-
- # bpdu
- ok_(p_bpdu)
- eq_(bpdu.PROTOCOL_IDENTIFIER, p_bpdu._protocol_id)
- eq_(bpdu.PROTOCOLVERSION_ID_BPDU, p_bpdu._version_id)
- eq_(bpdu.TYPE_CONFIG_BPDU, p_bpdu._bpdu_type)
- eq_(0, p_bpdu.flags)
- eq_(32768, p_bpdu.root_priority)
- eq_(0, p_bpdu.root_system_id_extension)
- eq_(self.src_mac, p_bpdu.root_mac_address)
- eq_(0, p_bpdu.root_path_cost)
- eq_(32768, p_bpdu.bridge_priority)
- eq_(0, p_bpdu.bridge_system_id_extension)
- eq_(self.dst_mac, p_bpdu.bridge_mac_address)
- eq_(128, p_bpdu.port_priority)
- eq_(4, p_bpdu.port_number)
- eq_(1, p_bpdu.message_age)
- eq_(20, p_bpdu.max_age)
- eq_(2, p_bpdu.hello_time)
- eq_(15, p_bpdu.forward_delay)
-
- # to string
- eth_values = {'dst': self.dst_mac,
- 'src': self.src_mac,
- 'ethertype': ether.ETH_TYPE_IEEE802_3}
- _eth_str = ','.join(['%s=%s' % (k, repr(eth_values[k]))
- for k, v in inspect.getmembers(p_eth)
- if k in eth_values])
- eth_str = '%s(%s)' % (ethernet.ethernet.__name__, _eth_str)
-
- ctrl_values = {'modifier_function1': 0,
- 'pf_bit': 0,
- 'modifier_function2': 0}
- _ctrl_str = ','.join(['%s=%s' % (k, repr(ctrl_values[k]))
- for k, v in inspect.getmembers(p_llc.control)
- if k in ctrl_values])
- ctrl_str = '%s(%s)' % (llc.ControlFormatU.__name__, _ctrl_str)
-
- llc_values = {'dsap_addr': repr(llc.SAP_BPDU),
- 'ssap_addr': repr(llc.SAP_BPDU),
- 'control': ctrl_str}
- _llc_str = ','.join(['%s=%s' % (k, llc_values[k])
- for k, v in inspect.getmembers(p_llc)
- if k in llc_values])
- llc_str = '%s(%s)' % (llc.llc.__name__, _llc_str)
-
- _long = int if six.PY3 else long
- bpdu_values = {'flags': 0,
- 'root_priority': _long(32768),
- 'root_system_id_extension': _long(0),
- 'root_mac_address': self.src_mac,
- 'root_path_cost': 0,
- 'bridge_priority': _long(32768),
- 'bridge_system_id_extension': _long(0),
- 'bridge_mac_address': self.dst_mac,
- 'port_priority': 128,
- 'port_number': 4,
- 'message_age': float(1),
- 'max_age': float(20),
- 'hello_time': float(2),
- 'forward_delay': float(15)}
- _bpdu_str = ','.join(['%s=%s' % (k, repr(bpdu_values[k]))
- for k, v in inspect.getmembers(p_bpdu)
- if k in bpdu_values])
- bpdu_str = '%s(%s)' % (bpdu.ConfigurationBPDUs.__name__, _bpdu_str)
-
- pkt_str = '%s, %s, %s' % (eth_str, llc_str, bpdu_str)
-
- eq_(eth_str, str(p_eth))
- eq_(eth_str, repr(p_eth))
-
- eq_(llc_str, str(p_llc))
- eq_(llc_str, repr(p_llc))
-
- eq_(bpdu_str, str(p_bpdu))
- eq_(bpdu_str, repr(p_bpdu))
-
- eq_(pkt_str, str(pkt))
- eq_(pkt_str, repr(pkt))
-
- def test_div_api(self):
- e = ethernet.ethernet(self.dst_mac, self.src_mac, ether.ETH_TYPE_IP)
- i = ipv4.ipv4()
- u = udp.udp(self.src_port, self.dst_port)
- pkt = e / i / u
- ok_(isinstance(pkt, packet.Packet))
- ok_(isinstance(pkt.protocols[0], ethernet.ethernet))
- ok_(isinstance(pkt.protocols[1], ipv4.ipv4))
- ok_(isinstance(pkt.protocols[2], udp.udp))
diff --git a/tests/unit/packet/test_pbb.py b/tests/unit/packet/test_pbb.py
deleted file mode 100644
index dd7778cd..00000000
--- a/tests/unit/packet/test_pbb.py
+++ /dev/null
@@ -1,172 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-import struct
-import unittest
-
-from nose.tools import eq_
-from nose.tools import ok_
-from nose.tools import raises
-from ryu.ofproto import ether
-from ryu.ofproto import inet
-from ryu.lib.packet import ethernet
-from ryu.lib.packet import packet
-from ryu.lib.packet import ipv4
-from ryu.lib.packet import vlan
-from ryu.lib.packet import pbb
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_itag(unittest.TestCase):
-
- pcp = 3
- dei = 0
- uca = 1
- sid = 16770000
- data = pcp << 29 | dei << 28 | uca << 27 | sid
- buf = struct.pack(pbb.itag._PACK_STR, data)
- it = pbb.itag(pcp, dei, uca, sid)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.pcp, self.it.pcp)
- eq_(self.dei, self.it.dei)
- eq_(self.uca, self.it.uca)
- eq_(self.sid, self.it.sid)
-
- def test_parser(self):
- _res = pbb.itag.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- eq_(res.pcp, self.pcp)
- eq_(res.dei, self.dei)
- eq_(res.uca, self.uca)
- eq_(res.sid, self.sid)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.it.serialize(data, prev)
- res = struct.unpack(pbb.itag._PACK_STR, buf)
- eq_(res[0], self.data)
-
- def _build_itag(self):
- b_src_mac = '00:07:0d:af:f4:54'
- b_dst_mac = '00:00:00:00:00:00'
- b_ethertype = ether.ETH_TYPE_8021AD
- e1 = ethernet.ethernet(b_dst_mac, b_src_mac, b_ethertype)
-
- b_pcp = 0
- b_cfi = 0
- b_vid = 32
- b_ethertype = ether.ETH_TYPE_8021Q
- bt = vlan.svlan(b_pcp, b_cfi, b_vid, b_ethertype)
-
- c_src_mac = '11:11:11:11:11:11'
- c_dst_mac = 'aa:aa:aa:aa:aa:aa'
- c_ethertype = ether.ETH_TYPE_8021AD
- e2 = ethernet.ethernet(c_dst_mac, c_src_mac, c_ethertype)
-
- s_pcp = 0
- s_cfi = 0
- s_vid = 32
- s_ethertype = ether.ETH_TYPE_8021Q
- st = vlan.svlan(s_pcp, s_cfi, s_vid, s_ethertype)
-
- c_pcp = 0
- c_cfi = 0
- c_vid = 32
- c_ethertype = ether.ETH_TYPE_IP
- ct = vlan.vlan(c_pcp, c_cfi, c_vid, c_ethertype)
-
- version = 4
- header_length = 20
- tos = 0
- total_length = 24
- identification = 0x8a5d
- flags = 0
- offset = 1480
- ttl = 64
- proto = inet.IPPROTO_ICMP
- csum = 0xa7f2
- src = '131.151.32.21'
- dst = '131.151.32.129'
- option = b'TEST'
- ip = ipv4.ipv4(version, header_length, tos, total_length,
- identification, flags, offset, ttl, proto, csum,
- src, dst, option)
-
- p = packet.Packet()
-
- p.add_protocol(e1)
- p.add_protocol(bt)
- p.add_protocol(self.it)
- p.add_protocol(e2)
- p.add_protocol(st)
- p.add_protocol(ct)
- p.add_protocol(ip)
- p.serialize()
-
- return p
-
- def test_build_itag(self):
- p = self._build_itag()
-
- e = p.get_protocols(ethernet.ethernet)
- ok_(e)
- ok_(isinstance(e, list))
- eq_(e[0].ethertype, ether.ETH_TYPE_8021AD)
- eq_(e[1].ethertype, ether.ETH_TYPE_8021AD)
-
- sv = p.get_protocols(vlan.svlan)
- ok_(sv)
- ok_(isinstance(sv, list))
- eq_(sv[0].ethertype, ether.ETH_TYPE_8021Q)
- eq_(sv[1].ethertype, ether.ETH_TYPE_8021Q)
-
- it = p.get_protocol(pbb.itag)
- ok_(it)
-
- v = p.get_protocol(vlan.vlan)
- ok_(v)
- eq_(v.ethertype, ether.ETH_TYPE_IP)
-
- ip = p.get_protocol(ipv4.ipv4)
- ok_(ip)
-
- eq_(it.pcp, self.pcp)
- eq_(it.dei, self.dei)
- eq_(it.uca, self.uca)
- eq_(it.sid, self.sid)
-
- @raises(Exception)
- def test_malformed_itag(self):
- m_short_buf = self.buf[1:pbb.itag._MIN_LEN]
- pbb.itag.parser(m_short_buf)
-
- def test_json(self):
- jsondict = self.it.to_jsondict()
- it = pbb.itag.from_jsondict(jsondict['itag'])
- eq_(str(self.it), str(it))
diff --git a/tests/unit/packet/test_sctp.py b/tests/unit/packet/test_sctp.py
deleted file mode 100644
index d7afb7cc..00000000
--- a/tests/unit/packet/test_sctp.py
+++ /dev/null
@@ -1,1454 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import inspect
-import logging
-import six
-import struct
-import unittest
-
-from nose.tools import eq_
-from nose.tools import ok_
-from ryu.lib import addrconv
-from ryu.lib.packet import packet
-from ryu.lib.packet import ethernet
-from ryu.lib.packet import ipv4
-from ryu.lib.packet import sctp
-from ryu.ofproto import ether
-from ryu.ofproto import inet
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_sctp(unittest.TestCase):
-
- def setUp(self):
- self.chunks = []
- self.csum = 0
- self.dst_port = 1234
- self.src_port = 5678
- self.vtag = 98765432
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf = b'\x16\x2e\x04\xd2\x05\xe3\x0a\x78\x00\x00\x00\x00'
-
- def setUp_with_data(self):
- self.unordered = 1
- self.begin = 1
- self.end = 1
- self.length = 16 + 10
- self.tsn = 12345
- self.sid = 1
- self.seq = 0
- self.payload_id = 0
- self.payload_data = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a'
-
- self.data = sctp.chunk_data(
- unordered=self.unordered, begin=self.begin, end=self.end,
- tsn=self.tsn, sid=self.sid, payload_data=self.payload_data)
-
- self.chunks = [self.data]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x00\x07\x00\x1a\x00\x00\x30\x39\x00\x01\x00\x00' + \
- b'\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a'
-
- def setUp_with_init(self):
- self.flags = 0
- self.length = 20 + 8 + 20 + 8 + 4 + 16 + 16
- self.init_tag = 123456
- self.a_rwnd = 9876
- self.os = 3
- self.mis = 3
- self.i_tsn = 123456
-
- self.p_ipv4 = sctp.param_ipv4('192.168.1.1')
- self.p_ipv6 = sctp.param_ipv6('fe80::647e:1aff:fec4:8284')
- self.p_cookie_preserve = sctp.param_cookie_preserve(5000)
- self.p_ecn = sctp.param_ecn()
- self.p_host_addr = sctp.param_host_addr(b'test host\x00')
- self.p_support_type = sctp.param_supported_addr(
- [sctp.PTYPE_IPV4, sctp.PTYPE_IPV6, sctp.PTYPE_COOKIE_PRESERVE,
- sctp.PTYPE_ECN, sctp.PTYPE_HOST_ADDR])
- self.params = [
- self.p_ipv4, self.p_ipv6, self.p_cookie_preserve,
- self.p_ecn, self.p_host_addr, self.p_support_type]
-
- self.init = sctp.chunk_init(
- init_tag=self.init_tag, a_rwnd=self.a_rwnd, os=self.os,
- mis=self.mis, i_tsn=self.i_tsn, params=self.params)
-
- self.chunks = [self.init]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x01\x00\x00\x5c\x00\x01\xe2\x40\x00\x00\x26\x94' + \
- b'\x00\x03\x00\x03\x00\x01\xe2\x40' + \
- b'\x00\x05\x00\x08\xc0\xa8\x01\x01' + \
- b'\x00\x06\x00\x14' + \
- b'\xfe\x80\x00\x00\x00\x00\x00\x00' + \
- b'\x64\x7e\x1a\xff\xfe\xc4\x82\x84' + \
- b'\x00\x09\x00\x08\x00\x00\x13\x88' + \
- b'\x80\x00\x00\x04' + \
- b'\x00\x0b\x00\x0e' + \
- b'\x74\x65\x73\x74\x20\x68\x6f\x73\x74\x00\x00\x00' + \
- b'\x00\x0c\x00\x0e\x00\x05\x00\x06\x00\x09\x80\x00' + \
- b'\x00\x0b\x00\x00'
-
- def setUp_with_init_ack(self):
- self.flags = 0
- self.length = 20 + 8 + 8 + 20 + 8 + 4 + 16
- self.init_tag = 123456
- self.a_rwnd = 9876
- self.os = 3
- self.mis = 3
- self.i_tsn = 123456
-
- self.p_state_cookie = sctp.param_state_cookie(b'\x01\x02\x03')
- self.p_ipv4 = sctp.param_ipv4('192.168.1.1')
- self.p_ipv6 = sctp.param_ipv6('fe80::647e:1aff:fec4:8284')
- self.p_unrecognized_param = sctp.param_unrecognized_param(
- b'\xff\xff\x00\x04')
- self.p_ecn = sctp.param_ecn()
- self.p_host_addr = sctp.param_host_addr(b'test host\x00')
- self.params = [
- self.p_state_cookie, self.p_ipv4, self.p_ipv6,
- self.p_unrecognized_param, self.p_ecn, self.p_host_addr]
-
- self.init_ack = sctp.chunk_init_ack(
- init_tag=self.init_tag, a_rwnd=self.a_rwnd, os=self.os,
- mis=self.mis, i_tsn=self.i_tsn, params=self.params)
-
- self.chunks = [self.init_ack]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x02\x00\x00\x54\x00\x01\xe2\x40\x00\x00\x26\x94' + \
- b'\x00\x03\x00\x03\x00\x01\xe2\x40' + \
- b'\x00\x07\x00\x07\x01\x02\x03\x00' + \
- b'\x00\x05\x00\x08\xc0\xa8\x01\x01' + \
- b'\x00\x06\x00\x14' + \
- b'\xfe\x80\x00\x00\x00\x00\x00\x00' + \
- b'\x64\x7e\x1a\xff\xfe\xc4\x82\x84' + \
- b'\x00\x08\x00\x08\xff\xff\x00\x04' + \
- b'\x80\x00\x00\x04' + \
- b'\x00\x0b\x00\x0e' + \
- b'\x74\x65\x73\x74\x20\x68\x6f\x73\x74\x00\x00\x00'
-
- def setUp_with_sack(self):
- self.flags = 0
- self.length = 16 + 2 * 2 * 5 + 4 * 5
- self.tsn_ack = 123456
- self.a_rwnd = 9876
- self.gapack_num = 5
- self.duptsn_num = 5
- self.gapacks = [[2, 3], [10, 12], [20, 24], [51, 52], [62, 63]]
- self.duptsns = [123458, 123466, 123476, 123507, 123518]
-
- self.sack = sctp.chunk_sack(
- tsn_ack=self.tsn_ack, a_rwnd=self.a_rwnd,
- gapack_num=self.gapack_num, duptsn_num=self.duptsn_num,
- gapacks=self.gapacks, duptsns=self.duptsns)
-
- self.chunks = [self.sack]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x03\x00\x00\x38\x00\x01\xe2\x40' + \
- b'\x00\x00\x26\x94\x00\x05\x00\x05' + \
- b'\x00\x02\x00\x03\x00\x0a\x00\x0c\x00\x14\x00\x18' + \
- b'\x00\x33\x00\x34\x00\x3e\x00\x3f' + \
- b'\x00\x01\xe2\x42\x00\x01\xe2\x4a\x00\x01\xe2\x54' + \
- b'\x00\x01\xe2\x73\x00\x01\xe2\x7e'
-
- def setUp_with_heartbeat(self):
- self.flags = 0
- self.length = 4 + 8
-
- self.p_heartbeat = sctp.param_heartbeat(b'\x01\x02\x03\x04')
-
- self.heartbeat = sctp.chunk_heartbeat(info=self.p_heartbeat)
-
- self.chunks = [self.heartbeat]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x04\x00\x00\x0c' + \
- b'\x00\x01\x00\x08' + \
- b'\x01\x02\x03\x04'
-
- def setUp_with_heartbeat_ack(self):
- self.flags = 0
- self.length = 4 + 12
-
- self.p_heartbeat = sctp.param_heartbeat(
- b'\xff\xee\xdd\xcc\xbb\xaa\x99\x88')
-
- self.heartbeat_ack = sctp.chunk_heartbeat_ack(info=self.p_heartbeat)
-
- self.chunks = [self.heartbeat_ack]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x05\x00\x00\x10' + \
- b'\x00\x01\x00\x0c' + \
- b'\xff\xee\xdd\xcc\xbb\xaa\x99\x88'
-
- def setUp_with_abort(self):
- self.tflag = 0
- self.length = 4 + 8 + 16 + 8 + 4 + 20 + 8 + 4 + 8 + 8 + 4 + 12 \
- + 20 + 20
-
- self.c_invalid_stream_id = sctp.cause_invalid_stream_id(4096)
- self.c_missing_param = sctp.cause_missing_param(
- [sctp.PTYPE_IPV4, sctp.PTYPE_IPV6,
- sctp.PTYPE_COOKIE_PRESERVE, sctp.PTYPE_HOST_ADDR])
- self.c_stale_cookie = sctp.cause_stale_cookie(b'\x00\x00\x13\x88')
- self.c_out_of_resource = sctp.cause_out_of_resource()
- self.c_unresolvable_addr = sctp.cause_unresolvable_addr(
- sctp.param_host_addr(b'test host\x00'))
- self.c_unrecognized_chunk = sctp.cause_unrecognized_chunk(
- b'\xff\x00\x00\x04')
- self.c_invalid_param = sctp.cause_invalid_param()
- self.c_unrecognized_param = sctp.cause_unrecognized_param(
- b'\xff\xff\x00\x04')
- self.c_no_userdata = sctp.cause_no_userdata(b'\x00\x01\xe2\x40')
- self.c_cookie_while_shutdown = sctp.cause_cookie_while_shutdown()
- self.c_restart_with_new_addr = sctp.cause_restart_with_new_addr(
- sctp.param_ipv4('192.168.1.1'))
- self.c_user_initiated_abort = sctp.cause_user_initiated_abort(
- b'Key Interrupt.\x00')
- self.c_protocol_violation = sctp.cause_protocol_violation(
- b'Unknown reason.\x00')
-
- self.causes = [
- self.c_invalid_stream_id, self.c_missing_param,
- self.c_stale_cookie, self.c_out_of_resource,
- self.c_unresolvable_addr, self.c_unrecognized_chunk,
- self.c_invalid_param, self.c_unrecognized_param,
- self.c_no_userdata, self.c_cookie_while_shutdown,
- self.c_restart_with_new_addr, self.c_user_initiated_abort,
- self.c_protocol_violation]
-
- self.abort = sctp.chunk_abort(causes=self.causes)
-
- self.chunks = [self.abort]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x06\x00\x00\x90' + \
- b'\x00\x01\x00\x08\x10\x00\x00\x00' + \
- b'\x00\x02\x00\x10\x00\x00\x00\x04' + \
- b'\x00\x05\x00\x06\x00\x09\x00\x0b' + \
- b'\x00\x03\x00\x08\x00\x00\x13\x88' + \
- b'\x00\x04\x00\x04' + \
- b'\x00\x05\x00\x14' + \
- b'\x00\x0b\x00\x0e' + \
- b'\x74\x65\x73\x74\x20\x68\x6f\x73\x74\x00\x00\x00' + \
- b'\x00\x06\x00\x08\xff\x00\x00\x04' + \
- b'\x00\x07\x00\x04' + \
- b'\x00\x08\x00\x08\xff\xff\x00\x04' + \
- b'\x00\x09\x00\x08\x00\x01\xe2\x40' + \
- b'\x00\x0a\x00\x04' + \
- b'\x00\x0b\x00\x0c' + \
- b'\x00\x05\x00\x08\xc0\xa8\x01\x01' + \
- b'\x00\x0c\x00\x13' + \
- b'\x4b\x65\x79\x20\x49\x6e\x74\x65' + \
- b'\x72\x72\x75\x70\x74\x2e\x00\x00' + \
- b'\x00\x0d\x00\x14' + \
- b'\x55\x6e\x6b\x6e\x6f\x77\x6e\x20' + \
- b'\x72\x65\x61\x73\x6f\x6e\x2e\x00'
-
- def setUp_with_shutdown(self):
- self.flags = 0
- self.length = 8
- self.tsn_ack = 123456
-
- self.shutdown = sctp.chunk_shutdown(tsn_ack=self.tsn_ack)
-
- self.chunks = [self.shutdown]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x07\x00\x00\x08\x00\x01\xe2\x40'
-
- def setUp_with_shutdown_ack(self):
- self.flags = 0
- self.length = 4
-
- self.shutdown_ack = sctp.chunk_shutdown_ack()
-
- self.chunks = [self.shutdown_ack]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x08\x00\x00\x04'
-
- def setUp_with_error(self):
- self.flags = 0
- self.length = 4 + 8 + 16 + 8 + 4 + 20 + 8 + 4 + 8 + 8 + 4 + 12 \
- + 20 + 20
-
- self.c_invalid_stream_id = sctp.cause_invalid_stream_id(4096)
- self.c_missing_param = sctp.cause_missing_param(
- [sctp.PTYPE_IPV4, sctp.PTYPE_IPV6,
- sctp.PTYPE_COOKIE_PRESERVE, sctp.PTYPE_HOST_ADDR])
- self.c_stale_cookie = sctp.cause_stale_cookie(b'\x00\x00\x13\x88')
- self.c_out_of_resource = sctp.cause_out_of_resource()
- self.c_unresolvable_addr = sctp.cause_unresolvable_addr(
- sctp.param_host_addr(b'test host\x00'))
- self.c_unrecognized_chunk = sctp.cause_unrecognized_chunk(
- b'\xff\x00\x00\x04')
- self.c_invalid_param = sctp.cause_invalid_param()
- self.c_unrecognized_param = sctp.cause_unrecognized_param(
- b'\xff\xff\x00\x04')
- self.c_no_userdata = sctp.cause_no_userdata(b'\x00\x01\xe2\x40')
- self.c_cookie_while_shutdown = sctp.cause_cookie_while_shutdown()
- self.c_restart_with_new_addr = sctp.cause_restart_with_new_addr(
- sctp.param_ipv4('192.168.1.1'))
- self.c_user_initiated_abort = sctp.cause_user_initiated_abort(
- b'Key Interrupt.\x00')
- self.c_protocol_violation = sctp.cause_protocol_violation(
- b'Unknown reason.\x00')
-
- self.causes = [
- self.c_invalid_stream_id, self.c_missing_param,
- self.c_stale_cookie, self.c_out_of_resource,
- self.c_unresolvable_addr, self.c_unrecognized_chunk,
- self.c_invalid_param, self.c_unrecognized_param,
- self.c_no_userdata, self.c_cookie_while_shutdown,
- self.c_restart_with_new_addr, self.c_user_initiated_abort,
- self.c_protocol_violation]
-
- self.error = sctp.chunk_error(causes=self.causes)
-
- self.chunks = [self.error]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x09\x00\x00\x90' + \
- b'\x00\x01\x00\x08\x10\x00\x00\x00' + \
- b'\x00\x02\x00\x10\x00\x00\x00\x04' + \
- b'\x00\x05\x00\x06\x00\x09\x00\x0b' + \
- b'\x00\x03\x00\x08\x00\x00\x13\x88' + \
- b'\x00\x04\x00\x04' + \
- b'\x00\x05\x00\x14' + \
- b'\x00\x0b\x00\x0e' + \
- b'\x74\x65\x73\x74\x20\x68\x6f\x73\x74\x00\x00\x00' + \
- b'\x00\x06\x00\x08\xff\x00\x00\x04' + \
- b'\x00\x07\x00\x04' + \
- b'\x00\x08\x00\x08\xff\xff\x00\x04' + \
- b'\x00\x09\x00\x08\x00\x01\xe2\x40' + \
- b'\x00\x0a\x00\x04' + \
- b'\x00\x0b\x00\x0c' + \
- b'\x00\x05\x00\x08\xc0\xa8\x01\x01' + \
- b'\x00\x0c\x00\x13' + \
- b'\x4b\x65\x79\x20\x49\x6e\x74\x65' + \
- b'\x72\x72\x75\x70\x74\x2e\x00\x00' + \
- b'\x00\x0d\x00\x14' + \
- b'\x55\x6e\x6b\x6e\x6f\x77\x6e\x20' + \
- b'\x72\x65\x61\x73\x6f\x6e\x2e\x00'
-
- def setUp_with_cookie_echo(self):
- self.flags = 0
- self.length = 8
- self.cookie = b'\x12\x34\x56\x78'
-
- self.cookie_echo = sctp.chunk_cookie_echo(cookie=self.cookie)
-
- self.chunks = [self.cookie_echo]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x0a\x00\x00\x08\x12\x34\x56\x78'
-
- def setUp_with_cookie_ack(self):
- self.flags = 0
- self.length = 4
-
- self.cookie_ack = sctp.chunk_cookie_ack()
-
- self.chunks = [self.cookie_ack]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x0b\x00\x00\x04'
-
- def setUp_with_ecn_echo(self):
- self.flags = 0
- self.length = 8
- self.low_tsn = 123456
-
- self.ecn_echo = sctp.chunk_ecn_echo(low_tsn=self.low_tsn)
-
- self.chunks = [self.ecn_echo]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x0c\x00\x00\x08\x00\x01\xe2\x40'
-
- def setUp_with_cwr(self):
- self.flags = 0
- self.length = 8
- self.low_tsn = 123456
-
- self.cwr = sctp.chunk_cwr(low_tsn=self.low_tsn)
-
- self.chunks = [self.cwr]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x0d\x00\x00\x08\x00\x01\xe2\x40'
-
- def setUp_with_shutdown_complete(self):
- self.tflag = 0
- self.length = 4
-
- self.shutdown_complete = sctp.chunk_shutdown_complete()
-
- self.chunks = [self.shutdown_complete]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x0e\x00\x00\x04'
-
- def setUp_with_multi_chunks(self):
- self.s_flags = 0
- self.s_length = 16
- self.s_tsn_ack = 123456
- self.s_a_rwnd = 9876
- self.s_gapack_num = 0
- self.s_duptsn_num = 0
- self.s_gapacks = None
- self.s_duptsns = None
-
- self.sack = sctp.chunk_sack(
- tsn_ack=self.s_tsn_ack, a_rwnd=self.s_a_rwnd)
-
- self.d1_unordered = 0
- self.d1_begin = 1
- self.d1_end = 0
- self.d1_length = 16 + 10
- self.d1_tsn = 12345
- self.d1_sid = 1
- self.d1_seq = 0
- self.d1_payload_id = 0
- self.d1_payload_data = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a'
-
- self.data1 = sctp.chunk_data(
- begin=self.d1_begin, tsn=self.d1_tsn, sid=self.d1_sid,
- payload_data=self.d1_payload_data)
-
- self.d2_unordered = 0
- self.d2_begin = 0
- self.d2_end = 1
- self.d2_length = 16 + 10
- self.d2_tsn = 12346
- self.d2_sid = 1
- self.d2_seq = 1
- self.d2_payload_id = 0
- self.d2_payload_data = b'\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a'
-
- self.data2 = sctp.chunk_data(
- end=self.d2_end, tsn=self.d2_tsn, sid=self.d2_sid,
- seq=self.d2_seq, payload_data=self.d2_payload_data)
-
- self.chunks = [self.sack, self.data1, self.data2]
-
- self.sc = sctp.sctp(
- self.src_port, self.dst_port, self.vtag, self.csum,
- self.chunks)
-
- self.buf += b'\x03\x00\x00\x10\x00\x01\xe2\x40' + \
- b'\x00\x00\x26\x94\x00\x00\x00\x00' + \
- b'\x00\x02\x00\x1a\x00\x00\x30\x39\x00\x01\x00\x00' + \
- b'\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a' + \
- b'\x00\x01\x00\x1a\x00\x00\x30\x3a\x00\x01\x00\x01' + \
- b'\x00\x00\x00\x00\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a'
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.src_port, self.sc.src_port)
- eq_(self.dst_port, self.sc.dst_port)
- eq_(self.vtag, self.sc.vtag)
- eq_(self.csum, self.sc.csum)
- eq_(self.chunks, self.sc.chunks)
-
- def test_init_with_data(self):
- self.setUp_with_data()
- self.test_init()
-
- def test_init_with_init(self):
- self.setUp_with_init()
- self.test_init()
-
- def test_init_with_init_ack(self):
- self.setUp_with_init_ack()
- self.test_init()
-
- def test_init_with_sack(self):
- self.setUp_with_sack()
- self.test_init()
-
- def test_init_with_heartbeat(self):
- self.setUp_with_heartbeat()
- self.test_init()
-
- def test_init_with_heartbeat_ack(self):
- self.setUp_with_heartbeat_ack()
- self.test_init()
-
- def test_init_with_abort(self):
- self.setUp_with_abort()
- self.test_init()
-
- def test_init_with_shutdown(self):
- self.setUp_with_shutdown()
- self.test_init()
-
- def test_init_with_shutdown_ack(self):
- self.setUp_with_shutdown_ack()
- self.test_init()
-
- def test_init_with_error(self):
- self.setUp_with_error()
- self.test_init()
-
- def test_init_with_cookie_echo(self):
- self.setUp_with_cookie_echo()
- self.test_init()
-
- def test_init_with_cookie_ack(self):
- self.setUp_with_cookie_ack()
- self.test_init()
-
- def test_init_with_ecn_echo(self):
- self.setUp_with_ecn_echo()
- self.test_init()
-
- def test_init_with_cwr(self):
- self.setUp_with_cwr()
- self.test_init()
-
- def test_init_with_shutdown_complete(self):
- self.setUp_with_shutdown_complete()
- self.test_init()
-
- def test_init_with_multi_chunks(self):
- self.setUp_with_multi_chunks()
- self.test_init()
-
- def test_parser(self):
- _res = self.sc.parser(six.binary_type(self.buf))
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
- # to calculate the lengths of parameters.
- self.sc.serialize(None, None)
-
- eq_(self.src_port, res.src_port)
- eq_(self.dst_port, res.dst_port)
- eq_(self.vtag, res.vtag)
- eq_(self.csum, res.csum)
- eq_(str(self.chunks), str(res.chunks))
-
- def test_parser_with_data(self):
- self.setUp_with_data()
- self.test_parser()
-
- def test_parser_with_init(self):
- self.setUp_with_init()
- self.test_parser()
-
- def test_parser_with_init_ack(self):
- self.setUp_with_init_ack()
- self.test_parser()
-
- def test_parser_with_sack(self):
- self.setUp_with_sack()
- self.test_parser()
-
- def test_parser_with_heartbeat(self):
- self.setUp_with_heartbeat()
- self.test_parser()
-
- def test_parser_with_heartbeat_ack(self):
- self.setUp_with_heartbeat_ack()
- self.test_parser()
-
- def test_parser_with_abort(self):
- self.setUp_with_abort()
- self.test_parser()
-
- def test_parser_with_shutdown(self):
- self.setUp_with_shutdown()
- self.test_parser()
-
- def test_parser_with_shutdown_ack(self):
- self.setUp_with_shutdown_ack()
- self.test_parser()
-
- def test_parser_with_error(self):
- self.setUp_with_error()
- self.test_parser()
-
- def test_parser_with_cookie_echo(self):
- self.setUp_with_cookie_echo()
- self.test_parser()
-
- def test_parser_with_cookie_ack(self):
- self.setUp_with_cookie_ack()
- self.test_parser()
-
- def test_parser_with_ecn_echo(self):
- self.setUp_with_ecn_echo()
- self.test_parser()
-
- def test_parser_with_cwr(self):
- self.setUp_with_cwr()
- self.test_parser()
-
- def test_parser_with_shutdown_complete(self):
- self.setUp_with_shutdown_complete()
- self.test_parser()
-
- def test_parser_with_multi_chunks(self):
- self.setUp_with_multi_chunks()
- self.test_parser()
-
- def _test_serialize(self):
- buf = self.sc.serialize(bytearray(), None)
- res = struct.unpack_from(sctp.sctp._PACK_STR, buf)
- eq_(self.src_port, res[0])
- eq_(self.dst_port, res[1])
- eq_(self.vtag, res[2])
- # skip compare checksum
- # eq_(self.csum, res[3])
-
- return buf[sctp.sctp._MIN_LEN:]
-
- def test_serialize(self):
- self._test_serialize()
-
- def test_serialize_with_data(self):
- self.setUp_with_data()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_data._PACK_STR, buf)
- eq_(sctp.chunk_data.chunk_type(), res[0])
- flags = (
- (self.unordered << 2) |
- (self.begin << 1) |
- (self.end << 0))
- eq_(flags, res[1])
- eq_(self.length, res[2])
- eq_(self.tsn, res[3])
- eq_(self.sid, res[4])
- eq_(self.seq, res[5])
- eq_(self.payload_id, res[6])
- eq_(self.payload_data, buf[sctp.chunk_data._MIN_LEN:])
-
- def test_serialize_with_init(self):
- self.setUp_with_init()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_init._PACK_STR, buf)
- eq_(sctp.chunk_init.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
- eq_(self.init_tag, res[3])
- eq_(self.a_rwnd, res[4])
- eq_(self.os, res[5])
- eq_(self.mis, res[6])
- eq_(self.i_tsn, res[7])
-
- buf = buf[sctp.chunk_init._MIN_LEN:]
- res1 = struct.unpack_from(sctp.param_ipv4._PACK_STR, buf)
- eq_(sctp.param_ipv4.param_type(), res1[0])
- eq_(8, res1[1])
- eq_('192.168.1.1', addrconv.ipv4.bin_to_text(
- buf[sctp.param_ipv4._MIN_LEN:sctp.param_ipv4._MIN_LEN + 4]))
-
- buf = buf[8:]
- res2 = struct.unpack_from(sctp.param_ipv6._PACK_STR, buf)
- eq_(sctp.param_ipv6.param_type(), res2[0])
- eq_(20, res2[1])
- eq_('fe80::647e:1aff:fec4:8284', addrconv.ipv6.bin_to_text(
- buf[sctp.param_ipv6._MIN_LEN:sctp.param_ipv6._MIN_LEN + 16]))
-
- buf = buf[20:]
- res3 = struct.unpack_from(sctp.param_cookie_preserve._PACK_STR,
- buf)
- eq_(sctp.param_cookie_preserve.param_type(), res3[0])
- eq_(8, res3[1])
- eq_(5000, res3[2])
-
- buf = buf[8:]
- res4 = struct.unpack_from(sctp.param_ecn._PACK_STR, buf)
- eq_(sctp.param_ecn.param_type(), res4[0])
- eq_(4, res4[1])
-
- buf = buf[4:]
- res5 = struct.unpack_from(sctp.param_host_addr._PACK_STR, buf)
- eq_(sctp.param_host_addr.param_type(), res5[0])
- eq_(14, res5[1])
- eq_(b'test host\x00',
- buf[sctp.param_host_addr._MIN_LEN:
- sctp.param_host_addr._MIN_LEN + 10])
-
- buf = buf[16:]
- res6 = struct.unpack_from(sctp.param_supported_addr._PACK_STR, buf)
- res6 = list(res6)
- eq_(sctp.param_supported_addr.param_type(), res6[0])
- eq_(14, res6[1])
- buf = buf[sctp.param_supported_addr._MIN_LEN:]
- offset = 0
- tmplist = []
- while offset < len(buf):
- (tmp, ) = struct.unpack_from('!H', buf, offset)
- tmplist.append(tmp)
- offset += struct.calcsize('!H')
- res6.extend(tmplist)
- eq_(sctp.PTYPE_IPV4, res6[2])
- eq_(sctp.PTYPE_IPV6, res6[3])
- eq_(sctp.PTYPE_COOKIE_PRESERVE, res6[4])
- eq_(sctp.PTYPE_ECN, res6[5])
- eq_(sctp.PTYPE_HOST_ADDR, res6[6])
-
- def test_serialize_with_init_ack(self):
- self.setUp_with_init_ack()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_init_ack._PACK_STR, buf)
- eq_(sctp.chunk_init_ack.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
- eq_(self.init_tag, res[3])
- eq_(self.a_rwnd, res[4])
- eq_(self.os, res[5])
- eq_(self.mis, res[6])
- eq_(self.i_tsn, res[7])
-
- buf = buf[sctp.chunk_init_ack._MIN_LEN:]
- res1 = struct.unpack_from(sctp.param_state_cookie._PACK_STR, buf)
- eq_(sctp.param_state_cookie.param_type(), res1[0])
- eq_(7, res1[1])
- eq_(b'\x01\x02\x03',
- buf[sctp.param_state_cookie._MIN_LEN:
- sctp.param_state_cookie._MIN_LEN + 3])
-
- buf = buf[8:]
- res2 = struct.unpack_from(sctp.param_ipv4._PACK_STR, buf)
- eq_(sctp.param_ipv4.param_type(), res2[0])
- eq_(8, res2[1])
- eq_('192.168.1.1', addrconv.ipv4.bin_to_text(
- buf[sctp.param_ipv4._MIN_LEN:sctp.param_ipv4._MIN_LEN + 4]))
-
- buf = buf[8:]
- res3 = struct.unpack_from(sctp.param_ipv6._PACK_STR, buf)
- eq_(sctp.param_ipv6.param_type(), res3[0])
- eq_(20, res3[1])
- eq_('fe80::647e:1aff:fec4:8284', addrconv.ipv6.bin_to_text(
- buf[sctp.param_ipv6._MIN_LEN:sctp.param_ipv6._MIN_LEN + 16]))
-
- buf = buf[20:]
- res4 = struct.unpack_from(
- sctp.param_unrecognized_param._PACK_STR, buf)
- eq_(sctp.param_unrecognized_param.param_type(), res4[0])
- eq_(8, res4[1])
- eq_(b'\xff\xff\x00\x04',
- buf[sctp.param_unrecognized_param._MIN_LEN:
- sctp.param_unrecognized_param._MIN_LEN + 4])
-
- buf = buf[8:]
- res5 = struct.unpack_from(sctp.param_ecn._PACK_STR, buf)
- eq_(sctp.param_ecn.param_type(), res5[0])
- eq_(4, res5[1])
-
- buf = buf[4:]
- res6 = struct.unpack_from(sctp.param_host_addr._PACK_STR, buf)
- eq_(sctp.param_host_addr.param_type(), res6[0])
- eq_(14, res6[1])
- eq_(b'test host\x00',
- buf[sctp.param_host_addr._MIN_LEN:
- sctp.param_host_addr._MIN_LEN + 10])
-
- def test_serialize_with_sack(self):
- self.setUp_with_sack()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_sack._PACK_STR, buf)
- eq_(sctp.chunk_sack.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
- eq_(self.tsn_ack, res[3])
- eq_(self.a_rwnd, res[4])
- eq_(self.gapack_num, res[5])
- eq_(self.duptsn_num, res[6])
-
- buf = buf[sctp.chunk_sack._MIN_LEN:]
- gapacks = []
- for _ in range(self.gapack_num):
- (gap_s, gap_e) = struct.unpack_from(
- sctp.chunk_sack._GAPACK_STR, buf)
- one = [gap_s, gap_e]
- gapacks.append(one)
- buf = buf[sctp.chunk_sack._GAPACK_LEN:]
- duptsns = []
- for _ in range(self.duptsn_num):
- (duptsn, ) = struct.unpack_from(
- sctp.chunk_sack._DUPTSN_STR, buf)
- duptsns.append(duptsn)
- buf = buf[sctp.chunk_sack._DUPTSN_LEN:]
- eq_(self.gapacks, gapacks)
- eq_(self.duptsns, duptsns)
-
- def test_serialize_with_heartbeat(self):
- self.setUp_with_heartbeat()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_heartbeat._PACK_STR, buf)
- eq_(sctp.chunk_heartbeat.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
-
- buf = buf[sctp.chunk_heartbeat._MIN_LEN:]
- res1 = struct.unpack_from(sctp.param_heartbeat._PACK_STR, buf)
- eq_(sctp.param_heartbeat.param_type(), res1[0])
- eq_(8, res1[1])
- eq_(b'\x01\x02\x03\x04',
- buf[sctp.param_heartbeat._MIN_LEN:
- sctp.param_heartbeat._MIN_LEN + 4])
-
- def test_serialize_with_heartbeat_ack(self):
- self.setUp_with_heartbeat_ack()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_heartbeat_ack._PACK_STR, buf)
- eq_(sctp.chunk_heartbeat_ack.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
-
- buf = buf[sctp.chunk_heartbeat_ack._MIN_LEN:]
- res1 = struct.unpack_from(sctp.param_heartbeat._PACK_STR, buf)
- eq_(sctp.param_heartbeat.param_type(), res1[0])
- eq_(12, res1[1])
- eq_(b'\xff\xee\xdd\xcc\xbb\xaa\x99\x88',
- buf[sctp.param_heartbeat._MIN_LEN:
- sctp.param_heartbeat._MIN_LEN + 8])
-
- def test_serialize_with_abort(self):
- self.setUp_with_abort()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_abort._PACK_STR, buf)
- eq_(sctp.chunk_abort.chunk_type(), res[0])
- flags = self.tflag << 0
- eq_(flags, res[1])
- eq_(self.length, res[2])
-
- buf = buf[sctp.chunk_abort._MIN_LEN:]
- res1 = struct.unpack_from(sctp.cause_invalid_stream_id._PACK_STR, buf)
- eq_(sctp.cause_invalid_stream_id.cause_code(), res1[0])
- eq_(8, res1[1])
- eq_(4096, res1[2])
-
- buf = buf[8:]
- res2 = struct.unpack_from(sctp.cause_missing_param._PACK_STR, buf)
- eq_(sctp.cause_missing_param.cause_code(), res2[0])
- eq_(16, res2[1])
- eq_(4, res2[2])
- types = []
- for count in range(4):
- (tmp, ) = struct.unpack_from(
- '!H', buf, sctp.cause_missing_param._MIN_LEN + 2 * count)
- types.append(tmp)
- eq_(str([sctp.PTYPE_IPV4, sctp.PTYPE_IPV6,
- sctp.PTYPE_COOKIE_PRESERVE, sctp.PTYPE_HOST_ADDR]),
- str(types))
-
- buf = buf[16:]
- res3 = struct.unpack_from(sctp.cause_stale_cookie._PACK_STR, buf)
- eq_(sctp.cause_stale_cookie.cause_code(), res3[0])
- eq_(8, res3[1])
- eq_(b'\x00\x00\x13\x88',
- buf[sctp.cause_stale_cookie._MIN_LEN:
- sctp.cause_stale_cookie._MIN_LEN + 4])
-
- buf = buf[8:]
- res4 = struct.unpack_from(sctp.cause_out_of_resource._PACK_STR, buf)
- eq_(sctp.cause_out_of_resource.cause_code(), res4[0])
- eq_(4, res4[1])
-
- buf = buf[4:]
- res5 = struct.unpack_from(
- sctp.cause_unresolvable_addr._PACK_STR, buf)
- eq_(sctp.cause_unresolvable_addr.cause_code(), res5[0])
- eq_(20, res5[1])
- eq_(b'\x00\x0b\x00\x0e\x74\x65\x73\x74' +
- b'\x20\x68\x6f\x73\x74\x00\x00\x00',
- buf[sctp.cause_unresolvable_addr._MIN_LEN:
- sctp.cause_unresolvable_addr._MIN_LEN + 16])
-
- buf = buf[20:]
- res6 = struct.unpack_from(
- sctp.cause_unrecognized_chunk._PACK_STR, buf)
- eq_(sctp.cause_unrecognized_chunk.cause_code(), res6[0])
- eq_(8, res6[1])
- eq_(b'\xff\x00\x00\x04',
- buf[sctp.cause_unrecognized_chunk._MIN_LEN:
- sctp.cause_unrecognized_chunk._MIN_LEN + 4])
-
- buf = buf[8:]
- res7 = struct.unpack_from(sctp.cause_invalid_param._PACK_STR, buf)
- eq_(sctp.cause_invalid_param.cause_code(), res7[0])
- eq_(4, res7[1])
-
- buf = buf[4:]
- res8 = struct.unpack_from(
- sctp.cause_unrecognized_param._PACK_STR, buf)
- eq_(sctp.cause_unrecognized_param.cause_code(), res8[0])
- eq_(8, res8[1])
- eq_(b'\xff\xff\x00\x04',
- buf[sctp.cause_unrecognized_param._MIN_LEN:
- sctp.cause_unrecognized_param._MIN_LEN + 4])
-
- buf = buf[8:]
- res9 = struct.unpack_from(sctp.cause_no_userdata._PACK_STR, buf)
- eq_(sctp.cause_no_userdata.cause_code(), res9[0])
- eq_(8, res9[1])
- eq_(b'\x00\x01\xe2\x40',
- buf[sctp.cause_no_userdata._MIN_LEN:
- sctp.cause_no_userdata._MIN_LEN + 4])
-
- buf = buf[8:]
- res10 = struct.unpack_from(
- sctp.cause_cookie_while_shutdown._PACK_STR, buf)
- eq_(sctp.cause_cookie_while_shutdown.cause_code(), res10[0])
- eq_(4, res10[1])
-
- buf = buf[4:]
- res11 = struct.unpack_from(
- sctp.cause_restart_with_new_addr._PACK_STR, buf)
- eq_(sctp.cause_restart_with_new_addr.cause_code(), res11[0])
- eq_(12, res11[1])
- eq_(b'\x00\x05\x00\x08\xc0\xa8\x01\x01',
- buf[sctp.cause_restart_with_new_addr._MIN_LEN:
- sctp.cause_restart_with_new_addr._MIN_LEN + 8])
-
- buf = buf[12:]
- res12 = struct.unpack_from(
- sctp.cause_user_initiated_abort._PACK_STR, buf)
- eq_(sctp.cause_user_initiated_abort.cause_code(), res12[0])
- eq_(19, res12[1])
- eq_(b'Key Interrupt.\x00',
- buf[sctp.cause_user_initiated_abort._MIN_LEN:
- sctp.cause_user_initiated_abort._MIN_LEN + 15])
-
- buf = buf[20:]
- res13 = struct.unpack_from(
- sctp.cause_protocol_violation._PACK_STR, buf)
- eq_(sctp.cause_protocol_violation.cause_code(), res13[0])
- eq_(20, res13[1])
- eq_(b'Unknown reason.\x00',
- buf[sctp.cause_protocol_violation._MIN_LEN:
- sctp.cause_protocol_violation._MIN_LEN + 16])
-
- def test_serialize_with_shutdown(self):
- self.setUp_with_shutdown()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_shutdown._PACK_STR, buf)
- eq_(sctp.chunk_shutdown.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
- eq_(self.tsn_ack, res[3])
-
- def test_serialize_with_shutdown_ack(self):
- self.setUp_with_shutdown_ack()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_shutdown_ack._PACK_STR, buf)
- eq_(sctp.chunk_shutdown_ack.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
-
- def test_serialize_with_error(self):
- self.setUp_with_error()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_error._PACK_STR, buf)
- eq_(sctp.chunk_error.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
-
- buf = buf[sctp.chunk_error._MIN_LEN:]
- res1 = struct.unpack_from(sctp.cause_invalid_stream_id._PACK_STR, buf)
- eq_(sctp.cause_invalid_stream_id.cause_code(), res1[0])
- eq_(8, res1[1])
- eq_(4096, res1[2])
-
- buf = buf[8:]
- res2 = struct.unpack_from(sctp.cause_missing_param._PACK_STR, buf)
- eq_(sctp.cause_missing_param.cause_code(), res2[0])
- eq_(16, res2[1])
- eq_(4, res2[2])
- types = []
- for count in range(4):
- (tmp, ) = struct.unpack_from(
- '!H', buf, sctp.cause_missing_param._MIN_LEN + 2 * count)
- types.append(tmp)
- eq_(str([sctp.PTYPE_IPV4, sctp.PTYPE_IPV6,
- sctp.PTYPE_COOKIE_PRESERVE, sctp.PTYPE_HOST_ADDR]),
- str(types))
-
- buf = buf[16:]
- res3 = struct.unpack_from(sctp.cause_stale_cookie._PACK_STR, buf)
- eq_(sctp.cause_stale_cookie.cause_code(), res3[0])
- eq_(8, res3[1])
- eq_(b'\x00\x00\x13\x88',
- buf[sctp.cause_stale_cookie._MIN_LEN:
- sctp.cause_stale_cookie._MIN_LEN + 4])
-
- buf = buf[8:]
- res4 = struct.unpack_from(sctp.cause_out_of_resource._PACK_STR, buf)
- eq_(sctp.cause_out_of_resource.cause_code(), res4[0])
- eq_(4, res4[1])
-
- buf = buf[4:]
- res5 = struct.unpack_from(
- sctp.cause_unresolvable_addr._PACK_STR, buf)
- eq_(sctp.cause_unresolvable_addr.cause_code(), res5[0])
- eq_(20, res5[1])
- eq_(b'\x00\x0b\x00\x0e\x74\x65\x73\x74' +
- b'\x20\x68\x6f\x73\x74\x00\x00\x00',
- buf[sctp.cause_unresolvable_addr._MIN_LEN:
- sctp.cause_unresolvable_addr._MIN_LEN + 16])
-
- buf = buf[20:]
- res6 = struct.unpack_from(
- sctp.cause_unrecognized_chunk._PACK_STR, buf)
- eq_(sctp.cause_unrecognized_chunk.cause_code(), res6[0])
- eq_(8, res6[1])
- eq_(b'\xff\x00\x00\x04',
- buf[sctp.cause_unrecognized_chunk._MIN_LEN:
- sctp.cause_unrecognized_chunk._MIN_LEN + 4])
-
- buf = buf[8:]
- res7 = struct.unpack_from(sctp.cause_invalid_param._PACK_STR, buf)
- eq_(sctp.cause_invalid_param.cause_code(), res7[0])
- eq_(4, res7[1])
-
- buf = buf[4:]
- res8 = struct.unpack_from(
- sctp.cause_unrecognized_param._PACK_STR, buf)
- eq_(sctp.cause_unrecognized_param.cause_code(), res8[0])
- eq_(8, res8[1])
- eq_(b'\xff\xff\x00\x04',
- buf[sctp.cause_unrecognized_param._MIN_LEN:
- sctp.cause_unrecognized_param._MIN_LEN + 4])
-
- buf = buf[8:]
- res9 = struct.unpack_from(sctp.cause_no_userdata._PACK_STR, buf)
- eq_(sctp.cause_no_userdata.cause_code(), res9[0])
- eq_(8, res9[1])
- eq_(b'\x00\x01\xe2\x40',
- buf[sctp.cause_no_userdata._MIN_LEN:
- sctp.cause_no_userdata._MIN_LEN + 4])
-
- buf = buf[8:]
- res10 = struct.unpack_from(
- sctp.cause_cookie_while_shutdown._PACK_STR, buf)
- eq_(sctp.cause_cookie_while_shutdown.cause_code(), res10[0])
- eq_(4, res10[1])
-
- buf = buf[4:]
- res11 = struct.unpack_from(
- sctp.cause_restart_with_new_addr._PACK_STR, buf)
- eq_(sctp.cause_restart_with_new_addr.cause_code(), res11[0])
- eq_(12, res11[1])
- eq_(b'\x00\x05\x00\x08\xc0\xa8\x01\x01',
- buf[sctp.cause_restart_with_new_addr._MIN_LEN:
- sctp.cause_restart_with_new_addr._MIN_LEN + 8])
-
- buf = buf[12:]
- res12 = struct.unpack_from(
- sctp.cause_user_initiated_abort._PACK_STR, buf)
- eq_(sctp.cause_user_initiated_abort.cause_code(), res12[0])
- eq_(19, res12[1])
- eq_(b'Key Interrupt.\x00',
- buf[sctp.cause_user_initiated_abort._MIN_LEN:
- sctp.cause_user_initiated_abort._MIN_LEN + 15])
-
- buf = buf[20:]
- res13 = struct.unpack_from(
- sctp.cause_protocol_violation._PACK_STR, buf)
- eq_(sctp.cause_protocol_violation.cause_code(), res13[0])
- eq_(20, res13[1])
- eq_(b'Unknown reason.\x00',
- buf[sctp.cause_protocol_violation._MIN_LEN:
- sctp.cause_protocol_violation._MIN_LEN + 16])
-
- def test_serialize_with_cookie_echo(self):
- self.setUp_with_cookie_echo()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_cookie_echo._PACK_STR, buf)
- eq_(sctp.chunk_cookie_echo.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
- eq_(self.cookie,
- buf[sctp.chunk_cookie_echo._MIN_LEN:
- sctp.chunk_cookie_echo._MIN_LEN + 4])
-
- def test_serialize_with_cookie_ack(self):
- self.setUp_with_cookie_ack()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_cookie_ack._PACK_STR, buf)
- eq_(sctp.chunk_cookie_ack.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
-
- def test_serialize_with_ecn_echo(self):
- self.setUp_with_ecn_echo()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_ecn_echo._PACK_STR, buf)
- eq_(sctp.chunk_ecn_echo.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
- eq_(self.low_tsn, res[3])
-
- def test_serialize_with_cwr(self):
- self.setUp_with_cwr()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_cwr._PACK_STR, buf)
- eq_(sctp.chunk_cwr.chunk_type(), res[0])
- eq_(self.flags, res[1])
- eq_(self.length, res[2])
- eq_(self.low_tsn, res[3])
-
- def test_serialize_with_shutdown_complete(self):
- self.setUp_with_shutdown_complete()
- buf = self._test_serialize()
- res = struct.unpack_from(
- sctp.chunk_shutdown_complete._PACK_STR, buf)
- eq_(sctp.chunk_shutdown_complete.chunk_type(), res[0])
- flags = self.tflag << 0
- eq_(flags, res[1])
- eq_(self.length, res[2])
-
- def test_serialize_with_multi_chunks(self):
- self.setUp_with_multi_chunks()
- buf = self._test_serialize()
- res = struct.unpack_from(sctp.chunk_sack._PACK_STR, buf)
- eq_(sctp.chunk_sack.chunk_type(), res[0])
- eq_(self.s_flags, res[1])
- eq_(self.s_length, res[2])
- eq_(self.s_tsn_ack, res[3])
- eq_(self.s_a_rwnd, res[4])
- eq_(self.s_gapack_num, res[5])
- eq_(self.s_duptsn_num, res[6])
-
- buf = buf[self.s_length:]
- res = struct.unpack_from(sctp.chunk_data._PACK_STR, buf)
- eq_(sctp.chunk_data.chunk_type(), res[0])
- d1_flags = (
- (self.d1_unordered << 2) |
- (self.d1_begin << 1) |
- (self.d1_end << 0))
- eq_(d1_flags, res[1])
- eq_(self.d1_length, res[2])
- eq_(self.d1_tsn, res[3])
- eq_(self.d1_sid, res[4])
- eq_(self.d1_seq, res[5])
- eq_(self.d1_payload_id, res[6])
- eq_(self.d1_payload_data,
- buf[sctp.chunk_data._MIN_LEN:
- sctp.chunk_data._MIN_LEN + 10])
-
- buf = buf[self.d1_length:]
- res = struct.unpack_from(sctp.chunk_data._PACK_STR, buf)
- eq_(sctp.chunk_data.chunk_type(), res[0])
- d2_flags = (
- (self.d2_unordered << 2) |
- (self.d2_begin << 1) |
- (self.d2_end << 0))
- eq_(d2_flags, res[1])
- eq_(self.d2_length, res[2])
- eq_(self.d2_tsn, res[3])
- eq_(self.d2_sid, res[4])
- eq_(self.d2_seq, res[5])
- eq_(self.d2_payload_id, res[6])
- eq_(self.d2_payload_data,
- buf[sctp.chunk_data._MIN_LEN:
- sctp.chunk_data._MIN_LEN + 10])
-
- def test_build_sctp(self):
- eth = ethernet.ethernet('00:aa:aa:aa:aa:aa', '00:bb:bb:bb:bb:bb',
- ether.ETH_TYPE_IP)
- ip4 = ipv4.ipv4(4, 5, 16, 0, 0, 2, 0, 64, inet.IPPROTO_SCTP, 0,
- '192.168.1.1', '10.144.1.1')
- pkt = eth / ip4 / self.sc
-
- eth = pkt.get_protocol(ethernet.ethernet)
- ok_(eth)
- eq_(eth.ethertype, ether.ETH_TYPE_IP)
-
- ip4 = pkt.get_protocol(ipv4.ipv4)
- ok_(ip4)
- eq_(ip4.proto, inet.IPPROTO_SCTP)
-
- sc = pkt.get_protocol(sctp.sctp)
- ok_(sc)
- eq_(sc, self.sc)
-
- def test_build_sctp_with_data(self):
- self.setUp_with_data()
- self.test_build_sctp()
-
- def test_build_sctp_with_init(self):
- self.setUp_with_init()
- self.test_build_sctp()
-
- def test_build_sctp_with_init_ack(self):
- self.setUp_with_init_ack()
- self.test_build_sctp()
-
- def test_build_sctp_with_sack(self):
- self.setUp_with_sack()
- self.test_build_sctp()
-
- def test_build_sctp_with_heartbeat(self):
- self.setUp_with_heartbeat()
- self.test_build_sctp()
-
- def test_build_sctp_with_heartbeat_ack(self):
- self.setUp_with_heartbeat_ack()
- self.test_build_sctp()
-
- def test_build_sctp_with_abort(self):
- self.setUp_with_abort()
- self.test_build_sctp()
-
- def test_build_sctp_with_shutdown(self):
- self.setUp_with_shutdown()
- self.test_build_sctp()
-
- def test_build_sctp_with_shutdown_ack(self):
- self.setUp_with_shutdown_ack()
- self.test_build_sctp()
-
- def test_build_sctp_with_error(self):
- self.setUp_with_error()
- self.test_build_sctp()
-
- def test_build_sctp_with_cookie_echo(self):
- self.setUp_with_cookie_echo()
- self.test_build_sctp()
-
- def test_build_sctp_with_cookie_ack(self):
- self.setUp_with_cookie_ack()
- self.test_build_sctp()
-
- def test_build_sctp_with_ecn_echo(self):
- self.setUp_with_ecn_echo()
- self.test_build_sctp()
-
- def test_build_sctp_with_cwr(self):
- self.setUp_with_cwr()
- self.test_build_sctp()
-
- def test_build_sctp_with_shutdown_complete(self):
- self.setUp_with_shutdown_complete()
- self.test_build_sctp()
-
- def tset_build_sctp_with_multi_chunks(self):
- self.setUp_with_multi_chunks()
- self.test_build_sctp()
-
- def test_to_string(self):
- sctp_values = {'src_port': self.src_port,
- 'dst_port': self.dst_port,
- 'vtag': self.vtag,
- 'csum': self.csum,
- 'chunks': self.chunks}
- _sctp_str = ','.join(['%s=%s' % (k, sctp_values[k])
- for k, _ in inspect.getmembers(self.sc)
- if k in sctp_values])
- sctp_str = '%s(%s)' % (sctp.sctp.__name__, _sctp_str)
-
- eq_(str(self.sc), sctp_str)
- eq_(repr(self.sc), sctp_str)
-
- def test_to_string_with_data(self):
- self.setUp_with_data()
- self.test_to_string()
-
- def test_to_string_with_init(self):
- self.setUp_with_init()
- self.test_to_string()
-
- def test_to_string_with_init_ack(self):
- self.setUp_with_init_ack()
- self.test_to_string()
-
- def test_to_string_with_sack(self):
- self.setUp_with_sack()
- self.test_to_string()
-
- def test_to_string_with_heartbeat(self):
- self.setUp_with_heartbeat()
- self.test_to_string()
-
- def test_to_string_with_heartbeat_ack(self):
- self.setUp_with_heartbeat_ack()
- self.test_to_string()
-
- def test_to_string_with_abort(self):
- self.setUp_with_abort()
- self.test_to_string()
-
- def test_to_string_with_shutdown(self):
- self.setUp_with_shutdown()
- self.test_to_string()
-
- def test_to_string_with_shutdown_ack(self):
- self.setUp_with_shutdown_ack()
- self.test_to_string()
-
- def test_to_string_with_error(self):
- self.setUp_with_error()
- self.test_to_string()
-
- def test_to_string_with_cookie_echo(self):
- self.setUp_with_cookie_echo()
- self.test_to_string()
-
- def test_to_string_with_cookie_ack(self):
- self.setUp_with_cookie_ack()
- self.test_to_string()
-
- def test_to_string_with_ecn_echo(self):
- self.setUp_with_ecn_echo()
- self.test_to_string()
-
- def test_to_string_with_cwr(self):
- self.setUp_with_cwr()
- self.test_to_string()
-
- def test_to_string_with_shutdown_complete(self):
- self.setUp_with_shutdown_complete()
- self.test_to_string()
-
- def test_to_string_with_multi_chunks(self):
- self.setUp_with_multi_chunks()
- self.test_to_string()
-
- def test_json(self):
- jsondict = self.sc.to_jsondict()
- sc = sctp.sctp.from_jsondict(jsondict['sctp'])
- eq_(str(self.sc), str(sc))
-
- def test_json_with_data(self):
- self.setUp_with_data()
- self.test_json()
-
- def test_json_with_init(self):
- self.setUp_with_init()
- self.test_json()
-
- def test_json_with_init_ack(self):
- self.setUp_with_init_ack()
- self.test_json()
-
- def test_json_with_sack(self):
- self.setUp_with_sack()
- self.test_json()
-
- def test_json_with_heartbeat(self):
- self.setUp_with_heartbeat()
- self.test_json()
-
- def test_json_with_heartbeat_ack(self):
- self.setUp_with_heartbeat_ack()
- self.test_json()
-
- def test_json_with_abort(self):
- self.setUp_with_abort()
- self.test_json()
-
- def test_json_with_shutdown(self):
- self.setUp_with_shutdown()
- self.test_json()
-
- def test_json_with_shutdown_ack(self):
- self.setUp_with_shutdown_ack()
- self.test_json()
-
- def test_json_with_error(self):
- self.setUp_with_error()
- self.test_json()
-
- def test_json_with_cookie_echo(self):
- self.setUp_with_cookie_echo()
- self.test_json()
-
- def test_json_with_cookie_ack(self):
- self.setUp_with_cookie_ack()
- self.test_json()
-
- def test_json_with_ecn_echo(self):
- self.setUp_with_ecn_echo()
- self.test_json()
-
- def test_json_with_cwr(self):
- self.setUp_with_cwr()
- self.test_json()
-
- def test_json_with_shutdown_complete(self):
- self.setUp_with_shutdown_complete()
- self.test_json()
-
- def test_json_with_multi_chunks(self):
- self.setUp_with_multi_chunks()
- self.test_json()
diff --git a/tests/unit/packet/test_slow.py b/tests/unit/packet/test_slow.py
deleted file mode 100644
index 9e077fd2..00000000
--- a/tests/unit/packet/test_slow.py
+++ /dev/null
@@ -1,1104 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import copy
-import logging
-from struct import pack, unpack_from
-import unittest
-
-from nose.tools import ok_, eq_, raises
-from ryu.ofproto import ether
-from ryu.lib.packet.ethernet import ethernet
-from ryu.lib.packet.packet import Packet
-from ryu.lib import addrconv
-from ryu.lib.packet.slow import slow, lacp
-from ryu.lib.packet.slow import SLOW_PROTOCOL_MULTICAST
-from ryu.lib.packet.slow import SLOW_SUBTYPE_LACP
-from ryu.lib.packet.slow import SLOW_SUBTYPE_MARKER
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_slow(unittest.TestCase):
- """ Test case for Slow Protocol
- """
- def setUp(self):
- self.subtype = SLOW_SUBTYPE_LACP
- self.version = lacp.LACP_VERSION_NUMBER
- self.actor_tag = lacp.LACP_TLV_TYPE_ACTOR
- self.actor_length = 20
- self.actor_system_priority = 65534
- self.actor_system = '00:07:0d:af:f4:54'
- self.actor_key = 1
- self.actor_port_priority = 65535
- self.actor_port = 1
- self.actor_state_activity = lacp.LACP_STATE_ACTIVE
- self.actor_state_timeout = lacp.LACP_STATE_LONG_TIMEOUT
- self.actor_state_aggregation = lacp.LACP_STATE_AGGREGATEABLE
- self.actor_state_synchronization = lacp.LACP_STATE_IN_SYNC
- self.actor_state_collecting = lacp.LACP_STATE_COLLECTING_ENABLED
- self.actor_state_distributing = lacp.LACP_STATE_DISTRIBUTING_ENABLED
- self.actor_state_defaulted = lacp.LACP_STATE_OPERATIONAL_PARTNER
- self.actor_state_expired = lacp.LACP_STATE_EXPIRED
- self.actor_state = (
- (self.actor_state_activity << 0) |
- (self.actor_state_timeout << 1) |
- (self.actor_state_aggregation << 2) |
- (self.actor_state_synchronization << 3) |
- (self.actor_state_collecting << 4) |
- (self.actor_state_distributing << 5) |
- (self.actor_state_defaulted << 6) |
- (self.actor_state_expired << 7))
- self.partner_tag = lacp.LACP_TLV_TYPE_PARTNER
- self.partner_length = 20
- self.partner_system_priority = 0
- self.partner_system = '00:00:00:00:00:00'
- self.partner_key = 0
- self.partner_port_priority = 0
- self.partner_port = 0
- self.partner_state_activity = 0
- self.partner_state_timeout = lacp.LACP_STATE_SHORT_TIMEOUT
- self.partner_state_aggregation = 0
- self.partner_state_synchronization = 0
- self.partner_state_collecting = 0
- self.partner_state_distributing = 0
- self.partner_state_defaulted = 0
- self.partner_state_expired = 0
- self.partner_state = (
- (self.partner_state_activity << 0) |
- (self.partner_state_timeout << 1) |
- (self.partner_state_aggregation << 2) |
- (self.partner_state_synchronization << 3) |
- (self.partner_state_collecting << 4) |
- (self.partner_state_distributing << 5) |
- (self.partner_state_defaulted << 6) |
- (self.partner_state_expired << 7))
- self.collector_tag = lacp.LACP_TLV_TYPE_COLLECTOR
- self.collector_length = 16
- self.collector_max_delay = 0
- self.terminator_tag = lacp.LACP_TLV_TYPE_TERMINATOR
- self.terminator_length = 0
-
- self.head_fmt = lacp._HLEN_PACK_STR
- self.head_len = lacp._HLEN_PACK_LEN
- self.act_fmt = lacp._ACTPRT_INFO_PACK_STR
- self.act_len = lacp._ACTPRT_INFO_PACK_LEN
- self.prt_fmt = lacp._ACTPRT_INFO_PACK_STR
- self.prt_len = lacp._ACTPRT_INFO_PACK_LEN
- self.col_fmt = lacp._COL_INFO_PACK_STR
- self.col_len = lacp._COL_INFO_PACK_LEN
- self.trm_fmt = lacp._TRM_PACK_STR
- self.trm_len = lacp._TRM_PACK_LEN
- self.length = lacp._ALL_PACK_LEN
-
- self.head_buf = pack(self.head_fmt,
- self.subtype,
- self.version)
- self.act_buf = pack(self.act_fmt,
- self.actor_tag,
- self.actor_length,
- self.actor_system_priority,
- addrconv.mac.text_to_bin(self.actor_system),
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state)
- self.prt_buf = pack(self.prt_fmt,
- self.partner_tag,
- self.partner_length,
- self.partner_system_priority,
- addrconv.mac.text_to_bin(self.partner_system),
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state)
- self.col_buf = pack(self.col_fmt,
- self.collector_tag,
- self.collector_length,
- self.collector_max_delay)
- self.trm_buf = pack(self.trm_fmt,
- self.terminator_tag,
- self.terminator_length)
-
- self.buf = self.head_buf + self.act_buf + self.prt_buf + \
- self.col_buf + self.trm_buf
-
- def tearDown(self):
- pass
-
- def test_parser(self):
- slow.parser(self.buf)
-
- def test_not_implemented_subtype(self):
- not_implemented_buf = pack(
- slow._PACK_STR, SLOW_SUBTYPE_MARKER) + self.buf[1:]
- (instance, nexttype, last) = slow.parser(not_implemented_buf)
- assert None == instance
- assert None == nexttype
- assert None != last
-
- def test_invalid_subtype(self):
- invalid_buf = b'\xff' + self.buf[1:]
- (instance, nexttype, last) = slow.parser(invalid_buf)
- assert None == instance
- assert None == nexttype
- assert None != last
-
-
-class Test_lacp(unittest.TestCase):
- """ Test case for lacp
- """
-
- def setUp(self):
- self.subtype = SLOW_SUBTYPE_LACP
- self.version = lacp.LACP_VERSION_NUMBER
- self.actor_tag = lacp.LACP_TLV_TYPE_ACTOR
- self.actor_length = 20
- self.actor_system_priority = 65534
- self.actor_system = '00:07:0d:af:f4:54'
- self.actor_key = 1
- self.actor_port_priority = 65535
- self.actor_port = 1
- self.actor_state_activity = lacp.LACP_STATE_ACTIVE
- self.actor_state_timeout = lacp.LACP_STATE_LONG_TIMEOUT
- self.actor_state_aggregation = lacp.LACP_STATE_AGGREGATEABLE
- self.actor_state_synchronization = lacp.LACP_STATE_IN_SYNC
- self.actor_state_collecting = lacp.LACP_STATE_COLLECTING_ENABLED
- self.actor_state_distributing = lacp.LACP_STATE_DISTRIBUTING_ENABLED
- self.actor_state_defaulted = lacp.LACP_STATE_OPERATIONAL_PARTNER
- self.actor_state_expired = lacp.LACP_STATE_EXPIRED
- self.actor_state = (
- (self.actor_state_activity << 0) |
- (self.actor_state_timeout << 1) |
- (self.actor_state_aggregation << 2) |
- (self.actor_state_synchronization << 3) |
- (self.actor_state_collecting << 4) |
- (self.actor_state_distributing << 5) |
- (self.actor_state_defaulted << 6) |
- (self.actor_state_expired << 7))
- self.partner_tag = lacp.LACP_TLV_TYPE_PARTNER
- self.partner_length = 20
- self.partner_system_priority = 0
- self.partner_system = '00:00:00:00:00:00'
- self.partner_key = 0
- self.partner_port_priority = 0
- self.partner_port = 0
- self.partner_state_activity = 0
- self.partner_state_timeout = lacp.LACP_STATE_SHORT_TIMEOUT
- self.partner_state_aggregation = 0
- self.partner_state_synchronization = 0
- self.partner_state_collecting = 0
- self.partner_state_distributing = 0
- self.partner_state_defaulted = 0
- self.partner_state_expired = 0
- self.partner_state = (
- (self.partner_state_activity << 0) |
- (self.partner_state_timeout << 1) |
- (self.partner_state_aggregation << 2) |
- (self.partner_state_synchronization << 3) |
- (self.partner_state_collecting << 4) |
- (self.partner_state_distributing << 5) |
- (self.partner_state_defaulted << 6) |
- (self.partner_state_expired << 7))
- self.collector_tag = lacp.LACP_TLV_TYPE_COLLECTOR
- self.collector_length = 16
- self.collector_max_delay = 0
- self.terminator_tag = lacp.LACP_TLV_TYPE_TERMINATOR
- self.terminator_length = 0
-
- self.head_fmt = lacp._HLEN_PACK_STR
- self.head_len = lacp._HLEN_PACK_LEN
- self.act_fmt = lacp._ACTPRT_INFO_PACK_STR
- self.act_len = lacp._ACTPRT_INFO_PACK_LEN
- self.prt_fmt = lacp._ACTPRT_INFO_PACK_STR
- self.prt_len = lacp._ACTPRT_INFO_PACK_LEN
- self.col_fmt = lacp._COL_INFO_PACK_STR
- self.col_len = lacp._COL_INFO_PACK_LEN
- self.trm_fmt = lacp._TRM_PACK_STR
- self.trm_len = lacp._TRM_PACK_LEN
- self.length = lacp._ALL_PACK_LEN
-
- self.head_buf = pack(self.head_fmt,
- self.subtype,
- self.version)
- self.act_buf = pack(self.act_fmt,
- self.actor_tag,
- self.actor_length,
- self.actor_system_priority,
- addrconv.mac.text_to_bin(self.actor_system),
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state)
- self.prt_buf = pack(self.prt_fmt,
- self.partner_tag,
- self.partner_length,
- self.partner_system_priority,
- addrconv.mac.text_to_bin(self.partner_system),
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state)
- self.col_buf = pack(self.col_fmt,
- self.collector_tag,
- self.collector_length,
- self.collector_max_delay)
- self.trm_buf = pack(self.trm_fmt,
- self.terminator_tag,
- self.terminator_length)
-
- self.buf = self.head_buf + self.act_buf + self.prt_buf + \
- self.col_buf + self.trm_buf
-
- self.l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.subtype, self.l._subtype)
- eq_(self.version, self.l.version)
- eq_(self.actor_tag, self.l._actor_tag)
- eq_(self.actor_length, self.l._actor_length)
- eq_(self.actor_system_priority, self.l.actor_system_priority)
- eq_(self.actor_system, self.l.actor_system)
- eq_(self.actor_key, self.l.actor_key)
- eq_(self.actor_port_priority, self.l.actor_port_priority)
- eq_(self.actor_port, self.l.actor_port)
- eq_(self.actor_state_activity, self.l.actor_state_activity)
- eq_(self.actor_state_timeout, self.l.actor_state_timeout)
- eq_(self.actor_state_aggregation,
- self.l.actor_state_aggregation)
- eq_(self.actor_state_synchronization,
- self.l.actor_state_synchronization)
- eq_(self.actor_state_collecting,
- self.l.actor_state_collecting)
- eq_(self.actor_state_distributing,
- self.l.actor_state_distributing)
- eq_(self.actor_state_defaulted, self.l.actor_state_defaulted)
- eq_(self.actor_state_expired, self.l.actor_state_expired)
- eq_(self.actor_state, self.l._actor_state)
- eq_(self.partner_tag, self.l._partner_tag)
- eq_(self.partner_length, self.l._partner_length)
- eq_(self.partner_system_priority,
- self.l.partner_system_priority)
- eq_(self.partner_system, self.l.partner_system)
- eq_(self.partner_key, self.l.partner_key)
- eq_(self.partner_port_priority, self.l.partner_port_priority)
- eq_(self.partner_port, self.l.partner_port)
- eq_(self.partner_state_activity, self.l.partner_state_activity)
- eq_(self.partner_state_timeout, self.l.partner_state_timeout)
- eq_(self.partner_state_aggregation,
- self.l.partner_state_aggregation)
- eq_(self.partner_state_synchronization,
- self.l.partner_state_synchronization)
- eq_(self.partner_state_collecting,
- self.l.partner_state_collecting)
- eq_(self.partner_state_distributing,
- self.l.partner_state_distributing)
- eq_(self.partner_state_defaulted,
- self.l.partner_state_defaulted)
- eq_(self.partner_state_expired, self.l.partner_state_expired)
- eq_(self.partner_state, self.l._partner_state)
- eq_(self.collector_tag, self.l._collector_tag)
- eq_(self.collector_length, self.l._collector_length)
- eq_(self.collector_max_delay, self.l.collector_max_delay)
- eq_(self.terminator_tag, self.l._terminator_tag)
- eq_(self.terminator_length, self.l._terminator_length)
-
- def test_parser(self):
- _res = self.l.parser(self.buf)
- if type(_res) is tuple:
- res = _res[0]
- else:
- res = _res
-
- eq_(res._subtype, self.subtype)
- eq_(res.version, self.version)
- eq_(res._actor_tag, self.actor_tag)
- eq_(res._actor_length, self.actor_length)
- eq_(res.actor_system_priority, self.actor_system_priority)
- eq_(res.actor_system, self.actor_system)
- eq_(res.actor_key, self.actor_key)
- eq_(res.actor_port_priority, self.actor_port_priority)
- eq_(res.actor_port, self.actor_port)
- eq_(res.actor_state_activity, self.actor_state_activity)
- eq_(res.actor_state_timeout, self.actor_state_timeout)
- eq_(res.actor_state_aggregation, self.actor_state_aggregation)
- eq_(res.actor_state_synchronization,
- self.actor_state_synchronization)
- eq_(res.actor_state_collecting, self.actor_state_collecting)
- eq_(res.actor_state_distributing, self.actor_state_distributing)
- eq_(res.actor_state_defaulted, self.actor_state_defaulted)
- eq_(res.actor_state_expired, self.actor_state_expired)
- eq_(res._actor_state, self.actor_state)
- eq_(res._partner_tag, self.partner_tag)
- eq_(res._partner_length, self.partner_length)
- eq_(res.partner_system_priority, self.partner_system_priority)
- eq_(res.partner_system, self.partner_system)
- eq_(res.partner_key, self.partner_key)
- eq_(res.partner_port_priority, self.partner_port_priority)
- eq_(res.partner_port, self.partner_port)
- eq_(res.partner_state_activity, self.partner_state_activity)
- eq_(res.partner_state_timeout, self.partner_state_timeout)
- eq_(res.partner_state_aggregation,
- self.partner_state_aggregation)
- eq_(res.partner_state_synchronization,
- self.partner_state_synchronization)
- eq_(res.partner_state_collecting, self.partner_state_collecting)
- eq_(res.partner_state_distributing,
- self.partner_state_distributing)
- eq_(res.partner_state_defaulted, self.partner_state_defaulted)
- eq_(res.partner_state_expired, self.partner_state_expired)
- eq_(res._partner_state, self.partner_state)
- eq_(res._collector_tag, self.collector_tag)
- eq_(res._collector_length, self.collector_length)
- eq_(res.collector_max_delay, self.collector_max_delay)
- eq_(res._terminator_tag, self.terminator_tag)
- eq_(res._terminator_length, self.terminator_length)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.l.serialize(data, prev)
-
- offset = 0
- head_res = unpack_from(self.head_fmt, buf, offset)
- offset += self.head_len
- act_res = unpack_from(self.act_fmt, buf, offset)
- offset += self.act_len
- prt_res = unpack_from(self.prt_fmt, buf, offset)
- offset += self.prt_len
- col_res = unpack_from(self.col_fmt, buf, offset)
- offset += self.col_len
- trm_res = unpack_from(self.trm_fmt, buf, offset)
-
- eq_(head_res[0], self.subtype)
- eq_(head_res[1], self.version)
-
- eq_(act_res[0], self.actor_tag)
- eq_(act_res[1], self.actor_length)
- eq_(act_res[2], self.actor_system_priority)
- eq_(act_res[3], addrconv.mac.text_to_bin(self.actor_system))
- eq_(act_res[4], self.actor_key)
- eq_(act_res[5], self.actor_port_priority)
- eq_(act_res[6], self.actor_port)
- eq_(act_res[7], self.actor_state)
-
- eq_(prt_res[0], self.partner_tag)
- eq_(prt_res[1], self.partner_length)
- eq_(prt_res[2], self.partner_system_priority)
- eq_(prt_res[3], addrconv.mac.text_to_bin(self.partner_system))
- eq_(prt_res[4], self.partner_key)
- eq_(prt_res[5], self.partner_port_priority)
- eq_(prt_res[6], self.partner_port)
- eq_(prt_res[7], self.partner_state)
-
- eq_(col_res[0], self.collector_tag)
- eq_(col_res[1], self.collector_length)
- eq_(col_res[2], self.collector_max_delay)
-
- eq_(trm_res[0], self.terminator_tag)
- eq_(trm_res[1], self.terminator_length)
-
- def _build_lacp(self):
- ethertype = ether.ETH_TYPE_SLOW
- dst = SLOW_PROTOCOL_MULTICAST
- e = ethernet(dst, self.actor_system, ethertype)
- p = Packet()
-
- p.add_protocol(e)
- p.add_protocol(self.l)
- p.serialize()
- return p
-
- def test_build_lacp(self):
- p = self._build_lacp()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_SLOW)
-
- l = self.find_protocol(p, "lacp")
- ok_(l)
-
- eq_(l._subtype, self.subtype)
- eq_(l.version, self.version)
- eq_(l._actor_tag, self.actor_tag)
- eq_(l._actor_length, self.actor_length)
- eq_(l.actor_system_priority, self.actor_system_priority)
- eq_(l.actor_system, self.actor_system)
- eq_(l.actor_key, self.actor_key)
- eq_(l.actor_port_priority, self.actor_port_priority)
- eq_(l.actor_port, self.actor_port)
- eq_(l.actor_state_activity, self.actor_state_activity)
- eq_(l.actor_state_timeout, self.actor_state_timeout)
- eq_(l.actor_state_aggregation, self.actor_state_aggregation)
- eq_(l.actor_state_synchronization,
- self.actor_state_synchronization)
- eq_(l.actor_state_collecting, self.actor_state_collecting)
- eq_(l.actor_state_distributing, self.actor_state_distributing)
- eq_(l.actor_state_defaulted, self.actor_state_defaulted)
- eq_(l.actor_state_expired, self.actor_state_expired)
- eq_(l._actor_state, self.actor_state)
- eq_(l._partner_tag, self.partner_tag)
- eq_(l._partner_length, self.partner_length)
- eq_(l.partner_system_priority, self.partner_system_priority)
- eq_(l.partner_system, self.partner_system)
- eq_(l.partner_key, self.partner_key)
- eq_(l.partner_port_priority, self.partner_port_priority)
- eq_(l.partner_port, self.partner_port)
- eq_(l.partner_state_activity, self.partner_state_activity)
- eq_(l.partner_state_timeout, self.partner_state_timeout)
- eq_(l.partner_state_aggregation, self.partner_state_aggregation)
- eq_(l.partner_state_synchronization,
- self.partner_state_synchronization)
- eq_(l.partner_state_collecting, self.partner_state_collecting)
- eq_(l.partner_state_distributing,
- self.partner_state_distributing)
- eq_(l.partner_state_defaulted, self.partner_state_defaulted)
- eq_(l.partner_state_expired, self.partner_state_expired)
- eq_(l._partner_state, self.partner_state)
- eq_(l._collector_tag, self.collector_tag)
- eq_(l._collector_length, self.collector_length)
- eq_(l.collector_max_delay, self.collector_max_delay)
- eq_(l._terminator_tag, self.terminator_tag)
- eq_(l._terminator_length, self.terminator_length)
-
- @raises(Exception)
- def test_malformed_lacp(self):
- m_short_buf = self.buf[1:self.length]
- slow.parser(m_short_buf)
-
- @raises(Exception)
- def test_invalid_subtype(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.subtype = 0xff
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_version(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.version = 0xff
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_actor_tag(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.actor_tag = 0x04
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_actor_length(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.actor_length = 50
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_partner_tag(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.partner_tag = 0x01
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_partner_length(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.partner_length = 0
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_collector_tag(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.collector_tag = 0x00
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_collector_length(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.collector_length = 20
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_terminator_tag(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.terminator_tag = 0x04
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_terminator_length(self):
- invalid_lacv = copy.deepcopy(self.l)
- invalid_lacv.terminator_length = self.trm_len
- invalid_buf = invalid_lacv.serialize()
- slow.parser(invalid_buf)
-
- @raises(Exception)
- def test_invalid_actor_state_activity(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- 2,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_actor_state_timeout(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- 2,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_actor_state_aggregation(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- 2,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_actor_state_synchronization(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- 2,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_actor_state_collecting(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- 2,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_actor_state_distributing(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- 2,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_actor_state_defaulted(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- 2,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_actor_state_expired(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- 2,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_activity(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- -1,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_timeout(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- -1,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_aggregation(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- -1,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_synchronization(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- -1,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_collecting(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- -1,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_distributing(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- -1,
- self.partner_state_defaulted,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_defaulted(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- -1,
- self.partner_state_expired,
- self.collector_max_delay)
- l.serialize()
-
- @raises(Exception)
- def test_invalid_partner_state_expired(self):
- l = lacp(self.version,
- self.actor_system_priority,
- self.actor_system,
- self.actor_key,
- self.actor_port_priority,
- self.actor_port,
- self.actor_state_activity,
- self.actor_state_timeout,
- self.actor_state_aggregation,
- self.actor_state_synchronization,
- self.actor_state_collecting,
- self.actor_state_distributing,
- self.actor_state_defaulted,
- self.actor_state_expired,
- self.partner_system_priority,
- self.partner_system,
- self.partner_key,
- self.partner_port_priority,
- self.partner_port,
- self.partner_state_activity,
- self.partner_state_timeout,
- self.partner_state_aggregation,
- self.partner_state_synchronization,
- self.partner_state_collecting,
- self.partner_state_distributing,
- self.partner_state_defaulted,
- -1,
- self.collector_max_delay)
- l.serialize()
-
- def test_json(self):
- jsondict = self.l.to_jsondict()
- l = lacp.from_jsondict(jsondict['lacp'])
- eq_(str(self.l), str(l))
diff --git a/tests/unit/packet/test_tcp.py b/tests/unit/packet/test_tcp.py
deleted file mode 100644
index 7224df0e..00000000
--- a/tests/unit/packet/test_tcp.py
+++ /dev/null
@@ -1,267 +0,0 @@
-# Copyright (C) 2012-2015 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import six
-import struct
-from struct import *
-from nose.tools import *
-from ryu.ofproto import inet
-from ryu.lib.packet import tcp
-from ryu.lib.packet.ipv4 import ipv4
-from ryu.lib.packet import packet_utils
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger('test_tcp')
-
-
-class Test_tcp(unittest.TestCase):
- """ Test case for tcp
- """
- src_port = 6431
- dst_port = 8080
- seq = 5
- ack = 1
- offset = 6
- bits = 0b101010
- window_size = 2048
- csum = 12345
- urgent = 128
- option = b'\x01\x02\x03\x04'
-
- t = tcp.tcp(src_port, dst_port, seq, ack, offset, bits,
- window_size, csum, urgent, option)
-
- buf = pack(tcp.tcp._PACK_STR, src_port, dst_port, seq, ack,
- offset << 4, bits, window_size, csum, urgent)
- buf += option
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.src_port, self.t.src_port)
- eq_(self.dst_port, self.t.dst_port)
- eq_(self.seq, self.t.seq)
- eq_(self.ack, self.t.ack)
- eq_(self.offset, self.t.offset)
- eq_(self.bits, self.t.bits)
- eq_(self.window_size, self.t.window_size)
- eq_(self.csum, self.t.csum)
- eq_(self.urgent, self.t.urgent)
- eq_(self.option, self.t.option)
-
- def test_parser(self):
- r1, r2, _ = self.t.parser(self.buf)
-
- eq_(self.src_port, r1.src_port)
- eq_(self.dst_port, r1.dst_port)
- eq_(self.seq, r1.seq)
- eq_(self.ack, r1.ack)
- eq_(self.offset, r1.offset)
- eq_(self.bits, r1.bits)
- eq_(self.window_size, r1.window_size)
- eq_(self.csum, r1.csum)
- eq_(self.urgent, r1.urgent)
- eq_(self.option, r1.option)
- eq_(None, r2)
-
- def test_serialize(self):
- offset = 5
- csum = 0
-
- src_ip = '192.168.10.1'
- dst_ip = '192.168.100.1'
- prev = ipv4(4, 5, 0, 0, 0, 0, 0, 64,
- inet.IPPROTO_TCP, 0, src_ip, dst_ip)
-
- t = tcp.tcp(self.src_port, self.dst_port, self.seq, self.ack,
- offset, self.bits, self.window_size, csum, self.urgent)
- buf = t.serialize(bytearray(), prev)
- res = struct.unpack(tcp.tcp._PACK_STR, six.binary_type(buf))
-
- eq_(res[0], self.src_port)
- eq_(res[1], self.dst_port)
- eq_(res[2], self.seq)
- eq_(res[3], self.ack)
- eq_(res[4], offset << 4)
- eq_(res[5], self.bits)
- eq_(res[6], self.window_size)
- eq_(res[8], self.urgent)
-
- # test __len__
- # offset indicates the number of 32 bit (= 4 bytes)
- # words in the TCP Header.
- # So, we compare len(tcp) with offset * 4, here.
- eq_(offset * 4, len(t))
-
- # checksum
- ph = struct.pack('!4s4sBBH',
- addrconv.ipv4.text_to_bin(src_ip),
- addrconv.ipv4.text_to_bin(dst_ip), 0, 6, offset * 4)
- d = ph + buf
- s = packet_utils.checksum(d)
- eq_(0, s)
-
- def test_serialize_option(self):
- # prepare test data
- offset = 0
- csum = 0
- option = [
- tcp.TCPOptionMaximumSegmentSize(max_seg_size=1460),
- tcp.TCPOptionSACKPermitted(),
- tcp.TCPOptionTimestamps(ts_val=287454020, ts_ecr=1432778632),
- tcp.TCPOptionNoOperation(),
- tcp.TCPOptionWindowScale(shift_cnt=9),
- ]
- option_buf = (
- b'\x02\x04\x05\xb4'
- b'\x04\x02'
- b'\x08\x0a\x11\x22\x33\x44\x55\x66\x77\x88'
- b'\x01'
- b'\x03\x03\x09'
- )
- prev = ipv4(4, 5, 0, 0, 0, 0, 0, 64,
- inet.IPPROTO_TCP, 0, '192.168.10.1', '192.168.100.1')
-
- # test serializer
- t = tcp.tcp(self.src_port, self.dst_port, self.seq, self.ack,
- offset, self.bits, self.window_size, csum, self.urgent,
- option)
- buf = t.serialize(bytearray(), prev)
- r_option_buf = buf[tcp.tcp._MIN_LEN:tcp.tcp._MIN_LEN + len(option_buf)]
- eq_(option_buf, r_option_buf)
-
- # test parser
- (r_tcp, _, _) = tcp.tcp.parser(buf)
- eq_(str(option), str(r_tcp.option))
-
- @raises(Exception)
- def test_malformed_tcp(self):
- m_short_buf = self.buf[1:tcp.tcp._MIN_LEN]
- tcp.tcp.parser(m_short_buf)
-
- def test_default_args(self):
- prev = ipv4(proto=inet.IPPROTO_TCP)
- t = tcp.tcp()
- buf = t.serialize(bytearray(), prev)
- res = struct.unpack(tcp.tcp._PACK_STR, buf)
-
- eq_(res[0], 1)
- eq_(res[1], 1)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 5 << 4)
- eq_(res[5], 0)
- eq_(res[6], 0)
- eq_(res[8], 0)
-
- # with option, without offset
- t = tcp.tcp(option=[tcp.TCPOptionMaximumSegmentSize(1460)])
- buf = t.serialize(bytearray(), prev)
- res = struct.unpack(tcp.tcp._PACK_STR + '4s', buf)
-
- eq_(res[0], 1)
- eq_(res[1], 1)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 6 << 4)
- eq_(res[5], 0)
- eq_(res[6], 0)
- eq_(res[8], 0)
- eq_(res[9], b'\x02\x04\x05\xb4')
-
- # with option, with long offset
- t = tcp.tcp(offset=7, option=[tcp.TCPOptionWindowScale(shift_cnt=9)])
- buf = t.serialize(bytearray(), prev)
- res = struct.unpack(tcp.tcp._PACK_STR + '8s', buf)
-
- eq_(res[0], 1)
- eq_(res[1], 1)
- eq_(res[2], 0)
- eq_(res[3], 0)
- eq_(res[4], 7 << 4)
- eq_(res[5], 0)
- eq_(res[6], 0)
- eq_(res[8], 0)
- eq_(res[9], b'\x03\x03\x09\x00\x00\x00\x00\x00')
-
- def test_json(self):
- jsondict = self.t.to_jsondict()
- t = tcp.tcp.from_jsondict(jsondict['tcp'])
- eq_(str(self.t), str(t))
-
-
-class Test_TCPOption(unittest.TestCase):
- # prepare test data
- input_options = [
- tcp.TCPOptionEndOfOptionList(),
- tcp.TCPOptionNoOperation(),
- tcp.TCPOptionMaximumSegmentSize(max_seg_size=1460),
- tcp.TCPOptionWindowScale(shift_cnt=9),
- tcp.TCPOptionSACKPermitted(),
- tcp.TCPOptionSACK(blocks=[(1, 2), (3, 4)], length=18),
- tcp.TCPOptionTimestamps(ts_val=287454020, ts_ecr=1432778632),
- tcp.TCPOptionUserTimeout(granularity=1, user_timeout=564),
- tcp.TCPOptionAuthentication(
- key_id=1, r_next_key_id=2,
- mac=b'abcdefghijkl', length=16),
- tcp.TCPOptionUnknown(value=b'foobar', kind=255, length=8),
- tcp.TCPOptionUnknown(value=b'', kind=255, length=2),
- ]
- input_buf = (
- b'\x00' # End of Option List
- b'\x01' # No-Operation
- b'\x02\x04\x05\xb4' # Maximum Segment Size
- b'\x03\x03\x09' # Window Scale
- b'\x04\x02' # SACK Permitted
- b'\x05\x12' # SACK
- b'\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04'
- b'\x08\x0a' # Timestamps
- b'\x11\x22\x33\x44\x55\x66\x77\x88'
- b'\x1c\x04\x82\x34' # User Timeout Option
- b'\x1d\x10\x01\x02' # TCP Authentication Option (TCP-AO)
- b'abcdefghijkl'
- b'\xff\x08' # Unknown with body
- b'foobar'
- b'\xff\x02' # Unknown
- )
-
- def test_serialize(self):
- output_buf = bytearray()
- for option in self.input_options:
- output_buf += option.serialize()
- eq_(self.input_buf, output_buf)
-
- def test_parser(self):
- buf = self.input_buf
- output_options = []
- while buf:
- opt, buf = tcp.TCPOption.parser(buf)
- output_options.append(opt)
- eq_(str(self.input_options), str(output_options))
-
- def test_json(self):
- for option in self.input_options:
- json_dict = option.to_jsondict()[option.__class__.__name__]
- output_option = option.__class__.from_jsondict(json_dict)
- eq_(str(option), str(output_option))
diff --git a/tests/unit/packet/test_udp.py b/tests/unit/packet/test_udp.py
deleted file mode 100644
index 0d7d0aa9..00000000
--- a/tests/unit/packet/test_udp.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import struct
-from struct import *
-from nose.tools import *
-from ryu.ofproto import ether, inet
-from ryu.lib.packet.packet import Packet
-from ryu.lib.packet.udp import udp
-from ryu.lib.packet.ipv4 import ipv4
-from ryu.lib.packet import packet_utils
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger('test_udp')
-
-
-class Test_udp(unittest.TestCase):
- """ Test case for udp
- """
- src_port = 6431
- dst_port = 8080
- total_length = 65507
- csum = 12345
- u = udp(src_port, dst_port, total_length, csum)
- buf = pack(udp._PACK_STR, src_port, dst_port, total_length, csum)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.src_port, self.u.src_port)
- eq_(self.dst_port, self.u.dst_port)
- eq_(self.total_length, self.u.total_length)
- eq_(self.csum, self.u.csum)
-
- def test_parser(self):
- r1, r2, _ = self.u.parser(self.buf)
-
- eq_(self.src_port, r1.src_port)
- eq_(self.dst_port, r1.dst_port)
- eq_(self.total_length, r1.total_length)
- eq_(self.csum, r1.csum)
- eq_(None, r2)
-
- def test_serialize(self):
- src_port = 6431
- dst_port = 8080
- total_length = 0
- csum = 0
-
- src_ip = '192.168.10.1'
- dst_ip = '192.168.100.1'
- prev = ipv4(4, 5, 0, 0, 0, 0, 0, 64,
- inet.IPPROTO_UDP, 0, src_ip, dst_ip)
-
- u = udp(src_port, dst_port, total_length, csum)
- buf = u.serialize(bytearray(), prev)
- res = struct.unpack(udp._PACK_STR, buf)
-
- eq_(res[0], src_port)
- eq_(res[1], dst_port)
- eq_(res[2], struct.calcsize(udp._PACK_STR))
-
- # checksum
- ph = struct.pack('!4s4sBBH',
- addrconv.ipv4.text_to_bin(src_ip),
- addrconv.ipv4.text_to_bin(dst_ip), 0, 17, res[2])
- d = ph + buf + bytearray()
- s = packet_utils.checksum(d)
- eq_(0, s)
-
- @raises(Exception)
- def test_malformed_udp(self):
- m_short_buf = self.buf[1:udp._MIN_LEN]
- udp.parser(m_short_buf)
-
- def test_default_args(self):
- prev = ipv4(proto=inet.IPPROTO_UDP)
- u = udp()
- buf = u.serialize(bytearray(), prev)
- res = struct.unpack(udp._PACK_STR, buf)
-
- eq_(res[0], 1)
- eq_(res[1], 1)
- eq_(res[2], udp._MIN_LEN)
-
- def test_json(self):
- jsondict = self.u.to_jsondict()
- u = udp.from_jsondict(jsondict['udp'])
- eq_(str(self.u), str(u))
diff --git a/tests/unit/packet/test_vlan.py b/tests/unit/packet/test_vlan.py
deleted file mode 100644
index b8e3a048..00000000
--- a/tests/unit/packet/test_vlan.py
+++ /dev/null
@@ -1,265 +0,0 @@
-# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-import logging
-import struct
-from struct import *
-from nose.tools import *
-from ryu.ofproto import ether, inet
-from ryu.lib.packet.ethernet import ethernet
-from ryu.lib.packet.packet import Packet
-from ryu.lib.packet.ipv4 import ipv4
-from ryu.lib.packet.vlan import vlan
-from ryu.lib.packet.vlan import svlan
-
-
-LOG = logging.getLogger('test_vlan')
-
-
-class Test_vlan(unittest.TestCase):
- """ Test case for vlan
- """
-
- pcp = 0
- cfi = 0
- vid = 32
- tci = pcp << 15 | cfi << 12 | vid
- ethertype = ether.ETH_TYPE_IP
-
- buf = pack(vlan._PACK_STR, tci, ethertype)
-
- v = vlan(pcp, cfi, vid, ethertype)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.pcp, self.v.pcp)
- eq_(self.cfi, self.v.cfi)
- eq_(self.vid, self.v.vid)
- eq_(self.ethertype, self.v.ethertype)
-
- def test_parser(self):
- res, ptype, _ = self.v.parser(self.buf)
-
- eq_(res.pcp, self.pcp)
- eq_(res.cfi, self.cfi)
- eq_(res.vid, self.vid)
- eq_(res.ethertype, self.ethertype)
- eq_(ptype, ipv4)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.v.serialize(data, prev)
-
- fmt = vlan._PACK_STR
- res = struct.unpack(fmt, buf)
-
- eq_(res[0], self.tci)
- eq_(res[1], self.ethertype)
-
- def _build_vlan(self):
- src_mac = '00:07:0d:af:f4:54'
- dst_mac = '00:00:00:00:00:00'
- ethertype = ether.ETH_TYPE_8021Q
- e = ethernet(dst_mac, src_mac, ethertype)
-
- version = 4
- header_length = 20
- tos = 0
- total_length = 24
- identification = 0x8a5d
- flags = 0
- offset = 1480
- ttl = 64
- proto = inet.IPPROTO_ICMP
- csum = 0xa7f2
- src = '131.151.32.21'
- dst = '131.151.32.129'
- option = b'TEST'
- ip = ipv4(version, header_length, tos, total_length, identification,
- flags, offset, ttl, proto, csum, src, dst, option)
-
- p = Packet()
-
- p.add_protocol(e)
- p.add_protocol(self.v)
- p.add_protocol(ip)
- p.serialize()
-
- return p
-
- def test_build_vlan(self):
- p = self._build_vlan()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_8021Q)
-
- v = self.find_protocol(p, "vlan")
- ok_(v)
- eq_(v.ethertype, ether.ETH_TYPE_IP)
-
- ip = self.find_protocol(p, "ipv4")
- ok_(ip)
-
- eq_(v.pcp, self.pcp)
- eq_(v.cfi, self.cfi)
- eq_(v.vid, self.vid)
- eq_(v.ethertype, self.ethertype)
-
- @raises(Exception)
- def test_malformed_vlan(self):
- m_short_buf = self.buf[1:vlan._MIN_LEN]
- vlan.parser(m_short_buf)
-
- def test_json(self):
- jsondict = self.v.to_jsondict()
- v = vlan.from_jsondict(jsondict['vlan'])
- eq_(str(self.v), str(v))
-
-
-class Test_svlan(unittest.TestCase):
-
- pcp = 0
- cfi = 0
- vid = 32
- tci = pcp << 15 | cfi << 12 | vid
- ethertype = ether.ETH_TYPE_8021Q
-
- buf = pack(svlan._PACK_STR, tci, ethertype)
-
- sv = svlan(pcp, cfi, vid, ethertype)
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def find_protocol(self, pkt, name):
- for p in pkt.protocols:
- if p.protocol_name == name:
- return p
-
- def test_init(self):
- eq_(self.pcp, self.sv.pcp)
- eq_(self.cfi, self.sv.cfi)
- eq_(self.vid, self.sv.vid)
- eq_(self.ethertype, self.sv.ethertype)
-
- def test_parser(self):
- res, ptype, _ = self.sv.parser(self.buf)
-
- eq_(res.pcp, self.pcp)
- eq_(res.cfi, self.cfi)
- eq_(res.vid, self.vid)
- eq_(res.ethertype, self.ethertype)
- eq_(ptype, vlan)
-
- def test_serialize(self):
- data = bytearray()
- prev = None
- buf = self.sv.serialize(data, prev)
-
- fmt = svlan._PACK_STR
- res = struct.unpack(fmt, buf)
-
- eq_(res[0], self.tci)
- eq_(res[1], self.ethertype)
-
- def _build_svlan(self):
- src_mac = '00:07:0d:af:f4:54'
- dst_mac = '00:00:00:00:00:00'
- ethertype = ether.ETH_TYPE_8021AD
- e = ethernet(dst_mac, src_mac, ethertype)
-
- pcp = 0
- cfi = 0
- vid = 32
- tci = pcp << 15 | cfi << 12 | vid
- ethertype = ether.ETH_TYPE_IP
- v = vlan(pcp, cfi, vid, ethertype)
-
- version = 4
- header_length = 20
- tos = 0
- total_length = 24
- identification = 0x8a5d
- flags = 0
- offset = 1480
- ttl = 64
- proto = inet.IPPROTO_ICMP
- csum = 0xa7f2
- src = '131.151.32.21'
- dst = '131.151.32.129'
- option = b'TEST'
- ip = ipv4(version, header_length, tos, total_length, identification,
- flags, offset, ttl, proto, csum, src, dst, option)
-
- p = Packet()
-
- p.add_protocol(e)
- p.add_protocol(self.sv)
- p.add_protocol(v)
- p.add_protocol(ip)
- p.serialize()
-
- return p
-
- def test_build_svlan(self):
- p = self._build_svlan()
-
- e = self.find_protocol(p, "ethernet")
- ok_(e)
- eq_(e.ethertype, ether.ETH_TYPE_8021AD)
-
- sv = self.find_protocol(p, "svlan")
- ok_(sv)
- eq_(sv.ethertype, ether.ETH_TYPE_8021Q)
-
- v = self.find_protocol(p, "vlan")
- ok_(v)
- eq_(v.ethertype, ether.ETH_TYPE_IP)
-
- ip = self.find_protocol(p, "ipv4")
- ok_(ip)
-
- eq_(sv.pcp, self.pcp)
- eq_(sv.cfi, self.cfi)
- eq_(sv.vid, self.vid)
- eq_(sv.ethertype, self.ethertype)
-
- @raises(Exception)
- def test_malformed_svlan(self):
- m_short_buf = self.buf[1:svlan._MIN_LEN]
- svlan.parser(m_short_buf)
-
- def test_json(self):
- jsondict = self.sv.to_jsondict()
- sv = svlan.from_jsondict(jsondict['svlan'])
- eq_(str(self.sv), str(sv))
diff --git a/tests/unit/packet/test_vrrp.py b/tests/unit/packet/test_vrrp.py
deleted file mode 100644
index 71c52500..00000000
--- a/tests/unit/packet/test_vrrp.py
+++ /dev/null
@@ -1,496 +0,0 @@
-# Copyright (C) 2013 Nippon Telegraph and Telephone Corporation.
-# Copyright (C) 2013 Isaku Yamahata <yamahata at private email ne jp>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-from __future__ import print_function
-
-import unittest
-import logging
-import six
-import struct
-import inspect
-
-from nose.tools import eq_, ok_
-from nose.tools import raises
-
-from ryu.ofproto import inet
-from ryu.lib.packet import ipv4
-from ryu.lib.packet import ipv6
-from ryu.lib.packet import packet
-from ryu.lib.packet import packet_utils
-from ryu.lib.packet import vrrp
-from ryu.lib import addrconv
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_vrrpv2(unittest.TestCase):
- """ Test case for vrrp v2
- """
- version = vrrp.VRRP_VERSION_V2
- type_ = vrrp.VRRP_TYPE_ADVERTISEMENT
- vrid = 128
- priority = 100
- count_ip = 1
- auth_type = vrrp.VRRP_AUTH_NO_AUTH
- max_adver_int = 100
- checksum = 0
- ip_address = '192.168.0.1'
- auth_data = (0, 0)
- vrrpv2 = vrrp.vrrpv2.create(type_, vrid, priority, max_adver_int,
- [ip_address])
- buf = struct.pack(vrrp.vrrpv2._PACK_STR + '4sII',
- vrrp.vrrp_to_version_type(vrrp.VRRP_VERSION_V2, type_),
- vrid, priority, count_ip,
- auth_type, max_adver_int, checksum,
- addrconv.ipv4.text_to_bin(ip_address),
- auth_data[0], auth_data[1])
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.type_, self.vrrpv2.type)
- eq_(self.vrid, self.vrrpv2.vrid)
- eq_(self.priority, self.vrrpv2.priority)
- eq_(self.count_ip, self.vrrpv2.count_ip)
- eq_(self.auth_type, self.vrrpv2.auth_type)
- eq_(1, len(self.vrrpv2.ip_addresses))
- eq_(self.ip_address, self.vrrpv2.ip_addresses[0])
- eq_(self.auth_data, self.vrrpv2.auth_data)
-
- def test_parser(self):
- vrrpv2, _cls, _ = self.vrrpv2.parser(self.buf)
-
- eq_(self.version, vrrpv2.version)
- eq_(self.type_, vrrpv2.type)
- eq_(self.vrid, vrrpv2.vrid)
- eq_(self.priority, vrrpv2.priority)
- eq_(self.count_ip, vrrpv2.count_ip)
- eq_(self.auth_type, vrrpv2.auth_type)
- eq_(self.max_adver_int, vrrpv2.max_adver_int)
- eq_(self.checksum, vrrpv2.checksum)
- eq_(1, len(vrrpv2.ip_addresses))
- eq_(str, type(vrrpv2.ip_addresses[0]))
- eq_(self.ip_address, vrrpv2.ip_addresses[0])
- eq_(self.auth_data, vrrpv2.auth_data)
-
- def test_serialize(self):
- src_ip = '192.168.0.1'
- dst_ip = vrrp.VRRP_IPV4_DST_ADDRESS
- prev = ipv4.ipv4(4, 5, 0, 0, 0, 0, 0, vrrp.VRRP_IPV4_TTL,
- inet.IPPROTO_VRRP, 0, src_ip, dst_ip)
-
- type_ = vrrp.VRRP_TYPE_ADVERTISEMENT
- vrid = 5
- priority = 10
- max_adver_int = 30
- ip_address = '192.168.0.2'
- ip_addresses = [ip_address]
-
- vrrp_ = vrrp.vrrpv2.create(
- type_, vrid, priority, max_adver_int, ip_addresses)
-
- buf = vrrp_.serialize(bytearray(), prev)
- pack_str = vrrp.vrrpv2._PACK_STR + '4sII'
- pack_len = struct.calcsize(pack_str)
- res = struct.unpack(pack_str, six.binary_type(buf))
- eq_(res[0], vrrp.vrrp_to_version_type(vrrp.VRRP_VERSION_V2, type_))
- eq_(res[1], vrid)
- eq_(res[2], priority)
- eq_(res[3], len(ip_addresses))
- eq_(res[4], vrrp.VRRP_AUTH_NO_AUTH)
- eq_(res[5], max_adver_int)
- # res[6] is checksum
- eq_(res[7], addrconv.ipv4.text_to_bin(ip_address))
- eq_(res[8], 0)
- eq_(res[9], 0)
- eq_(len(buf), pack_len)
-
- # checksum
- s = packet_utils.checksum(buf)
- eq_(0, s)
-
- @raises(Exception)
- def test_malformed_vrrpv2(self):
- m_short_buf = self.buf[1:vrrp.vrrpv2._MIN_LEN]
- vrrp.vrrp.parser(m_short_buf)
-
- def test_create_packet(self):
- primary_ip = '192.168.0.2'
- p0 = self.vrrpv2.create_packet(primary_ip)
- p0.serialize()
- p1 = packet.Packet(six.binary_type(p0.data))
- p1.serialize()
- eq_(p0.data, p1.data)
-
- def _test_is_valid(self, type_=None, vrid=None, priority=None,
- max_adver_int=None):
- if type_ is None:
- type_ = self.type_
- if vrid is None:
- vrid = self.vrid
- if priority is None:
- priority = self.priority
- if max_adver_int is None:
- max_adver_int = self.max_adver_int
-
- vrrp_ = vrrp.vrrpv2.create(type_, vrid, priority, max_adver_int,
- [self.ip_address])
- return vrrp_.is_valid()
-
- def test_is_valid_ok(self):
- ok_(self._test_is_valid())
-
- def test_is_valid_ng_type(self):
- ok_(not self._test_is_valid(type_=15))
-
- def test_is_valid_ng_vrid_min(self):
- vrid = vrrp.VRRP_VRID_MIN - 1
- ok_(not self._test_is_valid(vrid=vrid))
-
- def test_is_valid_ng_vrid_max(self):
- vrid = vrrp.VRRP_VRID_MAX + 1
- ok_(not self._test_is_valid(vrid=vrid))
-
- def test_is_valid_ng_priority_min(self):
- priority = vrrp.VRRP_PRIORITY_MIN - 1
- ok_(not self._test_is_valid(priority=priority))
-
- def test_is_valid_ng_priority_max(self):
- priority = vrrp.VRRP_PRIORITY_MAX + 1
- ok_(not self._test_is_valid(priority=priority))
-
- def test_is_valid_ng_adver_min(self):
- max_adver_int = vrrp.VRRP_V2_MAX_ADVER_INT_MIN - 1
- ok_(not self._test_is_valid(max_adver_int=max_adver_int))
-
- def test_is_valid_ng_adver_max(self):
- max_adver_int = vrrp.VRRP_V2_MAX_ADVER_INT_MAX + 1
- ok_(not self._test_is_valid(max_adver_int=max_adver_int))
-
- def test_to_string(self):
- vrrpv2_values = {'version': self.version,
- 'type': self.type_,
- 'vrid': self.vrid,
- 'priority': self.priority,
- 'count_ip': self.count_ip,
- 'max_adver_int': self.max_adver_int,
- 'checksum': self.vrrpv2.checksum,
- 'ip_addresses': [self.ip_address],
- 'auth_type': self.auth_type,
- 'auth_data': self.auth_data,
- 'identification': self.vrrpv2.identification}
- _vrrpv2_str = ','.join(['%s=%s' % (k, repr(vrrpv2_values[k]))
- for k, v in inspect.getmembers(self.vrrpv2)
- if k in vrrpv2_values])
- vrrpv2_str = '%s(%s)' % (vrrp.vrrpv2.__name__, _vrrpv2_str)
-
- eq_(str(self.vrrpv2), vrrpv2_str)
- eq_(repr(self.vrrpv2), vrrpv2_str)
-
-
-class Test_vrrpv3_ipv4(unittest.TestCase):
- """ Test case for vrrp v3 IPv4
- """
- version = vrrp.VRRP_VERSION_V3
- type_ = vrrp.VRRP_TYPE_ADVERTISEMENT
- vrid = 128
- priority = 99
- count_ip = 1
- max_adver_int = 111
- checksum = 0
- ip_address = '192.168.0.1'
- vrrpv3 = vrrp.vrrpv3.create(type_, vrid, priority, max_adver_int,
- [ip_address])
- buf = struct.pack(vrrp.vrrpv3._PACK_STR + '4s',
- vrrp.vrrp_to_version_type(vrrp.VRRP_VERSION_V3, type_),
- vrid, priority, count_ip,
- max_adver_int, checksum,
- addrconv.ipv4.text_to_bin(ip_address))
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.type_, self.vrrpv3.type)
- eq_(self.vrid, self.vrrpv3.vrid)
- eq_(self.priority, self.vrrpv3.priority)
- eq_(self.count_ip, self.vrrpv3.count_ip)
- eq_(1, len(self.vrrpv3.ip_addresses))
- eq_(self.ip_address, self.vrrpv3.ip_addresses[0])
-
- def test_parser(self):
- vrrpv3, _cls, _ = self.vrrpv3.parser(self.buf)
-
- eq_(self.version, vrrpv3.version)
- eq_(self.type_, vrrpv3.type)
- eq_(self.vrid, vrrpv3.vrid)
- eq_(self.priority, vrrpv3.priority)
- eq_(self.count_ip, vrrpv3.count_ip)
- eq_(self.max_adver_int, vrrpv3.max_adver_int)
- eq_(self.checksum, vrrpv3.checksum)
- eq_(1, len(vrrpv3.ip_addresses))
- eq_(str, type(vrrpv3.ip_addresses[0]))
- eq_(self.ip_address, vrrpv3.ip_addresses[0])
-
- def test_serialize(self):
- src_ip = '192.168.0.1'
- dst_ip = vrrp.VRRP_IPV4_DST_ADDRESS
- prev = ipv4.ipv4(4, 5, 0, 0, 0, 0, 0, vrrp.VRRP_IPV4_TTL,
- inet.IPPROTO_VRRP, 0, src_ip, dst_ip)
-
- type_ = vrrp.VRRP_TYPE_ADVERTISEMENT
- vrid = 5
- priority = 10
- max_adver_int = 30
- ip_address = '192.168.0.2'
- ip_addresses = [ip_address]
-
- vrrp_ = vrrp.vrrpv3.create(
- type_, vrid, priority, max_adver_int, ip_addresses)
-
- buf = vrrp_.serialize(bytearray(), prev)
- print(len(buf), type(buf), buf)
- pack_str = vrrp.vrrpv3._PACK_STR + '4s'
- pack_len = struct.calcsize(pack_str)
- res = struct.unpack(pack_str, six.binary_type(buf))
- eq_(res[0], vrrp.vrrp_to_version_type(vrrp.VRRP_VERSION_V3, type_))
- eq_(res[1], vrid)
- eq_(res[2], priority)
- eq_(res[3], len(ip_addresses))
- eq_(res[4], max_adver_int)
- # res[5] is checksum
- eq_(res[6], addrconv.ipv4.text_to_bin(ip_address))
- eq_(len(buf), pack_len)
- print(res)
-
- # checksum
- ph = struct.pack('!4s4sxBH',
- addrconv.ipv4.text_to_bin(src_ip),
- addrconv.ipv4.text_to_bin(dst_ip),
- inet.IPPROTO_VRRP, pack_len)
- s = packet_utils.checksum(ph + buf)
- eq_(0, s)
-
- @raises(Exception)
- def test_malformed_vrrpv3(self):
- m_short_buf = self.buf[1:vrrp.vrrpv3._MIN_LEN]
- vrrp.vrrp.parser(m_short_buf)
-
- def test_create_packet(self):
- primary_ip = '192.168.0.2'
- p0 = self.vrrpv3.create_packet(primary_ip)
- p0.serialize()
- p1 = packet.Packet(six.binary_type(p0.data))
- p1.serialize()
- eq_(p0.data, p1.data)
-
- def _test_is_valid(self, type_=None, vrid=None, priority=None,
- max_adver_int=None):
- if type_ is None:
- type_ = self.type_
- if vrid is None:
- vrid = self.vrid
- if priority is None:
- priority = self.priority
- if max_adver_int is None:
- max_adver_int = self.max_adver_int
-
- vrrp_ = vrrp.vrrpv3.create(type_, vrid, priority, max_adver_int,
- [self.ip_address])
- return vrrp_.is_valid()
-
- def test_is_valid_ok(self):
- ok_(self._test_is_valid())
-
- def test_is_valid_ng_type(self):
- ok_(not self._test_is_valid(type_=15))
-
- def test_is_valid_ng_vrid_min(self):
- vrid = vrrp.VRRP_VRID_MIN - 1
- ok_(not self._test_is_valid(vrid=vrid))
-
- def test_is_valid_ng_vrid_max(self):
- vrid = vrrp.VRRP_VRID_MAX + 1
- ok_(not self._test_is_valid(vrid=vrid))
-
- def test_is_valid_ng_priority_min(self):
- priority = vrrp.VRRP_PRIORITY_MIN - 1
- ok_(not self._test_is_valid(priority=priority))
-
- def test_is_valid_ng_priority_max(self):
- priority = vrrp.VRRP_PRIORITY_MAX + 1
- ok_(not self._test_is_valid(priority=priority))
-
- def test_is_valid_ng_adver_min(self):
- max_adver_int = vrrp.VRRP_V3_MAX_ADVER_INT_MIN - 1
- ok_(not self._test_is_valid(max_adver_int=max_adver_int))
-
- def test_is_valid_ng_adver_max(self):
- max_adver_int = vrrp.VRRP_V3_MAX_ADVER_INT_MAX + 1
- ok_(not self._test_is_valid(max_adver_int=max_adver_int))
-
- def test_to_string(self):
- vrrpv3_values = {'version': self.version,
- 'type': self.type_,
- 'vrid': self.vrid,
- 'priority': self.priority,
- 'count_ip': self.count_ip,
- 'max_adver_int': self.max_adver_int,
- 'checksum': self.vrrpv3.checksum,
- 'ip_addresses': [self.ip_address],
- 'auth_type': None,
- 'auth_data': None,
- 'identification': self.vrrpv3.identification}
- _vrrpv3_str = ','.join(['%s=%s' % (k, repr(vrrpv3_values[k]))
- for k, v in inspect.getmembers(self.vrrpv3)
- if k in vrrpv3_values])
- vrrpv3_str = '%s(%s)' % (vrrp.vrrpv3.__name__, _vrrpv3_str)
-
- eq_(str(self.vrrpv3), vrrpv3_str)
- eq_(repr(self.vrrpv3), vrrpv3_str)
-
-
-class Test_vrrpv3_ipv6(unittest.TestCase):
- """ Test case for vrrp v3 IPv6
- """
- version = vrrp.VRRP_VERSION_V3
- type_ = vrrp.VRRP_TYPE_ADVERTISEMENT
- vrid = 128
- priority = 99
- count_ip = 1
- max_adver_int = 111
- checksum = 0
- ip_address = '2001:db8:2000::1'
- vrrpv3 = vrrp.vrrpv3.create(type_, vrid, priority, max_adver_int,
- [ip_address])
- buf = struct.pack(vrrp.vrrpv3._PACK_STR + '16s',
- vrrp.vrrp_to_version_type(vrrp.VRRP_VERSION_V3, type_),
- vrid, priority, count_ip,
- max_adver_int, checksum,
- addrconv.ipv6.text_to_bin(ip_address))
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_init(self):
- eq_(self.type_, self.vrrpv3.type)
- eq_(self.vrid, self.vrrpv3.vrid)
- eq_(self.priority, self.vrrpv3.priority)
- eq_(self.count_ip, self.vrrpv3.count_ip)
- eq_(1, len(self.vrrpv3.ip_addresses))
- eq_(self.ip_address, self.vrrpv3.ip_addresses[0])
-
- def test_parser(self):
- vrrpv3, _cls, _ = self.vrrpv3.parser(self.buf)
-
- eq_(self.version, vrrpv3.version)
- eq_(self.type_, vrrpv3.type)
- eq_(self.vrid, vrrpv3.vrid)
- eq_(self.priority, vrrpv3.priority)
- eq_(self.count_ip, vrrpv3.count_ip)
- eq_(self.max_adver_int, vrrpv3.max_adver_int)
- eq_(self.checksum, vrrpv3.checksum)
- eq_(1, len(vrrpv3.ip_addresses))
- eq_(str, type(vrrpv3.ip_addresses[0]))
- eq_(self.ip_address, vrrpv3.ip_addresses[0])
-
- def test_serialize(self):
- src_ip = '2001:db8:2000::1'
- dst_ip = vrrp.VRRP_IPV6_DST_ADDRESS
- prev = ipv6.ipv6(6, 0, 0, 0, inet.IPPROTO_VRRP,
- vrrp.VRRP_IPV6_HOP_LIMIT, src_ip, dst_ip)
-
- type_ = vrrp.VRRP_TYPE_ADVERTISEMENT
- vrid = 5
- priority = 10
- max_adver_int = 30
- ip_address = '2001:db8:2000::2'
- ip_addresses = [ip_address]
-
- vrrp_ = vrrp.vrrpv3.create(
- type_, vrid, priority, max_adver_int, ip_addresses)
-
- buf = vrrp_.serialize(bytearray(), prev)
- print(len(buf), type(buf), buf)
- pack_str = vrrp.vrrpv3._PACK_STR + '16s'
- pack_len = struct.calcsize(pack_str)
- res = struct.unpack(pack_str, six.binary_type(buf))
- eq_(res[0], vrrp.vrrp_to_version_type(vrrp.VRRP_VERSION_V3, type_))
- eq_(res[1], vrid)
- eq_(res[2], priority)
- eq_(res[3], len(ip_addresses))
- eq_(res[4], max_adver_int)
- # res[5] is checksum
- eq_(res[6], addrconv.ipv6.text_to_bin(ip_address))
- eq_(len(buf), pack_len)
- print(res)
-
- # checksum
- ph = struct.pack('!16s16sI3xB',
- addrconv.ipv6.text_to_bin(src_ip),
- addrconv.ipv6.text_to_bin(dst_ip),
- pack_len, inet.IPPROTO_VRRP)
- s = packet_utils.checksum(ph + buf)
- eq_(0, s)
-
- @raises(Exception)
- def test_malformed_vrrpv3(self):
- m_short_buf = self.buf[1:vrrp.vrrpv3._MIN_LEN]
- vrrp.vrrp.parser(m_short_buf)
-
- def test_create_packet(self):
- primary_ip = '2001:db8:2000::3'
- p0 = self.vrrpv3.create_packet(primary_ip)
- p0.serialize()
- print(len(p0.data), p0.data)
- p1 = packet.Packet(six.binary_type(p0.data))
- p1.serialize()
- print(len(p0.data), p0.data)
- print(len(p1.data), p1.data)
- eq_(p0.data, p1.data)
-
- def test_to_string(self):
- vrrpv3_values = {'version': self.version,
- 'type': self.type_,
- 'vrid': self.vrid,
- 'priority': self.priority,
- 'count_ip': self.count_ip,
- 'max_adver_int': self.max_adver_int,
- 'checksum': self.vrrpv3.checksum,
- 'ip_addresses': [self.ip_address],
- 'auth_type': None,
- 'auth_data': None,
- 'identification': self.vrrpv3.identification}
- _vrrpv3_str = ','.join(['%s=%s' % (k, repr(vrrpv3_values[k]))
- for k, v in inspect.getmembers(self.vrrpv3)
- if k in vrrpv3_values])
- vrrpv3_str = '%s(%s)' % (vrrp.vrrpv3.__name__, _vrrpv3_str)
-
- eq_(str(self.vrrpv3), vrrpv3_str)
- eq_(repr(self.vrrpv3), vrrpv3_str)
diff --git a/tests/unit/packet/test_vxlan.py b/tests/unit/packet/test_vxlan.py
deleted file mode 100644
index 8cace581..00000000
--- a/tests/unit/packet/test_vxlan.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-import unittest
-
-from nose.tools import eq_
-from nose.tools import raises
-
-from ryu.lib.packet import ethernet
-from ryu.lib.packet import vxlan
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_vxlan(unittest.TestCase):
- """
- Test case for VXLAN (RFC 7348) header encoder/decoder class.
- """
-
- vni = 0x123456
- buf = (
- b'\x08\x00\x00\x00' # flags = R|R|R|R|I|R|R|R (8 bits)
- b'\x12\x34\x56\x00' # vni = 0x123456 (24 bits)
- b'test_payload' # for test
- )
- pkt = vxlan.vxlan(vni)
- jsondict = {
- 'vxlan': {
- 'vni': vni
- }
- }
-
- def test_init(self):
- eq_(self.vni, self.pkt.vni)
-
- def test_parser(self):
- parsed_pkt, next_proto_cls, rest_buf = vxlan.vxlan.parser(self.buf)
- eq_(self.vni, parsed_pkt.vni)
- eq_(ethernet.ethernet, next_proto_cls)
- eq_(b'test_payload', rest_buf)
-
- @raises(AssertionError)
- def test_invalid_flags(self):
- invalid_flags_bug = (
- b'\x00\x00\x00\x00' # all bits are set to zero
- b'\x12\x34\x56\x00' # vni = 0x123456 (24 bits)
- )
- vxlan.vxlan.parser(invalid_flags_bug)
-
- def test_serialize(self):
- serialized_buf = self.pkt.serialize(payload=None, prev=None)
- eq_(self.buf[:vxlan.vxlan._MIN_LEN], serialized_buf)
-
- def test_from_jsondict(self):
- pkt_from_json = vxlan.vxlan.from_jsondict(
- self.jsondict[vxlan.vxlan.__name__])
- eq_(self.vni, pkt_from_json.vni)
-
- def test_to_jsondict(self):
- jsondict_from_pkt = self.pkt.to_jsondict()
- eq_(self.jsondict, jsondict_from_pkt)
-
- def test_vni_from_bin(self):
- vni = vxlan.vni_from_bin(b'\x12\x34\x56')
- eq_(self.vni, vni)
-
- def test_vni_to_bin(self):
- eq_(b'\x12\x34\x56', vxlan.vni_to_bin(self.vni))
diff --git a/tests/unit/packet/test_zebra.py b/tests/unit/packet/test_zebra.py
deleted file mode 100644
index 19ff88de..00000000
--- a/tests/unit/packet/test_zebra.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import print_function
-
-import os
-import sys
-import unittest
-
-from nose.tools import eq_
-from nose.tools import ok_
-import six
-
-from ryu.lib import pcaplib
-from ryu.lib.packet import packet
-from ryu.lib.packet import zebra
-from ryu.utils import binary_str
-
-
-PCAP_DATA_DIR = os.path.join(
- os.path.dirname(sys.modules[__name__].__file__),
- '../../packet_data/pcap/')
-
-
-class Test_zebra(unittest.TestCase):
- """
- Test case for ryu.lib.packet.zebra.
- """
-
- def test_pcap(self):
- files = [
- 'zebra_v2',
- 'zebra_v3',
- ]
-
- for f in files:
- zebra_pcap_file = os.path.join(PCAP_DATA_DIR, f + '.pcap')
- # print('*** testing %s' % zebra_pcap_file)
-
- for _, buf in pcaplib.Reader(open(zebra_pcap_file, 'rb')):
- # Checks if Zebra message can be parsed as expected.
- pkt = packet.Packet(buf)
- zebra_pkts = pkt.get_protocols(zebra.ZebraMessage)
- for zebra_pkt in zebra_pkts:
- ok_(isinstance(zebra_pkt, zebra.ZebraMessage),
- 'Failed to parse Zebra message: %s' % pkt)
- ok_(not isinstance(pkt.protocols[-1],
- (six.binary_type, bytearray)),
- 'Some messages could not be parsed: %s' % pkt)
-
- # Checks if Zebra message can be serialized as expected.
- pkt.serialize()
- eq_(buf, pkt.data,
- "b'%s' != b'%s'" % (binary_str(buf), binary_str(pkt.data)))
diff --git a/tests/unit/sample/__init__.py b/tests/unit/sample/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/sample/__init__.py
+++ /dev/null
diff --git a/tests/unit/sample/test_sample1.py b/tests/unit/sample/test_sample1.py
deleted file mode 100644
index b4963556..00000000
--- a/tests/unit/sample/test_sample1.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-from nose.tools import ok_, eq_
-# from ryu.app.simple_switch import SimpleSwitch
-
-import logging
-
-
-LOG = logging.getLogger('tests.test_sample1')
-
-
-class TestSample1(unittest.TestCase):
-
- def testS1Func1(self):
- LOG.debug('testS1Func1 - START')
- ok_(True)
-
- def testS1Func2(self):
- ok_(True)
diff --git a/tests/unit/sample/test_sample2.py b/tests/unit/sample/test_sample2.py
deleted file mode 100644
index 9c21a42a..00000000
--- a/tests/unit/sample/test_sample2.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-import unittest
-from nose.tools import ok_, eq_
-# from ryu.app.simple_switch import SimpleSwitch
-
-
-class TestSample2(unittest.TestCase):
-
- def testS2Func1(self):
- ok_(True)
-
- def testS2Func2(self):
- ok_(True)
diff --git a/tests/unit/services/__init__.py b/tests/unit/services/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/services/__init__.py
+++ /dev/null
diff --git a/tests/unit/services/protocols/__init__.py b/tests/unit/services/protocols/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/services/protocols/__init__.py
+++ /dev/null
diff --git a/tests/unit/services/protocols/bgp/__init__.py b/tests/unit/services/protocols/bgp/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/services/protocols/bgp/__init__.py
+++ /dev/null
diff --git a/tests/unit/services/protocols/bgp/core_managers/__init__.py b/tests/unit/services/protocols/bgp/core_managers/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/services/protocols/bgp/core_managers/__init__.py
+++ /dev/null
diff --git a/tests/unit/services/protocols/bgp/core_managers/test_table_manager.py b/tests/unit/services/protocols/bgp/core_managers/test_table_manager.py
deleted file mode 100644
index c9c9f55e..00000000
--- a/tests/unit/services/protocols/bgp/core_managers/test_table_manager.py
+++ /dev/null
@@ -1,937 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from collections import OrderedDict
-import unittest
-import logging
-try:
- import mock # Python 2
-except ImportError:
- from unittest import mock # Python 3
-
-from nose.tools import ok_, eq_, raises
-
-from ryu.lib.packet.bgp import BGPPathAttributeOrigin
-from ryu.lib.packet.bgp import BGPPathAttributeAsPath
-from ryu.lib.packet.bgp import BGP_ATTR_ORIGIN_IGP
-from ryu.lib.packet.bgp import BGP_ATTR_TYPE_ORIGIN
-from ryu.lib.packet.bgp import BGP_ATTR_TYPE_AS_PATH
-from ryu.lib.packet.bgp import BGP_ATTR_TYPE_EXTENDED_COMMUNITIES
-from ryu.lib.packet.bgp import IPAddrPrefix
-from ryu.lib.packet.bgp import IP6AddrPrefix
-from ryu.lib.packet.bgp import EvpnArbitraryEsi
-from ryu.lib.packet.bgp import EvpnLACPEsi
-from ryu.lib.packet.bgp import EvpnEthernetAutoDiscoveryNLRI
-from ryu.lib.packet.bgp import EvpnMacIPAdvertisementNLRI
-from ryu.lib.packet.bgp import EvpnInclusiveMulticastEthernetTagNLRI
-from ryu.lib.packet.bgp import FlowSpecIPv4NLRI
-from ryu.lib.packet.bgp import BGPPathAttributeExtendedCommunities
-from ryu.services.protocols.bgp.bgpspeaker import EVPN_MAX_ET
-from ryu.services.protocols.bgp.bgpspeaker import ESI_TYPE_LACP
-from ryu.services.protocols.bgp.bgpspeaker import FLOWSPEC_FAMILY_IPV4
-from ryu.services.protocols.bgp.bgpspeaker import FLOWSPEC_FAMILY_VPNV4
-from ryu.services.protocols.bgp.bgpspeaker import FLOWSPEC_TA_SAMPLE
-from ryu.services.protocols.bgp.bgpspeaker import FLOWSPEC_TA_TERMINAL
-from ryu.services.protocols.bgp.core import BgpCoreError
-from ryu.services.protocols.bgp.core_managers import table_manager
-from ryu.services.protocols.bgp.rtconf.vrfs import VRF_RF_IPV4
-from ryu.services.protocols.bgp.rtconf.vrfs import VRF_RF_IPV6
-from ryu.services.protocols.bgp.rtconf.vrfs import VRF_RF_L2_EVPN
-from ryu.services.protocols.bgp.rtconf.vrfs import VRF_RF_IPV4_FLOWSPEC
-from ryu.services.protocols.bgp.utils.bgp import create_v4flowspec_actions
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_TableCoreManager(unittest.TestCase):
- """
- Test case for bgp.core_managers.table_manager.TableCoreManager
- """
-
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.__init__',
- mock.MagicMock(return_value=None))
- def _test_update_vrf_table(self, prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- is_withdraw=False, **kwargs):
- # Instantiate TableCoreManager
- tbl_mng = table_manager.TableCoreManager(None, None)
- vrf_table_mock = mock.MagicMock()
- tbl_mng._tables = {(route_dist, route_family): vrf_table_mock}
-
- # Test
- tbl_mng.update_vrf_table(
- route_dist=route_dist,
- prefix=prefix_str,
- next_hop=next_hop,
- route_family=route_family,
- route_type=route_type,
- is_withdraw=is_withdraw,
- **kwargs)
-
- # Check
- call_args_list = vrf_table_mock.insert_vrf_path.call_args_list
- ok_(len(call_args_list) == 1) # insert_vrf_path should be called once
- args, kwargs = call_args_list[0]
- ok_(len(args) == 0) # no positional argument
- eq_(str(prefix_inst), str(kwargs['nlri']))
- eq_(is_withdraw, kwargs['is_withdraw'])
- if is_withdraw:
- eq_(None, kwargs['next_hop'])
- eq_(False, kwargs['gen_lbl'])
- else:
- eq_(next_hop, kwargs['next_hop'])
- eq_(True, kwargs['gen_lbl'])
-
- def test_update_vrf_table_ipv4(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = '192.168.0.0'
- ip_prefix_len = 24
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- prefix_inst = IPAddrPrefix(ip_prefix_len, ip_network)
- next_hop = '10.0.0.1'
- route_family = VRF_RF_IPV4
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- def test_update_vrf_table_ipv6(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = 'fe80::'
- ip_prefix_len = 64
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- prefix_inst = IP6AddrPrefix(ip_prefix_len, ip_network)
- next_hop = 'fe80::0011:aabb:ccdd:eeff'
- route_family = VRF_RF_IPV6
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- def test_update_vrf_table_l2_evpn_with_esi_int(self):
- # Prepare test data
- route_dist = '65000:100'
- prefix_str = None # should be ignored
- kwargs = {
- 'ethernet_tag_id': 100,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'ip_addr': '192.168.0.1',
- 'mpls_labels': [], # not be used
- }
- esi = EvpnArbitraryEsi(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00')
- prefix_inst = EvpnMacIPAdvertisementNLRI(
- route_dist=route_dist,
- esi=esi,
- **kwargs)
- next_hop = '10.0.0.1'
- route_family = VRF_RF_L2_EVPN
- route_type = EvpnMacIPAdvertisementNLRI.ROUTE_TYPE_NAME
- kwargs['esi'] = 0
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- def test_update_vrf_table_l2_evpn_with_esi_dict(self):
- # Prepare test data
- route_dist = '65000:100'
- prefix_str = None # should be ignored
- kwargs = {
- 'ethernet_tag_id': EVPN_MAX_ET,
- }
- esi = EvpnLACPEsi(mac_addr='aa:bb:cc:dd:ee:ff', port_key=100)
- prefix_inst = EvpnEthernetAutoDiscoveryNLRI(
- route_dist=route_dist,
- esi=esi,
- **kwargs)
- next_hop = '0.0.0.0'
- route_family = VRF_RF_L2_EVPN
- route_type = EvpnEthernetAutoDiscoveryNLRI.ROUTE_TYPE_NAME
- kwargs['esi'] = {
- 'type': ESI_TYPE_LACP,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'port_key': 100,
- }
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- def test_update_vrf_table_l2_evpn_without_esi(self):
- # Prepare test data
- route_dist = '65000:100'
- prefix_str = None # should be ignored
- kwargs = {
- 'ethernet_tag_id': 100,
- 'ip_addr': '192.168.0.1',
- }
- prefix_inst = EvpnInclusiveMulticastEthernetTagNLRI(
- route_dist=route_dist, **kwargs)
- next_hop = '10.0.0.1'
- route_family = VRF_RF_L2_EVPN
- route_type = EvpnInclusiveMulticastEthernetTagNLRI.ROUTE_TYPE_NAME
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.__init__',
- mock.MagicMock(return_value=None))
- def test_update_vrf_table_l2_evpn_with_vni(self):
- # Prepare test data
- route_dist = '65000:100'
- prefix_str = None # should be ignored
- kwargs = {
- 'ethernet_tag_id': 100,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'ip_addr': '192.168.0.1',
- 'vni': 500,
- }
- esi = EvpnArbitraryEsi(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00')
- prefix_inst = EvpnMacIPAdvertisementNLRI(
- route_dist=route_dist,
- esi=esi,
- **kwargs)
- next_hop = '10.0.0.1'
- route_family = VRF_RF_L2_EVPN
- route_type = EvpnMacIPAdvertisementNLRI.ROUTE_TYPE_NAME
- tunnel_type = 'vxlan'
- kwargs['esi'] = 0
-
- # Instantiate TableCoreManager
- tbl_mng = table_manager.TableCoreManager(None, None)
- vrf_table_mock = mock.MagicMock()
- tbl_mng._tables = {(route_dist, route_family): vrf_table_mock}
-
- # Test
- tbl_mng.update_vrf_table(
- route_dist=route_dist,
- prefix=prefix_str,
- next_hop=next_hop,
- route_family=route_family,
- route_type=route_type,
- tunnel_type=tunnel_type,
- **kwargs)
-
- # Check
- call_args_list = vrf_table_mock.insert_vrf_path.call_args_list
- ok_(len(call_args_list) == 1) # insert_vrf_path should be called once
- args, kwargs = call_args_list[0]
- ok_(len(args) == 0) # no positional argument
- eq_(str(prefix_inst), str(kwargs['nlri']))
- eq_(next_hop, kwargs['next_hop'])
- eq_(False, kwargs['gen_lbl']) # should not generate MPLS labels
- eq_(tunnel_type, kwargs['tunnel_type'])
-
- def test_update_vrf_table_ipv4_withdraw(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = '192.168.0.0'
- ip_prefix_len = 24
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- prefix_inst = IPAddrPrefix(ip_prefix_len, ip_network)
- next_hop = '10.0.0.1'
- route_family = VRF_RF_IPV4
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- is_withdraw=True, **kwargs)
-
- @raises(BgpCoreError)
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.__init__',
- mock.MagicMock(return_value=None))
- def test_update_vrf_table_no_vrf(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = '192.168.0.0'
- ip_prefix_len = 24
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- next_hop = '10.0.0.1'
- route_family = VRF_RF_IPV4
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- # Instantiate TableCoreManager
- tbl_mng = table_manager.TableCoreManager(None, None)
- tbl_mng._tables = {} # no table
-
- # Test
- tbl_mng.update_vrf_table(
- route_dist=route_dist,
- prefix=prefix_str,
- next_hop=next_hop,
- route_family=route_family,
- route_type=route_type,
- **kwargs)
-
- @raises(BgpCoreError)
- def test_update_vrf_table_invalid_next_hop(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = '192.168.0.0'
- ip_prefix_len = 24
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- prefix_inst = IPAddrPrefix(ip_prefix_len, ip_network)
- next_hop = 'xxx.xxx.xxx.xxx' # invalid
- route_family = VRF_RF_IPV4
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- @raises(BgpCoreError)
- def test_update_vrf_table_invalid_ipv4_prefix(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = 'xxx.xxx.xxx.xxx' # invalid
- ip_prefix_len = 24
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- prefix_inst = IPAddrPrefix(ip_prefix_len, ip_network)
- next_hop = '10.0.0.1'
- route_family = VRF_RF_IPV4
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- @raises(BgpCoreError)
- def test_update_vrf_table_invalid_ipv6_prefix(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = 'xxxx::' # invalid
- ip_prefix_len = 64
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- prefix_inst = IP6AddrPrefix(ip_prefix_len, ip_network)
- next_hop = 'fe80::0011:aabb:ccdd:eeff'
- route_family = VRF_RF_IPV6
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- @raises(BgpCoreError)
- def test_update_vrf_table_invalid_route_family(self):
- # Prepare test data
- route_dist = '65000:100'
- ip_network = '192.168.0.0'
- ip_prefix_len = 24
- prefix_str = '%s/%d' % (ip_network, ip_prefix_len)
- prefix_inst = IPAddrPrefix(ip_prefix_len, ip_network)
- next_hop = '10.0.0.1'
- route_family = 'foobar' # invalid
- route_type = None # should be ignored
- kwargs = {} # should be ignored
-
- self._test_update_vrf_table(prefix_inst, route_dist, prefix_str,
- next_hop, route_family, route_type,
- **kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.learn_path')
- def _test_update_global_table(self, learn_path_mock, prefix, next_hop,
- is_withdraw, expected_next_hop):
- # Prepare test data
- origin = BGPPathAttributeOrigin(BGP_ATTR_ORIGIN_IGP)
- aspath = BGPPathAttributeAsPath([[]])
- pathattrs = OrderedDict()
- pathattrs[BGP_ATTR_TYPE_ORIGIN] = origin
- pathattrs[BGP_ATTR_TYPE_AS_PATH] = aspath
- pathattrs = str(pathattrs)
-
- # Instantiate TableCoreManager
- tbl_mng = table_manager.TableCoreManager(None, None)
-
- # Test
- tbl_mng.update_global_table(
- prefix=prefix,
- next_hop=next_hop,
- is_withdraw=is_withdraw,
- )
-
- # Check
- call_args_list = learn_path_mock.call_args_list
- ok_(len(call_args_list) == 1) # learn_path should be called once
- args, kwargs = call_args_list[0]
- ok_(len(kwargs) == 0) # no keyword argument
- output_path = args[0]
- eq_(None, output_path.source)
- eq_(prefix, output_path.nlri.prefix)
- eq_(pathattrs, str(output_path.pathattr_map))
- eq_(expected_next_hop, output_path.nexthop)
- eq_(is_withdraw, output_path.is_withdraw)
-
- def test_update_global_table_ipv4(self):
- self._test_update_global_table(
- prefix='192.168.0.0/24',
- next_hop='10.0.0.1',
- is_withdraw=False,
- expected_next_hop='10.0.0.1',
- )
-
- def test_update_global_table_ipv4_withdraw(self):
- self._test_update_global_table(
- prefix='192.168.0.0/24',
- next_hop='10.0.0.1',
- is_withdraw=True,
- expected_next_hop='10.0.0.1',
- )
-
- def test_update_global_table_ipv4_no_next_hop(self):
- self._test_update_global_table(
- prefix='192.168.0.0/24',
- next_hop=None,
- is_withdraw=True,
- expected_next_hop='0.0.0.0',
- )
-
- def test_update_global_table_ipv6(self):
- self._test_update_global_table(
- prefix='fe80::/64',
- next_hop='fe80::0011:aabb:ccdd:eeff',
- is_withdraw=False,
- expected_next_hop='fe80::0011:aabb:ccdd:eeff',
- )
-
- def test_update_global_table_ipv6_withdraw(self):
- self._test_update_global_table(
- prefix='fe80::/64',
- next_hop='fe80::0011:aabb:ccdd:eeff',
- is_withdraw=True,
- expected_next_hop='fe80::0011:aabb:ccdd:eeff',
- )
-
- def test_update_global_table_ipv6_no_next_hop(self):
- self._test_update_global_table(
- prefix='fe80::/64',
- next_hop=None,
- is_withdraw=True,
- expected_next_hop='::',
- )
-
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.__init__',
- mock.MagicMock(return_value=None))
- def _test_update_flowspec_vrf_table(self, flowspec_family, route_family,
- route_dist, rules, prefix,
- is_withdraw, actions=None):
- # Instantiate TableCoreManager
- tbl_mng = table_manager.TableCoreManager(None, None)
- vrf_table_mock = mock.MagicMock()
- tbl_mng._tables = {(route_dist, route_family): vrf_table_mock}
-
- # Test
- tbl_mng.update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_dist=route_dist,
- rules=rules,
- actions=actions,
- is_withdraw=is_withdraw,
- )
-
- # Check
- call_args_list = vrf_table_mock.insert_vrffs_path.call_args_list
- ok_(len(
- call_args_list) == 1) # insert_vrffs_path should be called once
- args, kwargs = call_args_list[0]
- ok_(len(args) == 0) # no positional argument
- eq_(prefix, kwargs['nlri'].prefix)
- eq_(is_withdraw, kwargs['is_withdraw'])
-
- def test_update_flowspec_vrf_table_vpnv4(self):
- flowspec_family = 'vpnv4fs'
- route_family = 'ipv4fs'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '10.70.1.0/24',
- }
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- }
- prefix = 'ipv4fs(dst_prefix:10.70.1.0/24)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- def test_update_flowspec_vrf_table_vpnv4_without_actions(self):
- flowspec_family = 'vpnv4fs'
- route_family = 'ipv4fs'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '10.70.1.0/24',
- }
- prefix = 'ipv4fs(dst_prefix:10.70.1.0/24)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_vrf_table_vpnv4_invalid_actions(self):
- flowspec_family = 'vpnv4fs'
- route_family = 'ipv4fs'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '10.70.1.0/24',
- }
- actions = {
- 'invalid_actions': {
- 'invalid_param': 10,
- },
- }
- prefix = 'ipv4fs(dst_prefix:10.70.1.0/24)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_vrf_table_vpnv4_invalid_flowspec_family(self):
- flowspec_family = 'invalid'
- route_family = 'ipv4fs'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '10.70.1.0/24',
- }
- prefix = 'ipv4fs(dst_prefix:10.70.1.0/24)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_vrf_table_vpnv4_invalid_route_family(self):
- flowspec_family = 'vpnv4fs'
- route_family = 'invalid'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '10.70.1.0/24',
- }
- prefix = 'ipv4fs(dst_prefix:10.70.1.0/24)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch(
- 'ryu.services.protocols.bgp.core_managers.TableCoreManager.learn_path')
- def _test_update_flowspec_global_table(self, learn_path_mock,
- flowspec_family, rules, prefix,
- is_withdraw, actions=None):
- # Instantiate TableCoreManager
- tbl_mng = table_manager.TableCoreManager(None, None)
-
- # Test
- tbl_mng.update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- actions=actions,
- is_withdraw=is_withdraw,
- )
-
- # Check
- call_args_list = learn_path_mock.call_args_list
- ok_(len(call_args_list) == 1) # learn_path should be called once
- args, kwargs = call_args_list[0]
- ok_(len(kwargs) == 0) # no keyword argument
- output_path = args[0]
- eq_(None, output_path.source)
- eq_(prefix, output_path.nlri.prefix)
- eq_(None, output_path.nexthop)
- eq_(is_withdraw, output_path.is_withdraw)
-
- def test_update_flowspec_global_table_ipv4(self):
- flowspec_family = 'ipv4fs'
- rules = {
- 'dst_prefix': '10.60.1.0/24',
- }
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- }
- prefix = 'ipv4fs(dst_prefix:10.60.1.0/24)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- def test_update_flowspec_global_table_ipv4_without_actions(self):
- flowspec_family = 'ipv4fs'
- rules = {
- 'dst_prefix': '10.60.1.0/24',
- }
- prefix = 'ipv4fs(dst_prefix:10.60.1.0/24)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_global_table_ipv4_invalid_actions(self):
- flowspec_family = 'ipv4fs'
- rules = {
- 'dst_prefix': '10.60.1.0/24',
- }
- actions = {
- 'invalid_actions': {
- 'invalid_param': 10,
- },
- }
- prefix = 'ipv4fs(dst_prefix:10.60.1.0/24)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_global_table_ipv4_invalid_flowspec_family(self):
- flowspec_family = 'invalid'
- rules = {
- 'dst_prefix': '10.60.1.0/24',
- }
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- }
- prefix = 'ipv4fs(dst_prefix:10.60.1.0/24)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- def test_update_flowspec_global_table_ipv6(self):
- flowspec_family = 'ipv6fs'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- }
- prefix = 'ipv6fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- def test_update_flowspec_global_table_ipv6_without_actions(self):
- flowspec_family = 'ipv6fs'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- prefix = 'ipv6fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_global_table_ipv6_invalid_actions(self):
- flowspec_family = 'ipv6fs'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- actions = {
- 'invalid_actions': {
- 'invalid_param': 10,
- },
- }
- prefix = 'ipv4fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_global_table_ipv6_invalid_flowspec_family(self):
- flowspec_family = 'invalid'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- }
- prefix = 'ipv4fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_global_table(
- flowspec_family=flowspec_family,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- def test_update_flowspec_vrf_table_vpnv6(self):
- flowspec_family = 'vpnv6fs'
- route_family = 'ipv6fs'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- }
- prefix = 'ipv6fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- def test_update_flowspec_vrf_table_vpnv6_without_actions(self):
- flowspec_family = 'vpnv6fs'
- route_family = 'ipv6fs'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- prefix = 'ipv6fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_vrf_table_vpnv6_invalid_actions(self):
- flowspec_family = 'vpnv6fs'
- route_family = 'ipv6fs'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- actions = {
- 'invalid_actions': {
- 'invalid_param': 10,
- },
- }
- prefix = 'ipv6fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_vrf_table_vpnv6_invalid_route_family(self):
- flowspec_family = 'vpnv6fs'
- route_family = 'invalid'
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
- prefix = 'ipv4fs(dst_prefix:2001::3/128/32)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- def test_update_flowspec_vrf_table_l2vpn(self):
- flowspec_family = 'l2vpnfs'
- route_family = 'l2vpnfs'
- route_dist = '65001:100'
- rules = {
- 'dst_mac': '12:34:56:78:9a:bc',
- }
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- }
- prefix = 'l2vpnfs(dst_mac:12:34:56:78:9a:bc)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- def test_update_flowspec_vrf_table_l2vpn_without_actions(self):
- flowspec_family = 'l2vpnfs'
- route_family = 'l2vpnfs'
- route_dist = '65001:100'
- rules = {
- 'dst_mac': '12:34:56:78:9a:bc',
- }
- prefix = 'l2vpnfs(dst_mac:12:34:56:78:9a:bc)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_vrf_table_l2vpn_invalid_actions(self):
- flowspec_family = 'l2vpnfs'
- route_family = 'l2vpnfs'
- route_dist = '65001:100'
- rules = {
- 'dst_mac': '12:34:56:78:9a:bc',
- }
- actions = {
- 'invalid_actions': {
- 'invalid_param': 10,
- },
- }
- prefix = 'l2vpnfs(dst_mac:12:34:56:78:9a:bc)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- actions=actions,
- )
-
- @raises(BgpCoreError)
- def test_update_flowspec_vrf_table_l2vpn_invalid_route_family(self):
- flowspec_family = 'l2vpnfs'
- route_family = 'invalid'
- route_dist = '65001:100'
- rules = {
- 'dst_mac': '12:34:56:78:9a:bc',
- }
- prefix = 'l2vpnfs(dst_mac:12:34:56:78:9a:bc)'
-
- self._test_update_flowspec_vrf_table(
- flowspec_family=flowspec_family,
- route_family=route_family,
- route_dist=route_dist,
- rules=rules,
- prefix=prefix,
- is_withdraw=False,
- )
diff --git a/tests/unit/services/protocols/bgp/test_bgpspeaker.py b/tests/unit/services/protocols/bgp/test_bgpspeaker.py
deleted file mode 100644
index 81a8bb3b..00000000
--- a/tests/unit/services/protocols/bgp/test_bgpspeaker.py
+++ /dev/null
@@ -1,1088 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-import logging
-try:
- import mock # Python 2
-except ImportError:
- from unittest import mock # Python 3
-
-from nose.tools import raises
-
-from ryu.services.protocols.bgp import bgpspeaker
-from ryu.services.protocols.bgp.bgpspeaker import EVPN_MAX_ET
-from ryu.services.protocols.bgp.bgpspeaker import ESI_TYPE_LACP
-from ryu.services.protocols.bgp.api.prefix import ESI_TYPE_L2_BRIDGE
-from ryu.services.protocols.bgp.bgpspeaker import ESI_TYPE_MAC_BASED
-from ryu.services.protocols.bgp.api.prefix import REDUNDANCY_MODE_ALL_ACTIVE
-from ryu.services.protocols.bgp.api.prefix import REDUNDANCY_MODE_SINGLE_ACTIVE
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_BGPSpeaker(unittest.TestCase):
- """
- Test case for bgp.bgpspeaker.BGPSpeaker
- """
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_eth_auto_discovery(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_ETH_AUTO_DISCOVERY
- route_dist = '65000:100'
- esi = {
- 'type': ESI_TYPE_LACP,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'port_key': 100,
- }
- ethernet_tag_id = EVPN_MAX_ET
- redundancy_mode = REDUNDANCY_MODE_ALL_ACTIVE
- next_hop = '0.0.0.0'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ethernet_tag_id': ethernet_tag_id,
- 'redundancy_mode': redundancy_mode,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- redundancy_mode=redundancy_mode,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_eth_auto_discovery_vni(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_ETH_AUTO_DISCOVERY
- route_dist = '65000:100'
- esi = {
- 'type': ESI_TYPE_L2_BRIDGE,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'priority': 100,
- }
- ethernet_tag_id = EVPN_MAX_ET
- redundancy_mode = REDUNDANCY_MODE_SINGLE_ACTIVE
- vni = 500
- next_hop = '0.0.0.0'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ethernet_tag_id': ethernet_tag_id,
- 'redundancy_mode': redundancy_mode,
- 'vni': vni,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- redundancy_mode=redundancy_mode,
- vni=vni
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_mac_ip_adv(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MAC_IP_ADV_ROUTE
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
- next_hop = '10.0.0.1'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ethernet_tag_id': ethernet_tag_id,
- 'mac_addr': mac_addr,
- 'ip_addr': ip_addr,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- next_hop=next_hop,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_mac_ip_adv_vni(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MAC_IP_ADV_ROUTE
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
- vni = 500
- next_hop = '10.0.0.1'
- tunnel_type = bgpspeaker.TUNNEL_TYPE_VXLAN
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ethernet_tag_id': ethernet_tag_id,
- 'mac_addr': mac_addr,
- 'ip_addr': ip_addr,
- 'vni': vni,
- 'next_hop': next_hop,
- 'tunnel_type': tunnel_type,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- vni=vni,
- next_hop=next_hop,
- tunnel_type=tunnel_type,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_multicast_etag(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MULTICAST_ETAG_ROUTE
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
- next_hop = '10.0.0.1'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- # 'esi': esi, # should be ignored
- 'ethernet_tag_id': ethernet_tag_id,
- # 'mac_addr': mac_addr, # should be ignored
- 'ip_addr': ip_addr,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- next_hop=next_hop,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_multicast_etag_no_next_hop(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MULTICAST_ETAG_ROUTE
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
- next_hop = '0.0.0.0' # the default value
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- # 'esi': esi, # should be ignored
- 'ethernet_tag_id': ethernet_tag_id,
- # 'mac_addr': mac_addr, # should be ignored
- 'ip_addr': ip_addr,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- # next_hop=next_hop, # omitted
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_eth_segment(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_ETH_SEGMENT
- route_dist = '65000:100'
- esi = {
- 'type': ESI_TYPE_MAC_BASED,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'local_disc': 100,
- }
- ip_addr = '192.168.0.1'
- next_hop = '0.0.0.0'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ip_addr': ip_addr,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ip_addr=ip_addr,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_ip_prefix_route(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_IP_PREFIX_ROUTE
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- ip_prefix = '192.168.0.0/24'
- gw_ip_addr = '172.16.0.1'
- next_hop = '0.0.0.0'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ethernet_tag_id': ethernet_tag_id,
- 'ip_prefix': ip_prefix,
- 'gw_ip_addr': gw_ip_addr,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- ip_prefix=ip_prefix,
- gw_ip_addr=gw_ip_addr,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_ip_prefix_route_vni(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_IP_PREFIX_ROUTE
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- ip_prefix = '192.168.0.0/24'
- gw_ip_addr = '172.16.0.1'
- vni = 500
- tunnel_type = bgpspeaker.TUNNEL_TYPE_VXLAN
- next_hop = '0.0.0.0'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ethernet_tag_id': ethernet_tag_id,
- 'ip_prefix': ip_prefix,
- 'gw_ip_addr': gw_ip_addr,
- 'tunnel_type': tunnel_type,
- 'vni': vni,
- 'next_hop': next_hop,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- ip_prefix=ip_prefix,
- gw_ip_addr=gw_ip_addr,
- tunnel_type=tunnel_type,
- vni=vni,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @raises(ValueError)
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_invalid_route_type(self, mock_call):
- # Prepare test data
- route_type = 'foobar' # Invalid EVPN route type
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
- next_hop = '10.0.0.1'
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- next_hop=next_hop,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', 'Invalid arguments detected')
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_del_auto_discovery(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_ETH_AUTO_DISCOVERY
- route_dist = '65000:100'
- esi = {
- 'type': ESI_TYPE_LACP,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'port_key': 100,
- }
- ethernet_tag_id = EVPN_MAX_ET
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ethernet_tag_id': ethernet_tag_id,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_del(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.delete_local', **expected_kwargs)
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_del_mac_ip_adv(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MAC_IP_ADV_ROUTE
- route_dist = '65000:100'
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'ethernet_tag_id': ethernet_tag_id,
- 'mac_addr': mac_addr,
- 'ip_addr': ip_addr,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_del(
- route_type=route_type,
- route_dist=route_dist,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.delete_local', **expected_kwargs)
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_del_multicast_etag(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MULTICAST_ETAG_ROUTE
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- # 'esi': esi, # should be ignored
- 'ethernet_tag_id': ethernet_tag_id,
- # 'mac_addr': mac_addr, # should be ignored
- 'ip_addr': ip_addr,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_del(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.delete_local', **expected_kwargs)
-
- @raises(ValueError)
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_del_invalid_route_type(self, mock_call):
- # Prepare test data
- route_type = 'foobar' # Invalid EVPN route type
- route_dist = '65000:100'
- esi = 0 # denotes single-homed
- ethernet_tag_id = 200
- mac_addr = 'aa:bb:cc:dd:ee:ff'
- ip_addr = '192.168.0.1'
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_del(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ethernet_tag_id=ethernet_tag_id,
- mac_addr=mac_addr,
- ip_addr=ip_addr,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.delete_local', 'Invalid arguments detected')
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_del_eth_segment(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_ETH_SEGMENT
- route_dist = '65000:100'
- esi = {
- 'esi_type': ESI_TYPE_MAC_BASED,
- 'mac_addr': 'aa:bb:cc:dd:ee:ff',
- 'local_disc': 100,
- }
- ip_addr = '192.168.0.1'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'esi': esi,
- 'ip_addr': ip_addr,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_del(
- route_type=route_type,
- route_dist=route_dist,
- esi=esi,
- ip_addr=ip_addr,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.delete_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_del_ip_prefix_route(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_IP_PREFIX_ROUTE
- route_dist = '65000:100'
- ethernet_tag_id = 200
- ip_prefix = '192.168.0.0/24'
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'ethernet_tag_id': ethernet_tag_id,
- 'ip_prefix': ip_prefix,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_del(
- route_type=route_type,
- route_dist=route_dist,
- ethernet_tag_id=ethernet_tag_id,
- ip_prefix=ip_prefix,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.delete_local', **expected_kwargs)
-
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_pmsi_no_tunnel_info(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MULTICAST_ETAG_ROUTE
- route_dist = '65000:100'
- ethernet_tag_id = 200
- next_hop = '0.0.0.0'
- ip_addr = '192.168.0.1'
- pmsi_tunnel_type = bgpspeaker.PMSI_TYPE_NO_TUNNEL_INFO
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'ethernet_tag_id': ethernet_tag_id,
- 'next_hop': next_hop,
- 'ip_addr': ip_addr,
- 'pmsi_tunnel_type': pmsi_tunnel_type,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- ethernet_tag_id=ethernet_tag_id,
- ip_addr=ip_addr,
- pmsi_tunnel_type=pmsi_tunnel_type,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_pmsi_ingress_rep(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MULTICAST_ETAG_ROUTE
- route_dist = '65000:100'
- ethernet_tag_id = 200
- next_hop = '0.0.0.0'
- ip_addr = '192.168.0.1'
- pmsi_tunnel_type = bgpspeaker.PMSI_TYPE_INGRESS_REP
- expected_kwargs = {
- 'route_type': route_type,
- 'route_dist': route_dist,
- 'ethernet_tag_id': ethernet_tag_id,
- 'next_hop': next_hop,
- 'ip_addr': ip_addr,
- 'pmsi_tunnel_type': pmsi_tunnel_type,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- ethernet_tag_id=ethernet_tag_id,
- ip_addr=ip_addr,
- pmsi_tunnel_type=pmsi_tunnel_type,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', **expected_kwargs)
-
- @raises(ValueError)
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_evpn_prefix_add_invalid_pmsi_tunnel_type(self, mock_call):
- # Prepare test data
- route_type = bgpspeaker.EVPN_MULTICAST_ETAG_ROUTE
- route_dist = '65000:100'
- ethernet_tag_id = 200
- next_hop = '0.0.0.0'
- ip_addr = '192.168.0.1'
- pmsi_tunnel_type = 1
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.evpn_prefix_add(
- route_type=route_type,
- route_dist=route_dist,
- ethernet_tag_id=ethernet_tag_id,
- ip_addr=ip_addr,
- pmsi_tunnel_type=pmsi_tunnel_type,
- )
-
- # Check
- mock_call.assert_called_with(
- 'evpn_prefix.add_local', 'Invalid arguments detected')
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_add_ipv4(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_IPV4
- rules = {
- 'dst_prefix': '10.60.1.0/24',
- }
-
- actions = {
- 'traffic_marking': {
- 'dscp': 24,
- }
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'rules': rules,
- 'actions': actions,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_add(
- flowspec_family=flowspec_family,
- rules=rules,
- actions=actions)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.add', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_add_ipv4_without_actions(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_IPV4
- rules = {
- 'dst_prefix': '10.60.1.0/24',
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'rules': rules,
- 'actions': {},
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_add(
- flowspec_family=flowspec_family,
- rules=rules)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.add', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_del_ipv4(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_IPV4
- rules = {
- 'dst_prefix': '10.60.1.0/24',
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'rules': rules,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_del(
- flowspec_family=flowspec_family,
- rules=rules)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.del', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_add_vpnv4(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_VPNV4
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '10.70.1.0/24',
- }
-
- actions = {
- 'traffic_marking': {
- 'dscp': 24,
- }
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'route_dist': route_dist,
- 'rules': rules,
- 'actions': actions,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_add(
- flowspec_family=flowspec_family,
- route_dist=route_dist,
- rules=rules,
- actions=actions)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_del_vpnv4(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_VPNV4
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '10.70.1.0/24',
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'route_dist': route_dist,
- 'rules': rules,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_del(
- flowspec_family=flowspec_family,
- route_dist=route_dist,
- rules=rules)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.del_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_add_ipv6(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_IPV6
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
-
- actions = {
- 'traffic_marking': {
- 'dscp': 24,
- }
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'rules': rules,
- 'actions': actions,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_add(
- flowspec_family=flowspec_family,
- rules=rules,
- actions=actions)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.add', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_add_ipv6_without_actions(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_IPV6
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'rules': rules,
- 'actions': {},
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_add(
- flowspec_family=flowspec_family,
- rules=rules)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.add', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_del_ipv6(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_IPV6
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'rules': rules,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_del(
- flowspec_family=flowspec_family,
- rules=rules)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.del', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_add_vpnv6(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_VPNV6
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
-
- actions = {
- 'traffic_marking': {
- 'dscp': 24,
- }
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'route_dist': route_dist,
- 'rules': rules,
- 'actions': actions,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_add(
- flowspec_family=flowspec_family,
- route_dist=route_dist,
- rules=rules,
- actions=actions)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_del_vpnv6(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_VPNV6
- route_dist = '65001:100'
- rules = {
- 'dst_prefix': '2001::3/128/32',
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'route_dist': route_dist,
- 'rules': rules,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_del(
- flowspec_family=flowspec_family,
- route_dist=route_dist,
- rules=rules)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.del_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_add_l2vpn(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_L2VPN
- route_dist = '65001:100'
- rules = {
- 'dst_mac': '12:34:56:78:9a:bc',
- }
-
- actions = {
- 'traffic_marking': {
- 'dscp': 24,
- }
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'route_dist': route_dist,
- 'rules': rules,
- 'actions': actions,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_add(
- flowspec_family=flowspec_family,
- route_dist=route_dist,
- rules=rules,
- actions=actions)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.add_local', **expected_kwargs)
-
- @mock.patch(
- 'ryu.services.protocols.bgp.bgpspeaker.BGPSpeaker.__init__',
- mock.MagicMock(return_value=None))
- @mock.patch('ryu.services.protocols.bgp.bgpspeaker.call')
- def test_flowspec_prefix_del_l2vpn(self, mock_call):
- # Prepare test data
- flowspec_family = bgpspeaker.FLOWSPEC_FAMILY_L2VPN
- route_dist = '65001:100'
- rules = {
- 'dst_mac': '12:34:56:78:9a:bc',
- }
-
- expected_kwargs = {
- 'flowspec_family': flowspec_family,
- 'route_dist': route_dist,
- 'rules': rules,
- }
-
- # Test
- speaker = bgpspeaker.BGPSpeaker(65000, '10.0.0.1')
- speaker.flowspec_prefix_del(
- flowspec_family=flowspec_family,
- route_dist=route_dist,
- rules=rules)
-
- # Check
- mock_call.assert_called_with(
- 'flowspec.del_local', **expected_kwargs)
diff --git a/tests/unit/services/protocols/bgp/test_peer.py b/tests/unit/services/protocols/bgp/test_peer.py
deleted file mode 100644
index 1597efdb..00000000
--- a/tests/unit/services/protocols/bgp/test_peer.py
+++ /dev/null
@@ -1,375 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-import logging
-try:
- import mock # Python 2
-except ImportError:
- from unittest import mock # Python 3
-
-from nose.tools import eq_
-
-from ryu.lib.packet import bgp
-from ryu.services.protocols.bgp import peer
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_Peer(unittest.TestCase):
- """
- Test case for peer.Peer
- """
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def _test_construct_as_path_attr(
- self, input_as_path, input_as4_path, expected_as_path):
- # Prepare input data
- input_as_path_attr = bgp.BGPPathAttributeAsPath(input_as_path)
- input_as4_path_attr = bgp.BGPPathAttributeAs4Path(input_as4_path)
- _peer = peer.Peer(None, None, None, None, None)
-
- # TEST
- output_as_path_attr = _peer._construct_as_path_attr(
- input_as_path_attr, input_as4_path_attr)
-
- eq_(bgp.BGP_ATTR_TYPE_AS_PATH, output_as_path_attr.type)
- eq_(expected_as_path, output_as_path_attr.path_seg_list)
-
- def test_construct_as_path_attr_sequence_only(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 23456, 23456, 40001]]
- input_as4_path = [[400000, 300000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000, 400000, 300000, 40001]]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- def test_construct_as_path_attr_aggregated_as_path_1(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000], {10, 20, 30}, [23456, 23456, 40001]]
- input_as4_path = [[400000, 300000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000], {10, 20, 30}, [400000, 300000, 40001]]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- def test_construct_as_path_attr_aggregated_as_path_2(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000], {10, 20, 30}, [23456, 23456, 40001]]
- input_as4_path = [[3000, 400000, 300000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000, 3000, 400000, 300000, 40001]]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- def test_construct_as_path_attr_aggregated_path_3(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 23456, 23456, 40001]]
- input_as4_path = [[400000, 300000, 40001], {10, 20, 30}]
- # Expected:
- expected_as_path = [[65000, 400000, 300000, 40001], {10, 20, 30}]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- def test_construct_as_path_attr_aggregated_as4_path(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 23456, 23456, 40001]]
- input_as4_path = [{10, 20, 30}, [400000, 300000, 40001]]
- # Expected:
- expected_as_path = [[65000], {10, 20, 30}, [400000, 300000, 40001]]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- def test_construct_as_path_attr_too_short_as_path(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 23456, 23456, 40001]]
- input_as4_path = [[100000, 65000, 4000, 400000, 300000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000, 23456, 23456, 40001]]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- def test_construct_as_path_attr_too_short_as4_path(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 23456, 23456, 40001]]
- input_as4_path = [[300000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000, 23456, 300000, 40001]]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- def test_construct_as_path_attr_empty_as4_path(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 23456, 23456, 40001]]
- input_as4_path = [[]]
- # Expected:
- expected_as_path = [[65000, 4000, 23456, 23456, 40001]]
-
- self._test_construct_as_path_attr(
- input_as_path, input_as4_path, expected_as_path)
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def test_construct_as_path_attr_as4_path_None(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 23456, 23456, 40001]]
- # input_as4_path = None
- # Expected:
- expected_as_path = [[65000, 4000, 23456, 23456, 40001]]
-
- # Prepare input data
- input_as_path_attr = bgp.BGPPathAttributeAsPath(input_as_path)
- input_as4_path_attr = None
- _peer = peer.Peer(None, None, None, None, None)
-
- # TEST
- output_as_path_attr = _peer._construct_as_path_attr(
- input_as_path_attr, input_as4_path_attr)
-
- eq_(bgp.BGP_ATTR_TYPE_AS_PATH, output_as_path_attr.type)
- eq_(expected_as_path, output_as_path_attr.path_seg_list)
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def _test_trans_as_path(
- self, input_as_path, expected_as_path, expected_as4_path):
- # Prepare input data
- _peer = peer.Peer(None, None, None, None, None)
-
- # TEST
- output_as_path, output_as4_path = _peer._trans_as_path(input_as_path)
-
- eq_(expected_as_path, output_as_path)
- eq_(expected_as4_path, output_as4_path)
-
- @mock.patch.object(
- peer.Peer, 'is_four_octet_as_number_cap_valid',
- mock.MagicMock(return_value=True))
- def test_trans_as_path_as4_path_is_supported(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 400000, 300000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000, 400000, 300000, 40001]]
- expected_as4_path = None
-
- self._test_trans_as_path(
- input_as_path, expected_as_path, expected_as4_path)
-
- @mock.patch.object(
- peer.Peer, 'is_four_octet_as_number_cap_valid',
- mock.MagicMock(return_value=False))
- def test_trans_as_path_sequence_only(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 400000, 300000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000, 23456, 23456, 40001]]
- expected_as4_path = [[65000, 4000, 400000, 300000, 40001]]
-
- self._test_trans_as_path(
- input_as_path, expected_as_path, expected_as4_path)
-
- @mock.patch.object(
- peer.Peer, 'is_four_octet_as_number_cap_valid',
- mock.MagicMock(return_value=False))
- def test_trans_as_path_no_trans(self):
- # Test Data
- # Input:
- input_as_path = [[65000, 4000, 40000, 30000, 40001]]
- # Expected:
- expected_as_path = [[65000, 4000, 40000, 30000, 40001]]
- expected_as4_path = None
-
- self._test_trans_as_path(
- input_as_path, expected_as_path, expected_as4_path)
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def _test_extract_and_reconstruct_as_path(
- self, path_attributes, ex_as_path_value,
- ex_aggregator_as_number, ex_aggregator_addr):
- # Prepare test data
- update_msg = bgp.BGPUpdate(path_attributes=path_attributes)
- _peer = peer.Peer(None, None, None, None, None)
-
- # Test
- _peer._extract_and_reconstruct_as_path(update_msg)
-
- umsg_pattrs = update_msg.pathattr_map
- as_path_attr = umsg_pattrs.get(
- bgp.BGP_ATTR_TYPE_AS_PATH, None)
- as4_path_attr = umsg_pattrs.get(
- bgp.BGP_ATTR_TYPE_AS4_PATH, None)
- aggregator_attr = umsg_pattrs.get(
- bgp.BGP_ATTR_TYPE_AGGREGATOR, None)
- as4_aggregator_attr = umsg_pattrs.get(
- bgp.BGP_ATTR_TYPE_AS4_AGGREGATOR, None)
-
- eq_(ex_as_path_value, as_path_attr.value)
- eq_(None, as4_path_attr)
- eq_(ex_aggregator_as_number, aggregator_attr.as_number)
- eq_(ex_aggregator_addr, aggregator_attr.addr)
- eq_(None, as4_aggregator_attr)
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def test_extract_and_reconstruct_as_path_with_no_as4_attr(self):
- # Input values
- in_as_path_value = [[1000, 2000, 3000]]
- # in_as4_path_value
- in_aggregator_as_number = 4000
- in_aggregator_addr = '10.0.0.1'
- # in_as4_aggregator_as_number
- # in_as4_aggregator_addr
-
- # Expected values
- ex_as_path_value = [[1000, 2000, 3000]]
- ex_aggregator_as_number = 4000
- ex_aggregator_addr = '10.0.0.1'
-
- # Prepare test data
- path_attributes = [
- bgp.BGPPathAttributeAsPath(
- value=in_as_path_value),
- bgp.BGPPathAttributeAggregator(
- as_number=in_aggregator_as_number, addr=in_aggregator_addr),
- ]
-
- # Test
- self._test_extract_and_reconstruct_as_path(
- path_attributes, ex_as_path_value,
- ex_aggregator_as_number, ex_aggregator_addr)
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def test_extract_and_reconstruct_as_path_with_as4_attr(self):
- # Input values
- in_as_path_value = [[1000, 23456, 3000]]
- in_as4_path_value = [[2000, 3000]]
- in_aggregator_as_number = 23456
- in_aggregator_addr = '10.0.0.1'
- in_as4_aggregator_as_number = 4000
- in_as4_aggregator_addr = '10.0.0.1'
-
- # Expected values
- ex_as_path_value = [[1000, 2000, 3000]]
- ex_aggregator_as_number = 4000
- ex_aggregator_addr = '10.0.0.1'
-
- # Prepare test data
- path_attributes = [
- bgp.BGPPathAttributeAsPath(
- value=in_as_path_value),
- bgp.BGPPathAttributeAs4Path(
- value=in_as4_path_value),
- bgp.BGPPathAttributeAggregator(
- as_number=in_aggregator_as_number,
- addr=in_aggregator_addr),
- bgp.BGPPathAttributeAs4Aggregator(
- as_number=in_as4_aggregator_as_number,
- addr=in_as4_aggregator_addr),
- ]
-
- # Test
- self._test_extract_and_reconstruct_as_path(
- path_attributes, ex_as_path_value,
- ex_aggregator_as_number, ex_aggregator_addr)
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def test_extract_and_reconstruct_as_path_with_not_trans_as_aggr(self):
- # Input values
- in_as_path_value = [[1000, 23456, 3000]]
- in_as4_path_value = [[2000, 3000]]
- in_aggregator_as_number = 4000 # not AS_TRANS
- in_aggregator_addr = '10.0.0.1'
- in_as4_aggregator_as_number = 4000
- in_as4_aggregator_addr = '10.0.0.1'
-
- # Expected values
- ex_as_path_value = [[1000, 23456, 3000]]
- ex_aggregator_as_number = 4000
- ex_aggregator_addr = '10.0.0.1'
-
- # Prepare test data
- path_attributes = [
- bgp.BGPPathAttributeAsPath(
- value=in_as_path_value),
- bgp.BGPPathAttributeAs4Path(
- value=in_as4_path_value),
- bgp.BGPPathAttributeAggregator(
- as_number=in_aggregator_as_number,
- addr=in_aggregator_addr),
- bgp.BGPPathAttributeAs4Aggregator(
- as_number=in_as4_aggregator_as_number,
- addr=in_as4_aggregator_addr),
- ]
-
- # Test
- self._test_extract_and_reconstruct_as_path(
- path_attributes, ex_as_path_value,
- ex_aggregator_as_number, ex_aggregator_addr)
-
- @mock.patch.object(
- peer.Peer, '__init__', mock.MagicMock(return_value=None))
- def test_extract_and_reconstruct_as_path_with_short_as_path(self):
- # Input values
- in_as_path_value = [[1000, 23456, 3000]]
- in_as4_path_value = [[2000, 3000, 4000, 5000]] # longer than AS_PATH
- in_aggregator_as_number = 4000
- in_aggregator_addr = '10.0.0.1'
- # in_as4_aggregator_as_number
- # in_as4_aggregator_addr
-
- # Expected values
- ex_as_path_value = [[1000, 23456, 3000]]
- ex_aggregator_as_number = 4000
- ex_aggregator_addr = '10.0.0.1'
-
- # Prepare test data
- path_attributes = [
- bgp.BGPPathAttributeAsPath(
- value=in_as_path_value),
- bgp.BGPPathAttributeAs4Path(
- value=in_as4_path_value),
- bgp.BGPPathAttributeAggregator(
- as_number=in_aggregator_as_number,
- addr=in_aggregator_addr),
- ]
-
- # Test
- self._test_extract_and_reconstruct_as_path(
- path_attributes, ex_as_path_value,
- ex_aggregator_as_number, ex_aggregator_addr)
diff --git a/tests/unit/services/protocols/bgp/utils/__init__.py b/tests/unit/services/protocols/bgp/utils/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/tests/unit/services/protocols/bgp/utils/__init__.py
+++ /dev/null
diff --git a/tests/unit/services/protocols/bgp/utils/test_bgp.py b/tests/unit/services/protocols/bgp/utils/test_bgp.py
deleted file mode 100644
index 6933a28b..00000000
--- a/tests/unit/services/protocols/bgp/utils/test_bgp.py
+++ /dev/null
@@ -1,211 +0,0 @@
-# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import logging
-import unittest
-
-from nose.tools import eq_, raises
-
-from ryu.lib.packet.bgp import (
- BGPFlowSpecTrafficRateCommunity,
- BGPFlowSpecTrafficActionCommunity,
- BGPFlowSpecRedirectCommunity,
- BGPFlowSpecTrafficMarkingCommunity,
- BGPFlowSpecVlanActionCommunity,
- BGPFlowSpecTPIDActionCommunity,
-)
-
-from ryu.services.protocols.bgp.core import BgpCoreError
-from ryu.services.protocols.bgp.utils.bgp import create_v4flowspec_actions
-from ryu.services.protocols.bgp.utils.bgp import create_v6flowspec_actions
-from ryu.services.protocols.bgp.utils.bgp import create_l2vpnflowspec_actions
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_Utils_BGP(unittest.TestCase):
- """
- Test case for ryu.services.protocols.bgp.utils.bgp
- """
-
- def _test_create_v4flowspec_actions(self, actions, expected_communities):
- communities = create_v4flowspec_actions(actions)
- expected_communities.sort(key=lambda x: x.subtype)
- communities.sort(key=lambda x: x.subtype)
- eq_(str(expected_communities), str(communities))
-
- def test_create_v4flowspec_actions_all_actions(self):
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- 'traffic_action': {
- 'action': 3,
- },
- 'redirect': {
- 'as_number': 10,
- 'local_administrator': 10,
- },
- 'traffic_marking': {
- 'dscp': 24,
- }
- }
- expected_communities = [
- BGPFlowSpecTrafficRateCommunity(as_number=0, rate_info=100.0),
- BGPFlowSpecTrafficActionCommunity(action=3),
- BGPFlowSpecRedirectCommunity(as_number=10, local_administrator=10),
- BGPFlowSpecTrafficMarkingCommunity(dscp=24),
- ]
- self._test_create_v4flowspec_actions(actions, expected_communities)
-
- def test_create_v4flowspec_actions_without_actions(self):
- actions = None
- expected_communities = []
- self._test_create_v4flowspec_actions(actions, expected_communities)
-
- @raises(ValueError)
- def test_create_v4flowspec_actions_not_exist_actions(self):
- actions = {
- 'traffic_test': {
- 'test': 10,
- },
- }
- expected_communities = []
- self._test_create_v4flowspec_actions(actions, expected_communities)
-
- def _test_create_v6flowspec_actions(self, actions, expected_communities):
- communities = create_v6flowspec_actions(actions)
- expected_communities.sort(key=lambda x: x.subtype)
- communities.sort(key=lambda x: x.subtype)
- eq_(str(expected_communities), str(communities))
-
- def test_create_v6flowspec_actions_all_actions(self):
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- 'traffic_action': {
- 'action': 3,
- },
- 'redirect': {
- 'as_number': 10,
- 'local_administrator': 10,
- },
- 'traffic_marking': {
- 'dscp': 24,
- }
- }
- expected_communities = [
- BGPFlowSpecTrafficRateCommunity(as_number=0, rate_info=100.0),
- BGPFlowSpecTrafficActionCommunity(action=3),
- BGPFlowSpecRedirectCommunity(as_number=10, local_administrator=10),
- BGPFlowSpecTrafficMarkingCommunity(dscp=24),
- ]
- self._test_create_v6flowspec_actions(actions, expected_communities)
-
- def test_create_v6flowspec_actions_without_actions(self):
- actions = None
- expected_communities = []
- self._test_create_v6flowspec_actions(actions, expected_communities)
-
- @raises(ValueError)
- def test_create_v6flowspec_actions_not_exist_actions(self):
- actions = {
- 'traffic_test': {
- 'test': 10,
- },
- }
- expected_communities = []
- self._test_create_v6flowspec_actions(actions, expected_communities)
-
- def _test_create_l2vpnflowspec_actions(self, actions, expected_communities):
- communities = create_l2vpnflowspec_actions(actions)
- expected_communities.sort(key=lambda x: x.subtype)
- communities.sort(key=lambda x: x.subtype)
- eq_(str(expected_communities), str(communities))
-
- def test_create_l2vpnflowspec_actions_all_actions(self):
- actions = {
- 'traffic_rate': {
- 'as_number': 0,
- 'rate_info': 100.0,
- },
- 'traffic_action': {
- 'action': 3,
- },
- 'redirect': {
- 'as_number': 10,
- 'local_administrator': 10,
- },
- 'traffic_marking': {
- 'dscp': 24,
- },
- 'vlan_action': {
- 'actions_1': (BGPFlowSpecVlanActionCommunity.POP |
- BGPFlowSpecVlanActionCommunity.SWAP),
- 'vlan_1': 3000,
- 'cos_1': 3,
- 'actions_2': BGPFlowSpecVlanActionCommunity.PUSH,
- 'vlan_2': 4000,
- 'cos_2': 2,
- },
- 'tpid_action': {
- 'actions': (BGPFlowSpecTPIDActionCommunity.TI |
- BGPFlowSpecTPIDActionCommunity.TO),
- 'tpid_1': 5,
- 'tpid_2': 6,
- }
- }
- expected_communities = [
- BGPFlowSpecTrafficRateCommunity(as_number=0, rate_info=100.0),
- BGPFlowSpecTrafficActionCommunity(action=3),
- BGPFlowSpecRedirectCommunity(as_number=10, local_administrator=10),
- BGPFlowSpecTrafficMarkingCommunity(dscp=24),
- BGPFlowSpecVlanActionCommunity(
- actions_1=(BGPFlowSpecVlanActionCommunity.POP |
- BGPFlowSpecVlanActionCommunity.SWAP),
- vlan_1=3000,
- cos_1=3,
- actions_2=BGPFlowSpecVlanActionCommunity.PUSH,
- vlan_2=4000,
- cos_2=2,
- ),
- BGPFlowSpecTPIDActionCommunity(
- actions=(BGPFlowSpecTPIDActionCommunity.TI |
- BGPFlowSpecTPIDActionCommunity.TO),
- tpid_1=5,
- tpid_2=6,
- ),
- ]
- self._test_create_l2vpnflowspec_actions(actions, expected_communities)
-
- def test_create_l2vpnflowspec_actions_without_actions(self):
- actions = None
- expected_communities = []
- self._test_create_l2vpnflowspec_actions(actions, expected_communities)
-
- @raises(ValueError)
- def test_create_l2vpnflowspec_actions_not_exist_actions(self):
- actions = {
- 'traffic_test': {
- 'test': 10,
- },
- }
- expected_communities = []
- self._test_create_l2vpnflowspec_actions(actions, expected_communities)
diff --git a/tests/unit/services/protocols/bgp/utils/test_validation.py b/tests/unit/services/protocols/bgp/utils/test_validation.py
deleted file mode 100644
index 6d5f6ac3..00000000
--- a/tests/unit/services/protocols/bgp/utils/test_validation.py
+++ /dev/null
@@ -1,215 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-import unittest
-
-from nose.tools import eq_, ok_
-
-from ryu.services.protocols.bgp.utils import validation
-
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_Utils_Validation(unittest.TestCase):
- """
- Test case for ryu.services.protocols.bgp.utils.validation
- """
-
- def test_is_valid_mac(self):
- ok_(validation.is_valid_mac('aa:bb:cc:dd:ee:ff'))
-
- def test_is_valid_mac_hyphenation(self):
- ok_(validation.is_valid_mac('aa-bb-cc-dd-ee-ff'))
-
- def test_is_valid_mac_short(self):
- eq_(False, validation.is_valid_mac('aa:bb:cc:dd:ee'))
-
- def test_is_valid_ip_prefix(self):
- ok_(validation.is_valid_ip_prefix(24, 32))
-
- def test_is_valid_ip_prefix_str(self):
- ok_(validation.is_valid_ip_prefix('24', 32))
-
- def test_is_valid_ip_prefix_not_digit(self):
- eq_(False, validation.is_valid_ip_prefix('foo', 32))
-
- def test_is_valid_ip_prefix_over(self):
- eq_(False, validation.is_valid_ip_prefix(100, 32))
-
- def test_is_valid_ipv4(self):
- ok_(validation.is_valid_ipv4('10.0.0.1'))
-
- def test_is_valid_ipv4_not_dot(self):
- eq_(False, validation.is_valid_ipv4('192:168:0:1'))
-
- def test_is_valid_ipv4_prefix(self):
- ok_(validation.is_valid_ipv4_prefix('10.0.0.1/24'))
-
- def test_is_valid_ipv4_prefix_not_str(self):
- eq_(False, validation.is_valid_ipv4_prefix(1234))
-
- def test_is_valid_ipv4_prefix_without_prefix(self):
- eq_(False, validation.is_valid_ipv4_prefix('10.0.0.1'))
-
- def test_is_valid_ipv4_prefix_invalid_addr(self):
- eq_(False, validation.is_valid_ipv4_prefix('xxx.xxx.xxx.xxx/24'))
-
- def test_is_valid_ipv6(self):
- ok_(validation.is_valid_ipv6('fe80::0011:aabb:ccdd:eeff'))
-
- def test_is_valid_ipv6_not_colon(self):
- eq_(False, validation.is_valid_ipv6('fe80--0011-aabb-ccdd-eeff'))
-
- def test_is_valid_ipv6_prefix(self):
- ok_(validation.is_valid_ipv6_prefix('fe80::0011:aabb:ccdd:eeff/64'))
-
- def test_is_valid_ipv6_prefix_not_str(self):
- eq_(False, validation.is_valid_ipv6_prefix(1234))
-
- def test_is_valid_ipv6_prefix_without_prefix(self):
- eq_(False,
- validation.is_valid_ipv6_prefix('fe80::0011:aabb:ccdd:eeff'))
-
- def test_is_valid_ipv6_prefix_invalid_addr(self):
- eq_(False, validation.is_valid_ipv6_prefix('xxxx::xxxx/64'))
-
- def test_is_valid_old_asn(self):
- ok_(validation.is_valid_old_asn(65000))
-
- def test_is_valid_old_asn_negative(self):
- eq_(False, validation.is_valid_old_asn(-1))
-
- def test_is_valid_old_asn_over(self):
- eq_(False, validation.is_valid_old_asn(0xffff + 1))
-
- def test_is_valid_asn(self):
- ok_(validation.is_valid_asn(6553800))
-
- def test_is_valid_asn_old(self):
- ok_(validation.is_valid_asn(65000))
-
- def test_is_valid_asn_negative(self):
- eq_(False, validation.is_valid_asn(-1))
-
- def test_is_valid_asn_over(self):
- eq_(False, validation.is_valid_asn(0xffffffff + 1))
-
- def test_is_valid_vpnv4_prefix(self):
- ok_(validation.is_valid_vpnv4_prefix('100:200:10.0.0.1/24'))
-
- def test_is_valid_vpnv4_prefix_not_str(self):
- eq_(False, validation.is_valid_vpnv4_prefix(1234))
-
- def test_is_valid_vpnv4_prefix_short_rd(self):
- eq_(False, validation.is_valid_vpnv4_prefix('100:10.0.0.1/24'))
-
- def test_is_valid_vpnv4_prefix_invalid_rd(self):
- eq_(False, validation.is_valid_vpnv4_prefix('foo:bar:10.0.0.1/24'))
-
- def test_is_valid_vpnv6_prefix(self):
- ok_(validation.is_valid_vpnv6_prefix(
- '100:200:fe80::0011:aabb:ccdd:eeff/64'))
-
- def test_is_valid_vpnv6_prefix_not_str(self):
- eq_(False, validation.is_valid_vpnv6_prefix(1234))
-
- def test_is_valid_vpnv6_prefix_short_rd(self):
- eq_(False, validation.is_valid_vpnv6_prefix('100:eeff/64'))
-
- def test_is_valid_vpnv6_prefix_invalid_rd(self):
- eq_(False, validation.is_valid_vpnv6_prefix('foo:bar:10.0.0.1/24'))
-
- def test_is_valid_med(self):
- ok_(validation.is_valid_med(100))
-
- def test_is_valid_med_not_num(self):
- eq_(False, validation.is_valid_med('foo'))
-
- def test_is_valid_med_negative(self):
- eq_(False, validation.is_valid_med(-1))
-
- def test_is_valid_med_over(self):
- eq_(False, validation.is_valid_med(0xffffffff + 1))
-
- def test_is_valid_mpls_label(self):
- ok_(validation.is_valid_mpls_label(100))
-
- def test_is_valid_mpls_label_reserved(self):
- eq_(False, validation.is_valid_mpls_label(4))
-
- def test_is_valid_mpls_label_not_num(self):
- eq_(False, validation.is_valid_mpls_label('foo'))
-
- def test_is_valid_mpls_label_negative(self):
- eq_(False, validation.is_valid_mpls_label(-1))
-
- def test_is_valid_mpls_label_over(self):
- eq_(False, validation.is_valid_mpls_label(0x100000 + 1))
-
- def test_is_valid_mpls_labels(self):
- ok_(validation.is_valid_mpls_labels([100, 200]))
-
- def test_is_valid_mpls_labels_not_list(self):
- eq_(False, validation.is_valid_mpls_labels(100))
-
- def test_is_valid_mpls_labels_with_invalid_label(self):
- eq_(False, validation.is_valid_mpls_labels(['foo', 200]))
-
- def test_is_valid_route_dist(self):
- ok_(validation.is_valid_route_dist('65000:222'))
-
- def test_is_valid_route_dist_ipv4_based(self):
- ok_(validation.is_valid_route_dist('10.0.0.1:333'))
-
- def test_is_valid_route_not_str(self):
- eq_(False, validation.is_valid_route_dist(65000))
-
- def test_is_valid_route_dist_short(self):
- eq_(False, validation.is_valid_route_dist('65000'))
-
- def test_is_valid_route_dist_invalid_ipv4_addr(self):
- eq_(False, validation.is_valid_route_dist('xxx.xxx.xxx.xxx:333'))
-
- def test_is_valid_esi(self):
- ok_(validation.is_valid_esi(100))
-
- def test_is_valid_esi_not_int(self):
- eq_(False, validation.is_valid_esi('foo'))
-
- def test_is_valid_ethernet_tag_id(self):
- ok_(validation.is_valid_ethernet_tag_id(100))
-
- def test_is_valid_ethernet_tag_id_not_int(self):
- eq_(False, validation.is_valid_ethernet_tag_id('foo'))
-
- def test_is_valid_ethernet_tag_id_negative(self):
- eq_(False, validation.is_valid_ethernet_tag_id(-1))
-
- def test_is_valid_ethernet_tag_id_over(self):
- eq_(False, validation.is_valid_ethernet_tag_id(0xffffffff + 1))
-
- def test_is_valid_vni(self):
- ok_(validation.is_valid_vni(100))
-
- def test_is_valid_vni_not_int(self):
- eq_(False, validation.is_valid_vni('foo'))
-
- def test_is_valid_vni_negative(self):
- eq_(False, validation.is_valid_vni(-1))
-
- def test_is_valid_vni_over(self):
- eq_(False, validation.is_valid_vni(0xffffff + 1))
diff --git a/tests/unit/test_requirements.py b/tests/unit/test_requirements.py
deleted file mode 100644
index b31110b4..00000000
--- a/tests/unit/test_requirements.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import logging
-import os
-import sys
-import unittest
-
-import pkg_resources
-from pip.req import parse_requirements
-from pip.download import PipSession
-from six.moves import urllib
-
-from nose.tools import ok_
-
-
-LOG = logging.getLogger(__name__)
-
-MOD_DIR = os.path.dirname(sys.modules[__name__].__file__)
-_RYU_REQUIREMENTS_FILES = [
- '../../tools/pip-requires',
- '../../tools/optional-requires',
-]
-RYU_REQUIREMENTS_FILES = [
- os.path.join(MOD_DIR, f) for f in _RYU_REQUIREMENTS_FILES]
-
-OPENSTACK_REQUIREMENTS_REPO = 'https://github.com/openstack/requirements'
-OPENSTACK_REQUIREMENTS_URL = (
- 'https://github.com/openstack/requirements/raw/master/')
-_OPENSTACK_REQUIREMENTS_FILES = [
- 'requirements.txt',
- 'global-requirements.txt',
-]
-OPENSTACK_REQUIREMENTS_FILES = [
- urllib.parse.urljoin(OPENSTACK_REQUIREMENTS_URL, f)
- for f in _OPENSTACK_REQUIREMENTS_FILES]
-
-
-def _get_requirements(files):
- requirements = {}
- for f in files:
- req = parse_requirements(f, session=PipSession())
- for r in req:
- requirements[r.name] = str(r.req)
-
- return requirements
-
-OPENSTACK_REQUIREMENTS = _get_requirements(OPENSTACK_REQUIREMENTS_FILES)
-RYU_REQUIREMENTS = _get_requirements(RYU_REQUIREMENTS_FILES)
-
-
-class TestRequirements(unittest.TestCase):
- """
- Test whether the requirements of Ryu has no conflict with that
- of other projects.
- """
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_with_openstack_requirements(self):
- try:
- for name, req in OPENSTACK_REQUIREMENTS.items():
- if name in RYU_REQUIREMENTS:
- ok_(pkg_resources.require(req))
- except pkg_resources.VersionConflict as e:
- LOG.exception(
- 'Some requirements of Ryu are conflicting with that of '
- 'OpenStack project: %s' % OPENSTACK_REQUIREMENTS_REPO)
- raise e
diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py
deleted file mode 100644
index 165f8acc..00000000
--- a/tests/unit/test_utils.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import unittest
-import logging
-import six
-from nose.tools import eq_
-
-from ryu import utils
-
-LOG = logging.getLogger(__name__)
-
-
-class Test_utils(unittest.TestCase):
-
- def setUp(self):
- pass
-
- def tearDown(self):
- pass
-
- def test_hex_array_string(self):
- """
- Test hex_array() with str type.
- """
- expected_result = '0x01 0x02 0x03 0x04'
- data = b'\x01\x02\x03\x04'
- eq_(expected_result, utils.hex_array(data))
-
- def test_hex_array_bytearray(self):
- """
- Test hex_array() with bytearray type.
- """
- expected_result = '0x01 0x02 0x03 0x04'
- data = bytearray(b'\x01\x02\x03\x04')
- eq_(expected_result, utils.hex_array(data))
-
- def test_hex_array_bytes(self):
- """
- Test hex_array() with bytes type. (Python3 only)
- """
- if six.PY2:
- return
- expected_result = '0x01 0x02 0x03 0x04'
- data = bytes(b'\x01\x02\x03\x04')
- eq_(expected_result, utils.hex_array(data))
-
- def test_binary_str_string(self):
- """
- Test binary_str() with str type.
- """
- expected_result = '\\x01\\x02\\x03\\x04'
- data = b'\x01\x02\x03\x04'
- eq_(expected_result, utils.binary_str(data))
-
- def test_binary_str_bytearray(self):
- """
- Test binary_str() with bytearray type.
- """
- expected_result = '\\x01\\x02\\x03\\x04'
- data = bytearray(b'\x01\x02\x03\x04')
- eq_(expected_result, utils.binary_str(data))
-
- def test_binary_str_bytes(self):
- """
- Test binary_str() with bytes type. (Python3 only)
- """
- if six.PY2:
- return
- expected_result = '\\x01\\x02\\x03\\x04'
- data = bytes(b'\x01\x02\x03\x04')
- eq_(expected_result, utils.binary_str(data))