Improve fabric.p4 to reduce pipeline resources and refactor pipeconf impl

This patch affects both the P4 pipeline implementation and the
Java pipeconf.

P4 PIPELINE
- Less tables and smarter use of metadata to reduce inter-tables
dependencies and favor parallel execution of tables.
- Removed unused actions / renamed existing ones to make forwarding
behavior clearer (e.g. ingress_port_vlan table)
- Remove co-existence of simple and hansed table. Hashed should be the
default one, but implementations that do not support action profiles
might compile fabric.p4 to use the simple one.
- Use @name annotations for match fields to make control plane
independent of table implementation.
- Use @hidden to avoid showing actions and table on the p4info that
cannot be controlled at runtime.
- First attempt to support double VLAN cross-connect (xconnect table).
- New design has been tested with "fabric-refactoring" branch of
fabric-p4test:
github.com/opennetworkinglab/fabric-p4test/tree/fabric-refactoring

JAVA PIPECONF
This patch brings a major refactoring that reflects the experience
gathered in the past months of working on fabric.p4 and reasoning on its
pipeconf implementation. Indeed, the FlowObjective API is
under-specified and sometimes ambiguous which makes the process of
creating and maintaining a pipeliner implementation tedious. This
refactoring brings a simplified implementation by removing unused/
unnecessary functionalities and by recognizing commonality when possible
(e.g. by means of abstract and utility classes). It also makes design
patterns more explicit and consistent. Overall, the goal is to reduce
technical debt and to make it easier to support new features as we
evolve fabric.p4

Changes include:
- Changes in pipeliner/interpreter to reflect new pipeline design.
- By default translate objective treatment to PiAction. This favors
debuggability of flow rules in ONOS.
- Support new NextObjective’s NextTreatment class.
- Remove lots of unused/unnecessary code (e.g. async callback handling
for pending objective install status in pipeliner as current
implementation was always returning success)
- Gather commonality in abstract classes and simplify implementation
for objective translator (filtering, forwarding, next)
- New implementation of ForwardingFunctionTypes (FFT) that looks at
criterion instance values along with their types (to avoid relying on
case-specific if-else conditions to recognize variants of an FFT)
- Adaptive translation of NextObjective based on presence of simple or
hashed table.
- Support DENY FilteringObjective

Also:
- Fix onos-p4-gen-constants to avoid generating conflicting
PiMatchFieldId variable names.
- Install Graphviz tools in p4vm to generate p4c graphs
- Generate p4c graphs by default when compiling fabric.p4
- Use more compact Hex string when printing PI values

Change-Id: Ife79e44054dc5bc48833f95d0551a7370150eac5
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
index 07bb862..9ecc65f 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
@@ -33,55 +33,49 @@
     }
 
     // Header field IDs
-    public static final PiMatchFieldId HDR_VLAN_TAG_VLAN_ID =
-            PiMatchFieldId.of("hdr.vlan_tag.vlan_id");
+    public static final PiMatchFieldId HDR_ICMP_CODE =
+            PiMatchFieldId.of("icmp_code");
+    public static final PiMatchFieldId HDR_IG_PORT =
+            PiMatchFieldId.of("ig_port");
+    public static final PiMatchFieldId HDR_ETH_DST =
+            PiMatchFieldId.of("eth_dst");
+    public static final PiMatchFieldId HDR_GTP_IPV4_DST =
+            PiMatchFieldId.of("gtp_ipv4_dst");
+    public static final PiMatchFieldId HDR_VLAN_IS_VALID =
+            PiMatchFieldId.of("vlan_is_valid");
+    public static final PiMatchFieldId HDR_IPV4_DST =
+            PiMatchFieldId.of("ipv4_dst");
+    public static final PiMatchFieldId HDR_INT_IS_VALID =
+            PiMatchFieldId.of("int_is_valid");
+    public static final PiMatchFieldId HDR_EG_PORT =
+            PiMatchFieldId.of("eg_port");
+    public static final PiMatchFieldId HDR_EG_SPEC =
+            PiMatchFieldId.of("eg_spec");
+    public static final PiMatchFieldId HDR_IPV4_SRC =
+            PiMatchFieldId.of("ipv4_src");
+    public static final PiMatchFieldId HDR_IPV6_DST =
+            PiMatchFieldId.of("ipv6_dst");
+    public static final PiMatchFieldId HDR_ETH_TYPE =
+            PiMatchFieldId.of("eth_type");
     public static final PiMatchFieldId HDR_MPLS_LABEL =
