[ONOS-7128] Initial commit of fabric.p4

Change-Id: I5224c411a1eccdbee84b1fc0b1824c5fa922f689
diff --git a/pipelines/fabric/src/main/resources/fabric.p4 b/pipelines/fabric/src/main/resources/fabric.p4
new file mode 100644
index 0000000..e417e4b
--- /dev/null
+++ b/pipelines/fabric/src/main/resources/fabric.p4
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * 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.
+ */
+
+#include <core.p4>
+#include <v1model.p4>
+
+#include "include/control/filtering.p4"
+#include "include/control/forwarding.p4"
+#include "include/control/next.p4"
+#include "include/control/packetio.p4"
+#include "include/control/port_counter.p4"
+#include "include/header.p4"
+#include "include/checksum.p4"
+#include "include/parser.p4"
+
+control FabricIngress (
+inout parsed_headers_t hdr,
+inout fabric_metadata_t fabric_metadata,
+inout standard_metadata_t standard_metadata) {
+    PacketIoIngress() packet_io_ingress;
+    Filtering() filtering;
+    Forwarding() forwarding;
+    Next() next;
+    PortCountersControl() port_counters_control;
+
+    apply {
+        packet_io_ingress.apply(hdr, fabric_metadata, standard_metadata);
+        filtering.apply(hdr, fabric_metadata, standard_metadata);
+        forwarding.apply(hdr, fabric_metadata, standard_metadata);
+        next.apply(hdr, fabric_metadata, standard_metadata);
+        port_counters_control.apply(hdr, fabric_metadata, standard_metadata);
+    }
+}
+
+control FabricEgress (inout parsed_headers_t hdr,
+                      inout fabric_metadata_t fabric_metadata,
+                      inout standard_metadata_t standard_metadata) {
+    PacketIoEgress() pktIoEgress;
+    EgressNextControl() egress_next;
+    apply {
+        egress_next.apply(hdr, fabric_metadata, standard_metadata);
+        pktIoEgress.apply(hdr, fabric_metadata, standard_metadata);
+    }
+}
+
+V1Switch(
+    FabricParser(),
+    FabricVerifyChecksum(),
+    FabricIngress(),
+    FabricEgress(),
+    FabricComputeChecksum(),
+    FabricDeparser()
+) main;