OFパケットをデコードして遊んでみた③

table_features全体をデコードするようにしてみました。 巨大ですね…。これはヒドい。

iex(7)> :timer.tc fn -> do_decode table_features end
{755,
 {:ok,
  [version: 4, type: :multipart_request, xid: 0,
   body: [flags: [:more],
    body: [[table_id: 0, name: "Flow Table 0x00",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, :icmpv6_type,
          :icmpv6_code, :ipv6_nd_target, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, :icmpv6_type,
          :icmpv6_code, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, :icmpv6_type, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, ...]}],
       [experimenter: [experimenter: 101, exp_type: 0, data: ""]],
       [experimenter: [experimenter: 101, exp_type: 1, data: <<0, 0, 0, 1>>]],
       [experimenter: [experimenter: 101, exp_type: 2,
         data: <<0, 0, 0, 1, 0, 0, 0, 2>>]]]],
     [table_id: 1, name: "Flow Table 0x01",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, :icmpv6_type,
          :icmpv6_code, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, :icmpv6_type, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, ...]}]]],
     [table_id: 2, name: "Flow Table 0x02",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, :icmpv6_type, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, ...]}]]],
     [table_id: 3, name: "Flow Table 0x03",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, :ipv6_flabel, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, ...]}]]],
     [table_id: 4, name: "Flow Table 0x04",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, :ipv6_dst, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, ...]}]]],
     [table_id: 5, name: "Flow Table 0x05",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, :ipv6_src, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          ...]}]]],
     [table_id: 6, name: "Flow Table 0x06",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          :arp_tha, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, ...]}]]],
     [table_id: 7, name: "Flow Table 0x07",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, :arp_sha,
          ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, ...]}]]],
     [table_id: 8, name: "Flow Table 0x08",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, ...]}]]],
     [table_id: 9, name: "Flow Table 0x09",
      matadata_match: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      metadata_write: <<255, 255, 255, 255, 255, 255, 255, 255>>,
      max_entries: 16777216,
      properties: [[instructions: {:instruction_ids,
         [goto_table: 131076, write_actions: 262148, clear_actions: 393220]}],
       [next_tables: {:next_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, ...]}],
       [write_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [apply_actions: {:action_ids,
         [:output, :group, :set_queue, :set_mpls_ttl, :dec_mpls_ttl,
          :set_nw_ttl, :dec_nw_ttl, :copy_ttl_out, :copy_ttl_in, :push_vlan,
          :pop_vlan, :push_mpls, :pop_mpls, :push_pbb, :pop_pbb, :set_field]}],
       [match: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, :arp_tpa, ...]}],
       [wildcards: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, :arp_spa, ...]}],
       [write_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, ...]}],
       [apply_setfield: {:oxm_ids,
         [:in_port, :metadata, :eth_dst, :eth_src, :eth_type, :vlan_vid,
          :vlan_pcp, :ip_dscp, :ip_ecn, :ip_proto, :ipv4_src, :ipv4_dst,
          :tcp_src, :tcp_dst, :udp_src, :udp_dst, :sctp_src, :sctp_dst,
          :icmpv4_type, :icmpv4_code, :arp_op, ...]}]]]]]], ""}}