-            PiMatchFieldId.of("hdr.mpls.label");
-    public static final PiMatchFieldId STANDARD_METADATA_EGRESS_PORT =
-            PiMatchFieldId.of("standard_metadata.egress_port");
-    public static final PiMatchFieldId STANDARD_METADATA_INGRESS_PORT =
-            PiMatchFieldId.of("standard_metadata.ingress_port");
-    public static final PiMatchFieldId HDR_VLAN_TAG_IS_VALID =
-            PiMatchFieldId.of("hdr.vlan_tag.is_valid");
-    public static final PiMatchFieldId HDR_ICMP_ICMP_CODE =
-            PiMatchFieldId.of("hdr.icmp.icmp_code");
-    public static final PiMatchFieldId HDR_INT_HEADER_IS_VALID =
-            PiMatchFieldId.of("hdr.int_header.is_valid");
-    public static final PiMatchFieldId HDR_ETHERNET_SRC_ADDR =
-            PiMatchFieldId.of("hdr.ethernet.src_addr");
-    public static final PiMatchFieldId HDR_ICMP_ICMP_TYPE =
-            PiMatchFieldId.of("hdr.icmp.icmp_type");
-    public static final PiMatchFieldId HDR_VLAN_TAG_ETHER_TYPE =
-            PiMatchFieldId.of("hdr.vlan_tag.ether_type");
-    public static final PiMatchFieldId HDR_IPV4_DST_ADDR =
-            PiMatchFieldId.of("hdr.ipv4.dst_addr");
-    public static final PiMatchFieldId HDR_INT_HEADER_INSTRUCTION_MASK_0003 =
-            PiMatchFieldId.of("hdr.int_header.instruction_mask_0003");
-    public static final PiMatchFieldId FABRIC_METADATA_L4_SRC_PORT =
-            PiMatchFieldId.of("fabric_metadata.l4_src_port");
-    public static final PiMatchFieldId FABRIC_METADATA_L4_DST_PORT =
-            PiMatchFieldId.of("fabric_metadata.l4_dst_port");
-    public static final PiMatchFieldId STANDARD_METADATA_EGRESS_SPEC =
-            PiMatchFieldId.of("standard_metadata.egress_spec");
-    public static final PiMatchFieldId GTPU_IPV4_DST_ADDR =
-            PiMatchFieldId.of("gtpu_ipv4.dst_addr");
-    public static final PiMatchFieldId FABRIC_METADATA_IP_PROTO =
-            PiMatchFieldId.of("fabric_metadata.ip_proto");
-    public static final PiMatchFieldId FABRIC_METADATA_NEXT_ID =
-            PiMatchFieldId.of("fabric_metadata.next_id");
-    public static final PiMatchFieldId HDR_IPV4_SRC_ADDR =
-            PiMatchFieldId.of("hdr.ipv4.src_addr");
-    public static final PiMatchFieldId HDR_INT_HEADER_INSTRUCTION_MASK_0407 =
-            PiMatchFieldId.of("hdr.int_header.instruction_mask_0407");
-    public static final PiMatchFieldId HDR_IPV6_DST_ADDR =
-            PiMatchFieldId.of("hdr.ipv6.dst_addr");
-    public static final PiMatchFieldId IPV4_DST_ADDR =
-            PiMatchFieldId.of("ipv4.dst_addr");
-    public static final PiMatchFieldId HDR_ETHERNET_DST_ADDR =
-            PiMatchFieldId.of("hdr.ethernet.dst_addr");
+            PiMatchFieldId.of("mpls_label");
+    public static final PiMatchFieldId HDR_ETH_SRC =
+            PiMatchFieldId.of("eth_src");
+    public static final PiMatchFieldId HDR_IP_PROTO =
+            PiMatchFieldId.of("ip_proto");
+    public static final PiMatchFieldId HDR_L4_DPORT =
+            PiMatchFieldId.of("l4_dport");
+    public static final PiMatchFieldId HDR_NEXT_ID =
+            PiMatchFieldId.of("next_id");
+    public static final PiMatchFieldId HDR_ICMP_TYPE =
+            PiMatchFieldId.of("icmp_type");
+    public static final PiMatchFieldId HDR_VLAN_ID =
+            PiMatchFieldId.of("vlan_id");
+    public static final PiMatchFieldId HDR_L4_SPORT =
+            PiMatchFieldId.of("l4_sport");
     // Table IDs
