Allow building fabric.p4 with custom S1U_SGW_PREFIX

Change-Id: I4fcaf3f2b56e6d024e54f8897467c280be73e001
diff --git a/pipelines/fabric/impl/src/main/resources/include/define.p4 b/pipelines/fabric/impl/src/main/resources/include/define.p4
index 8501516..5dfcb95 100644
--- a/pipelines/fabric/impl/src/main/resources/include/define.p4
+++ b/pipelines/fabric/impl/src/main/resources/include/define.p4
@@ -104,10 +104,13 @@
 typedef bit<32> ctr_id_t;
 typedef bit<32> teid_t;
 
-// spgw.p4 expects uplink packets with IP dst on this subnet
-// 140.0.0.0/8
-const ipv4_addr_t S1U_SGW_PREFIX = 2348810240;
+#ifndef S1U_SGW_PREFIX
+// By default spgw.p4 expects uplink packets with IP dst matching 140.0.0.0/8
+// FIXME: refactor pipeline to remove dependency on this value or allow setting it at runtime
+//  (e.g. via parser value sets)
+#define S1U_SGW_PREFIX (8w140++8w0++8w0++8w0)
 #define S1U_SGW_PREFIX_LEN 8
+#endif
 
 const bit<16> ETHERTYPE_QINQ = 0x88A8;
 const bit<16> ETHERTYPE_QINQ_NON_STD = 0x9100;
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
index c8e585a..d30221f 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
@@ -1476,7 +1476,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 117,
+            "line" : 120,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3200,7 +3200,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 121,
+            "line" : 124,
             "column" : 33,
             "source_fragment" : "0x8864; ..."
           }
@@ -3371,7 +3371,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 123,
+            "line" : 126,
             "column" : 35,
             "source_fragment" : "0x0021; ..."
           }
@@ -3529,7 +3529,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 118,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3608,7 +3608,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3706,7 +3706,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3823,7 +3823,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3842,7 +3842,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
index b79ed6d..7f6ef0d 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
@@ -3342,7 +3342,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 117,
+            "line" : 120,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3402,7 +3402,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 121,
             "column" : 31,
             "source_fragment" : "0x86dd; ..."
           }
@@ -5316,7 +5316,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 150,
+            "line" : 153,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -5402,7 +5402,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 151,
+            "line" : 154,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -5428,7 +5428,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 149,
+            "line" : 152,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -6314,7 +6314,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 132,
+            "line" : 135,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -6470,7 +6470,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 145,
+            "line" : 148,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -6489,7 +6489,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 129,
+            "line" : 132,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -6872,7 +6872,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 121,
+            "line" : 124,
             "column" : 33,
             "source_fragment" : "0x8864; ..."
           }
@@ -7043,7 +7043,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 123,
+            "line" : 126,
             "column" : 35,
             "source_fragment" : "0x0021; ..."
           }
@@ -7069,7 +7069,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 121,
+            "line" : 124,
             "column" : 33,
             "source_fragment" : "0x8864; ..."
           }
@@ -7240,7 +7240,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 124,
+            "line" : 127,
             "column" : 35,
             "source_fragment" : "0x0057; ..."
           }
@@ -7317,7 +7317,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 160,
+            "line" : 163,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -7735,7 +7735,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 156,
+            "line" : 159,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -13765,7 +13765,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 117,
+            "line" : 120,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -13993,7 +13993,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 129,
+            "line" : 132,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -14179,7 +14179,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 166,
+            "line" : 169,
             "column" : 31,
             "source_fragment" : "0; ..."
           }
@@ -14274,7 +14274,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 170,
+            "line" : 173,
             "column" : 21,
             "source_fragment" : "1; ..."
           }
@@ -14846,7 +14846,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 118,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -14925,7 +14925,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -15023,7 +15023,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -15140,7 +15140,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -15159,7 +15159,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
index 13aa90f..931d929 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
@@ -2698,7 +2698,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 160,
+            "line" : 163,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -3116,7 +3116,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 156,
+            "line" : 159,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -9204,7 +9204,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 118,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -9283,7 +9283,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
index 9e0d9a5..50d6f2d 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
@@ -3861,7 +3861,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 150,
+            "line" : 153,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -3947,7 +3947,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 151,
+            "line" : 154,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -3973,7 +3973,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 149,
+            "line" : 152,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -4391,7 +4391,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 132,
+            "line" : 135,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -4547,7 +4547,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 145,
+            "line" : 148,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -4566,7 +4566,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 129,
+            "line" : 132,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -5000,7 +5000,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 160,
+            "line" : 163,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -5418,7 +5418,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 156,
+            "line" : 159,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -11506,7 +11506,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 118,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -11585,7 +11585,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
index e0a3285..4765f10 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
@@ -3481,7 +3481,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 150,
+            "line" : 153,
             "column" : 36,
             "source_fragment" : "2w1; ..."
           }
@@ -3567,7 +3567,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 151,
+            "line" : 154,
             "column" : 38,
             "source_fragment" : "2w2; ..."
           }
@@ -3593,7 +3593,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 149,
+            "line" : 152,
             "column" : 37,
             "source_fragment" : "2w0; ..."
           }
@@ -3987,7 +3987,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 132,
+            "line" : 135,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -4143,7 +4143,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 145,
+            "line" : 148,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -4162,7 +4162,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 129,
+            "line" : 132,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -4677,7 +4677,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 118,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -4756,7 +4756,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
index c152abf..5feb62f 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
@@ -2387,7 +2387,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 118,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2466,7 +2466,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 114,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }