diff --git a/pipelines/fabric/src/main/resources/include/parser.p4 b/pipelines/fabric/src/main/resources/include/parser.p4
index e234676..2d6a1d4 100644
--- a/pipelines/fabric/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/src/main/resources/include/parser.p4
@@ -40,14 +40,14 @@
 
     state parse_ethernet {
         packet.extract(hdr.ethernet);
-        fabric_metadata.eth_type = hdr.ethernet.eth_type;
+        fabric_metadata.last_eth_type = hdr.ethernet.eth_type;
         fabric_metadata.vlan_id = DEFAULT_VLAN_ID;
         transition select(hdr.ethernet.eth_type){
             ETHERTYPE_VLAN: parse_vlan_tag;
             ETHERTYPE_MPLS: parse_mpls;
-            ETHERTYPE_IPV4: parse_ipv4;
+            ETHERTYPE_IPV4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            ETHERTYPE_IPV6: parse_ipv6;
+            ETHERTYPE_IPV6: pre_parse_ipv6;
 #endif // WITH_IPV6
             default: accept;
         }
@@ -56,25 +56,27 @@
     state parse_vlan_tag {
         packet.extract(hdr.vlan_tag);
         transition select(hdr.vlan_tag.eth_type){
-            ETHERTYPE_IPV4: parse_ipv4;
+            ETHERTYPE_IPV4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            ETHERTYPE_IPV6: parse_ipv6;
+            ETHERTYPE_IPV6: pre_parse_ipv6;
 #endif // WITH_IPV6
             ETHERTYPE_MPLS: parse_mpls;
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
             ETHERTYPE_VLAN: parse_inner_vlan_tag;
+            ETHERTYPE_QINQ: parse_inner_vlan_tag;
+            ETHERTYPE_QINQ_NON_STD: parse_inner_vlan_tag;
 #endif // WITH_XCONNECT
             default: accept;
         }
     }
 
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
     state parse_inner_vlan_tag {
         packet.extract(hdr.inner_vlan_tag);
         transition select(hdr.inner_vlan_tag.eth_type){
-            ETHERTYPE_IPV4: parse_ipv4;
+            ETHERTYPE_IPV4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            ETHERTYPE_IPV6: parse_ipv6;
+            ETHERTYPE_IPV6: pre_parse_ipv6;
 #endif // WITH_IPV6
             ETHERTYPE_MPLS: parse_mpls;
 #ifdef WITH_BNG
@@ -84,16 +86,16 @@
             default: accept;
         }
     }
-#endif // WITH_XCONNECT
+#endif // WITH_XCONNECT || WITH_BNG || WITH_DOUBLE_VLAN_TERMINATION
 
 #ifdef WITH_BNG
     state parse_pppoe {
         packet.extract(hdr.pppoe);
         transition select(hdr.pppoe.protocol) {
             PPPOE_PROTOCOL_MPLS: parse_mpls;
-            PPPOE_PROTOCOL_IP4: parse_ipv4;
+            PPPOE_PROTOCOL_IP4: pre_parse_ipv4;
 #ifdef WITH_IPV6
-            PPPOE_PROTOCOL_IP6: parse_ipv6;
+            PPPOE_PROTOCOL_IP6: pre_parse_ipv6;
 #endif // WITH_IPV6
             default: accept;
         }
@@ -102,13 +104,16 @@
 
     state parse_mpls {
         packet.extract(hdr.mpls);
+        fabric_metadata.is_mpls = _TRUE;
         fabric_metadata.mpls_label = hdr.mpls.label;
         fabric_metadata.mpls_ttl = hdr.mpls.ttl;
         // There is only one MPLS label for this fabric.
         // Assume header after MPLS header is IPv4/IPv6
         // Lookup first 4 bits for version
         transition select(packet.lookahead<bit<IP_VER_LENGTH>>()) {
-            //The packet should be either IPv4 or IPv6.
+            // The packet should be either IPv4 or IPv6.
+            // If we have MPLS, go directly to parsing state without
+            // moving to pre_ states, the packet is considered MPLS
             IP_VERSION_4: parse_ipv4;
 #ifdef WITH_IPV6
             IP_VERSION_6: parse_ipv6;
@@ -117,6 +122,11 @@
         }
     }
 
+    // Intermediate state to set is_ipv4
+    state pre_parse_ipv4 {
+        fabric_metadata.is_ipv4 = _TRUE;
+        transition parse_ipv4;
+    }
     state parse_ipv4 {
         packet.extract(hdr.ipv4);
         fabric_metadata.ip_proto = hdr.ipv4.protocol;
@@ -132,6 +142,11 @@
     }
 
 #ifdef WITH_IPV6
+    // Intermediate state to set is_ipv6
+    state pre_parse_ipv6 {
+        fabric_metadata.is_ipv6 = _TRUE;
+        transition parse_ipv6;
+    }
     state parse_ipv6 {
         packet.extract(hdr.ipv6);
         fabric_metadata.ip_proto = hdr.ipv6.next_hdr;
@@ -270,9 +285,9 @@
 #endif // WITH_INT_SINK
         packet.emit(hdr.ethernet);
         packet.emit(hdr.vlan_tag);
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
         packet.emit(hdr.inner_vlan_tag);
-#endif // WITH_XCONNECT
+#endif // WITH_XCONNECT || WITH_BNG || WITH_DOUBLE_VLAN_TERMINATION
 #ifdef WITH_BNG
         packet.emit(hdr.pppoe);
 #endif // WITH_BNG