-    public static final PiTableId FABRIC_INGRESS_FORWARDING_ACL =
-            PiTableId.of("FabricIngress.forwarding.acl");
+    public static final PiTableId FABRIC_INGRESS_NEXT_MULTICAST =
+            PiTableId.of("FabricIngress.next.multicast");
     public static final PiTableId FABRIC_INGRESS_NEXT_HASHED =
             PiTableId.of("FabricIngress.next.hashed");
     public static final PiTableId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_SOURCE_TB_INT_SOURCE =
@@ -92,12 +86,12 @@
             PiTableId.of("FabricIngress.process_set_source_sink.tb_set_sink");
     public static final PiTableId FABRIC_INGRESS_FORWARDING_ROUTING_V4 =
             PiTableId.of("FabricIngress.forwarding.routing_v4");
-    public static final PiTableId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_TB_INT_INST_0407 =
-            PiTableId.of("FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407");
     public static final PiTableId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_TB_INT_INSERT =
             PiTableId.of("FabricEgress.process_int_main.process_int_transit.tb_int_insert");
-    public static final PiTableId FABRIC_INGRESS_NEXT_SIMPLE =
-            PiTableId.of("FabricIngress.next.simple");
+    public static final PiTableId FABRIC_INGRESS_ACL_ACL =
+            PiTableId.of("FabricIngress.acl.acl");
+    public static final PiTableId FABRIC_INGRESS_NEXT_XCONNECT =
+            PiTableId.of("FabricIngress.next.xconnect");
     public static final PiTableId FABRIC_INGRESS_FILTERING_FWD_CLASSIFIER =
             PiTableId.of("FabricIngress.filtering.fwd_classifier");
     public static final PiTableId FABRIC_INGRESS_PROCESS_SET_SOURCE_SINK_TB_SET_SOURCE =
@@ -106,20 +100,18 @@
             PiTableId.of("FabricIngress.forwarding.bridging");
     public static final PiTableId FABRIC_INGRESS_SPGW_INGRESS_S1U_FILTER_TABLE =
             PiTableId.of("FabricIngress.spgw_ingress.s1u_filter_table");
-    public static final PiTableId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_TB_INT_INST_0003 =
-            PiTableId.of("FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003");
-    public static final PiTableId FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN =
-            PiTableId.of("FabricIngress.filtering.ingress_port_vlan");
     public static final PiTableId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_REPORT_TB_GENERATE_REPORT =
             PiTableId.of("FabricEgress.process_int_main.process_int_report.tb_generate_report");
+    public static final PiTableId FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN =
+            PiTableId.of("FabricIngress.filtering.ingress_port_vlan");
     public static final PiTableId FABRIC_INGRESS_SPGW_INGRESS_DL_SESS_LOOKUP =
             PiTableId.of("FabricIngress.spgw_ingress.dl_sess_lookup");
     public static final PiTableId FABRIC_EGRESS_EGRESS_NEXT_EGRESS_VLAN =
             PiTableId.of("FabricEgress.egress_next.egress_vlan");
-    public static final PiTableId FABRIC_INGRESS_NEXT_MULTICAST =
-            PiTableId.of("FabricIngress.next.multicast");
-    public static final PiTableId FABRIC_INGRESS_NEXT_VLAN_META =
-            PiTableId.of("FabricIngress.next.vlan_meta");
+    public static final PiTableId FABRIC_INGRESS_NEXT_NEXT_VLAN =
+            PiTableId.of("FabricIngress.next.next_vlan");
+    public static final PiTableId FABRIC_INGRESS_NEXT_SIMPLE =
+            PiTableId.of("FabricIngress.next.simple");
     public static final PiTableId FABRIC_INGRESS_FORWARDING_ROUTING_V6 =
             PiTableId.of("FabricIngress.forwarding.routing_v6");
     // Indirect Counter IDs
@@ -128,12 +120,10 @@
     public static final PiCounterId FABRIC_INGRESS_PORT_COUNTERS_CONTROL_INGRESS_PORT_COUNTER =
             PiCounterId.of("FabricIngress.port_counters_control.ingress_port_counter");
     // Direct Counter IDs
-    public static final PiCounterId FABRIC_INGRESS_FORWARDING_ACL_COUNTER =
-            PiCounterId.of("FabricIngress.forwarding.acl_counter");
     public static final PiCounterId FABRIC_INGRESS_NEXT_MULTICAST_COUNTER =
             PiCounterId.of("FabricIngress.next.multicast_counter");
-    public static final PiCounterId FABRIC_INGRESS_NEXT_VLAN_META_COUNTER =
-            PiCounterId.of("FabricIngress.next.vlan_meta_counter");
+    public static final PiCounterId FABRIC_INGRESS_NEXT_SIMPLE_COUNTER =
+            PiCounterId.of("FabricIngress.next.simple_counter");
     public static final PiCounterId FABRIC_INGRESS_FILTERING_FWD_CLASSIFIER_COUNTER =
             PiCounterId.of("FabricIngress.filtering.fwd_classifier_counter");
     public static final PiCounterId FABRIC_INGRESS_FORWARDING_BRIDGING_COUNTER =
@@ -146,12 +136,16 @@
             PiCounterId.of("FabricEgress.process_int_main.process_int_source.counter_int_source");
     public static final PiCounterId FABRIC_INGRESS_SPGW_INGRESS_UE_COUNTER =
             PiCounterId.of("FabricIngress.spgw_ingress.ue_counter");
-    public static final PiCounterId FABRIC_INGRESS_NEXT_SIMPLE_COUNTER =
-            PiCounterId.of("FabricIngress.next.simple_counter");
     public static final PiCounterId FABRIC_INGRESS_PROCESS_SET_SOURCE_SINK_COUNTER_SET_SINK =
             PiCounterId.of("FabricIngress.process_set_source_sink.counter_set_sink");
     public static final PiCounterId FABRIC_EGRESS_EGRESS_NEXT_EGRESS_VLAN_COUNTER =
             PiCounterId.of("FabricEgress.egress_next.egress_vlan_counter");
+    public static final PiCounterId FABRIC_INGRESS_ACL_ACL_COUNTER =
+            PiCounterId.of("FabricIngress.acl.acl_counter");
+    public static final PiCounterId FABRIC_INGRESS_NEXT_XCONNECT_COUNTER =
+            PiCounterId.of("FabricIngress.next.xconnect_counter");
+    public static final PiCounterId FABRIC_INGRESS_NEXT_NEXT_VLAN_COUNTER =
+            PiCounterId.of("FabricIngress.next.next_vlan_counter");
     public static final PiCounterId FABRIC_INGRESS_FORWARDING_ROUTING_V6_COUNTER =
             PiCounterId.of("FabricIngress.forwarding.routing_v6_counter");
     public static final PiCounterId FABRIC_INGRESS_FILTERING_INGRESS_PORT_VLAN_COUNTER =
@@ -161,151 +155,73 @@
     public static final PiCounterId FABRIC_INGRESS_NEXT_HASHED_COUNTER =
             PiCounterId.of("FabricIngress.next.hashed_counter");
     // Action IDs
-    public static final PiActionId FABRIC_INGRESS_FORWARDING_PUNT_TO_CPU =
-            PiActionId.of("FabricIngress.forwarding.punt_to_cpu");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I5 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5");
-    public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V6_SIMPLE =
-            PiActionId.of("FabricIngress.next.mpls_routing_v6_simple");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I12 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12");
+    public static final PiActionId FABRIC_INGRESS_NEXT_SET_NEXT_ID_XCONNECT =
+            PiActionId.of("FabricIngress.next.set_next_id_xconnect");
     public static final PiActionId FABRIC_INGRESS_FORWARDING_NOP_ROUTING_V4 =
             PiActionId.of("FabricIngress.forwarding.nop_routing_v4");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I10 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I11 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11");
-    public static final PiActionId FABRIC_INGRESS_FILTERING_NOP_INGRESS_PORT_VLAN =
-            PiActionId.of("FabricIngress.filtering.nop_ingress_port_vlan");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I14 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14");
+    public static final PiActionId FABRIC_INGRESS_FILTERING_PERMIT_WITH_INTERNAL_VLAN =
+            PiActionId.of("FabricIngress.filtering.permit_with_internal_vlan");
+    public static final PiActionId FABRIC_INGRESS_NEXT_ROUTING_HASHED =
+            PiActionId.of("FabricIngress.next.routing_hashed");
     public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_BRIDGING =
             PiActionId.of("FabricIngress.forwarding.set_next_id_bridging");
     public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_SOURCE_INT_SOURCE_DSCP =
             PiActionId.of("FabricEgress.process_int_main.process_int_source.int_source_dscp");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I0 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0");
     public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INIT_METADATA =
             PiActionId.of("FabricEgress.process_int_main.process_int_transit.init_metadata");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I14 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14");
-    public static final PiActionId FABRIC_EGRESS_EGRESS_NEXT_POP_VLAN =
-            PiActionId.of("FabricEgress.egress_next.pop_vlan");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I4 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I2 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2");
+    public static final PiActionId FABRIC_INGRESS_ACL_DROP =
+            PiActionId.of("FabricIngress.acl.drop");
     public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN =
             PiActionId.of("FabricIngress.next.set_vlan");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I4 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4");
-    public static final PiActionId FABRIC_EGRESS_SPGW_EGRESS_GTPU_ENCAP =
-            PiActionId.of("FabricEgress.spgw_egress.gtpu_encap");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I12 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I13 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13");
-    public static final PiActionId FABRIC_INGRESS_FILTERING_SET_VLAN =
-            PiActionId.of("FabricIngress.filtering.set_vlan");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I11 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11");
-    public static final PiActionId FABRIC_EGRESS_PKT_IO_EGRESS_POP_VLAN =
-            PiActionId.of("FabricEgress.pkt_io_egress.pop_vlan");
-    public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING_SIMPLE =
-            PiActionId.of("FabricIngress.next.l3_routing_simple");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I15 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15");
-    public static final PiActionId FABRIC_INGRESS_NEXT_SET_MCAST_GROUP =
-            PiActionId.of("FabricIngress.next.set_mcast_group");
+    public static final PiActionId FABRIC_INGRESS_ACL_NOP_ACL =
+            PiActionId.of("FabricIngress.acl.nop_acl");
+    public static final PiActionId FABRIC_INGRESS_NEXT_OUTPUT_XCONNECT =
+            PiActionId.of("FabricIngress.next.output_xconnect");
+    public static final PiActionId FABRIC_INGRESS_ACL_SET_NEXT_ID_ACL =
+            PiActionId.of("FabricIngress.acl.set_next_id_acl");
+    public static final PiActionId FABRIC_INGRESS_FILTERING_PERMIT =
+            PiActionId.of("FabricIngress.filtering.permit");
     public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_ROUTING_V4 =
             PiActionId.of("FabricIngress.forwarding.set_next_id_routing_v4");
     public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_ROUTING_V6 =
             PiActionId.of("FabricIngress.forwarding.set_next_id_routing_v6");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I13 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13");
+    public static final PiActionId FABRIC_INGRESS_NEXT_ROUTING_SIMPLE =
+            PiActionId.of("FabricIngress.next.routing_simple");
     public static final PiActionId FABRIC_INGRESS_SPGW_INGRESS_SET_DL_SESS_INFO =
             PiActionId.of("FabricIngress.spgw_ingress.set_dl_sess_info");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I7 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7");
-    public static final PiActionId FABRIC_INGRESS_FILTERING_PUSH_INTERNAL_VLAN =
-            PiActionId.of("FabricIngress.filtering.push_internal_vlan");
-    public static final PiActionId FABRIC_INGRESS_FORWARDING_CLONE_TO_CPU =
-            PiActionId.of("FabricIngress.forwarding.clone_to_cpu");
-    public static final PiActionId FABRIC_INGRESS_SPGW_INGRESS_GTPU_DECAP =
-            PiActionId.of("FabricIngress.spgw_ingress.gtpu_decap");
+    public static final PiActionId FABRIC_INGRESS_NEXT_OUTPUT_HASHED =
+            PiActionId.of("FabricIngress.next.output_hashed");
     public static final PiActionId FABRIC_INGRESS_FORWARDING_POP_MPLS_AND_NEXT =
             PiActionId.of("FabricIngress.forwarding.pop_mpls_and_next");
-    public static final PiActionId DROP_NOW = PiActionId.of("drop_now");
-    public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING_HASHED =
-            PiActionId.of("FabricIngress.next.l3_routing_hashed");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I10 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I8 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I0 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0");
+    public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_SIMPLE =
+            PiActionId.of("FabricIngress.next.mpls_routing_simple");
+    public static final PiActionId FABRIC_INGRESS_ACL_PUNT_TO_CPU =
+            PiActionId.of("FabricIngress.acl.punt_to_cpu");
+    public static final PiActionId FABRIC_EGRESS_EGRESS_NEXT_POP_VLAN =
+            PiActionId.of("FabricEgress.egress_next.pop_vlan");
     public static final PiActionId FABRIC_INGRESS_PROCESS_SET_SOURCE_SINK_INT_SET_SINK =
             PiActionId.of("FabricIngress.process_set_source_sink.int_set_sink");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_SINK_INT_SINK =
-            PiActionId.of("FabricEgress.process_int_main.process_int_sink.int_sink");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I1 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1");
-    public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V4_HASHED =
-            PiActionId.of("FabricIngress.next.mpls_routing_v4_hashed");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I1 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1");
+    public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_HASHED =
+            PiActionId.of("FabricIngress.next.mpls_routing_hashed");
     public static final PiActionId FABRIC_INGRESS_PROCESS_SET_SOURCE_SINK_INT_SET_SOURCE =
             PiActionId.of("FabricIngress.process_set_source_sink.int_set_source");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I3 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3");
     public static final PiActionId NOP = PiActionId.of("nop");
-    public static final PiActionId FABRIC_INGRESS_FORWARDING_DROP =
-            PiActionId.of("FabricIngress.forwarding.drop");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I6 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6");
     public static final PiActionId FABRIC_INGRESS_NEXT_OUTPUT_SIMPLE =
             PiActionId.of("FabricIngress.next.output_simple");
-    public static final PiActionId FABRIC_INGRESS_FILTERING_DROP =
-            PiActionId.of("FabricIngress.filtering.drop");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_SINK_RESTORE_HEADER =
-            PiActionId.of("FabricEgress.process_int_main.process_int_sink.restore_header");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I9 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9");
+    public static final PiActionId FABRIC_INGRESS_ACL_CLONE_TO_CPU =
+            PiActionId.of("FabricIngress.acl.clone_to_cpu");
+    public static final PiActionId FABRIC_INGRESS_FILTERING_DENY =
+            PiActionId.of("FabricIngress.filtering.deny");
     public static final PiActionId FABRIC_INGRESS_FILTERING_SET_FORWARDING_TYPE =
             PiActionId.of("FabricIngress.filtering.set_forwarding_type");
-    public static final PiActionId FABRIC_INGRESS_NEXT_SET_VLAN_OUTPUT =
-            PiActionId.of("FabricIngress.next.set_vlan_output");
     public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_REPORT_DO_REPORT_ENCAPSULATION =
             PiActionId.of("FabricEgress.process_int_main.process_int_report.do_report_encapsulation");
     public static final PiActionId NO_ACTION = PiActionId.of("NoAction");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I8 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I9 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0407_I15 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15");
-    public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V4_SIMPLE =
-            PiActionId.of("FabricIngress.next.mpls_routing_v4_simple");
-    public static final PiActionId FABRIC_INGRESS_FORWARDING_NOP_ACL =
-            PiActionId.of("FabricIngress.forwarding.nop_acl");
-    public static final PiActionId FABRIC_INGRESS_NEXT_MPLS_ROUTING_V6_HASHED =
-            PiActionId.of("FabricIngress.next.mpls_routing_v6_hashed");
-    public static final PiActionId FABRIC_INGRESS_NEXT_L3_ROUTING_VLAN =
-            PiActionId.of("FabricIngress.next.l3_routing_vlan");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I2 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I3 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3");
-    public static final PiActionId FABRIC_INGRESS_FORWARDING_SET_NEXT_ID_ACL =
-            PiActionId.of("FabricIngress.forwarding.set_next_id_acl");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I5 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I6 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6");
-    public static final PiActionId FABRIC_EGRESS_PROCESS_INT_MAIN_PROCESS_INT_TRANSIT_INT_SET_HEADER_0003_I7 =
-            PiActionId.of("FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7");
+    public static final PiActionId FABRIC_INGRESS_NEXT_SET_MCAST_GROUP_ID =
+            PiActionId.of("FabricIngress.next.set_mcast_group_id");
     // Action Param IDs
     public static final PiActionParamId DMAC = PiActionParamId.of("dmac");
+    public static final PiActionParamId INS_CNT = PiActionParamId.of("ins_cnt");
     public static final PiActionParamId MON_IP = PiActionParamId.of("mon_ip");
     public static final PiActionParamId TEID = PiActionParamId.of("teid");
     public static final PiActionParamId INS_MASK0407 =
@@ -322,22 +238,21 @@
     public static final PiActionParamId SMAC = PiActionParamId.of("smac");
     public static final PiActionParamId MON_PORT =
             PiActionParamId.of("mon_port");
-    public static final PiActionParamId GID = PiActionParamId.of("gid");
-    public static final PiActionParamId NEW_VLAN_ID =
-            PiActionParamId.of("new_vlan_id");
     public static final PiActionParamId FWD_TYPE =
             PiActionParamId.of("fwd_type");
     public static final PiActionParamId MON_MAC = PiActionParamId.of("mon_mac");
     public static final PiActionParamId SRC_MAC = PiActionParamId.of("src_mac");
     public static final PiActionParamId NEXT_ID = PiActionParamId.of("next_id");
-    public static final PiActionParamId INS_CNT = PiActionParamId.of("ins_cnt");
+    public static final PiActionParamId GROUP_ID =
+            PiActionParamId.of("group_id");
     public static final PiActionParamId SWITCH_ID =
             PiActionParamId.of("switch_id");
     public static final PiActionParamId MAX_HOP = PiActionParamId.of("max_hop");
+    public static final PiActionParamId VLAN_ID = PiActionParamId.of("vlan_id");
     public static final PiActionParamId SRC_IP = PiActionParamId.of("src_ip");
     // Action Profile IDs
-    public static final PiActionProfileId FABRIC_INGRESS_NEXT_ECMP_SELECTOR =
-            PiActionProfileId.of("FabricIngress.next.ecmp_selector");
+    public static final PiActionProfileId FABRIC_INGRESS_NEXT_HASHED_SELECTOR =
+            PiActionProfileId.of("FabricIngress.next.hashed_selector");
     // Packet Metadata IDs
     public static final PiControlMetadataId INGRESS_PORT =
             PiControlMetadataId.of("ingress_port");