diff --git a/src/tests/p4-fabric-tna/run_test_04a_service_provision_l3.sh b/src/tests/p4-fabric-tna/run_test_04a_service_provision_l3.sh deleted file mode 100755 index 6bec4a8929394ed7526dee1c840c3cb46efbcce2..0000000000000000000000000000000000000000 --- a/src/tests/p4-fabric-tna/run_test_04a_service_provision_l3.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# 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. - -source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l3.py diff --git a/src/tests/p4-fabric-tna/run_test_04b_service_deprovision_l3.sh b/src/tests/p4-fabric-tna/run_test_04b_service_deprovision_l3.sh deleted file mode 100755 index eeb64cdd20f9cfc16068ac889585dca7ac6467a4..0000000000000000000000000000000000000000 --- a/src/tests/p4-fabric-tna/run_test_04b_service_deprovision_l3.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# 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. - -source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l3.py diff --git a/src/tests/p4-fabric-tna/run_test_05a_service_provision_acl.sh b/src/tests/p4-fabric-tna/run_test_05a_service_provision_acl.sh deleted file mode 100755 index cbc0d3a2556abdc5ba80a5d2cc851b4f4285cbb0..0000000000000000000000000000000000000000 --- a/src/tests/p4-fabric-tna/run_test_05a_service_provision_acl.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# 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. - -source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_acl.py diff --git a/src/tests/p4-fabric-tna/run_test_05b_service_deprovision_acl.sh b/src/tests/p4-fabric-tna/run_test_05b_service_deprovision_acl.sh deleted file mode 100755 index 253b51622eae6a39a4fc60de24c45221ea913235..0000000000000000000000000000000000000000 --- a/src/tests/p4-fabric-tna/run_test_05b_service_deprovision_acl.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# 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. - -source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_acl.py diff --git a/src/tests/p4-fabric-tna/run_test_06a_service_provision_int.sh b/src/tests/p4-fabric-tna/run_test_06a_service_provision_int.sh deleted file mode 100755 index c3e1b285566dc943a7c1324872bc136e4b4cf713..0000000000000000000000000000000000000000 --- a/src/tests/p4-fabric-tna/run_test_06a_service_provision_int.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# 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. - -source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_int.py diff --git a/src/tests/p4-fabric-tna/run_test_06b_service_deprovision_int.sh b/src/tests/p4-fabric-tna/run_test_06b_service_deprovision_int.sh deleted file mode 100755 index 5e3b1a5ff43e1e1a944bf5d9bdb53e96f0940285..0000000000000000000000000000000000000000 --- a/src/tests/p4-fabric-tna/run_test_06b_service_deprovision_int.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# 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. - -source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_int.py diff --git a/src/tests/p4-sd-fabric-sbi-connectivity/README.md b/src/tests/p4-sd-fabric-sbi-connectivity/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0ff0ee6ed4f5d1133b657d54a76e421c68d8cce8 --- /dev/null +++ b/src/tests/p4-sd-fabric-sbi-connectivity/README.md @@ -0,0 +1,185 @@ +# Tests for P4 routing, ACL, and In-Band Network Telemetry functions via TFS SBI + +This directory contains the necessary scripts and configurations to run tests atop a Stratum-based P4 whitebox that performs a set of network functions, including forwarding (L2), routing (L3), L3/L4 access control list (ACL), and In-Band Network Telemetry (INT). +The P4 data plane is based on ONF's SD-Fabric implementation, titled [fabric-tna](https://github.com/stratum/fabric-tna) + +## Prerequisites + +You need Python3, which should already be installed while preparing for a TFS build. +Additionally, `pytest` is also mandatory as it is used by our tests below. +Aliasing python with python3 will also help bridging issues between older and newer python versions. + +```shell +alias python='python3' +pip3 install pytest +pip3 install grpclib protobuf +pip3 install grpcio-tools +``` + +The versions used for this test are: + +- `protobuf` 3.20.3 +- `grpclib` 0.4.4 +- `grpcio` 1.47.5 +- `grpcio-tools` 1.47.5 + +After the installation of `grpclib`, protoc-gen-grpclib_python binary is in /home/$USER/.local/bin/ +First we copy it to /usr/local/bin/: + +```shell + sudo cp /home/$USER/.local/bin/protoc-gen-grpclib_python /usr/local/bin/ +``` + +Then, we include this path to the PYTHONPATH: + +```shell +export PYTHONPATH="${PYTHONPATH}:/usr/local/bin/protoc-gen-grpclib_python" +``` + +You need to build and deploy a software-based Stratum switch, before being able to use TFS to control it. +To do so, follow the instructions in the `./topology` folder. + +## Steps to setup and run a TFS program atop Stratum + +To conduct this test, follow the steps below. + +### Deploy TFS + +Go to the TFS parent folder. + +```shell +cd ~/tfs-ctrl/ +``` + +Edit `my_deploy.sh` to include the following TFS components and then source the file. + +```shell +nano my_deploy.sh +`export TFS_COMPONENTS="context device pathcomp service kpi_manager kpi_value_writer kpi_value_api telemetry nbi webui"` +``` + +```shell +source my_deploy.sh && source tfs_runtime_env_vars.sh +``` + +Now deploy TFS: + +```shell +./deploy/all.sh +``` + +When deployed, execute the following command to ensure that the above components are all in place and in a running state: + +```shell +./deploy/show.sh +``` + +### Path setup + +Ensure that `PATH` variable contains the parent project directory, e.g., "home/$USER/tfs-ctrl". + +Ensure that `PYTHONPATH` variable contains the source code directory of TFS, e.g., "home/$USER/tfs-ctrl/src" + +## Topology setup + +Go to `src/tests/p4-topologies/` and follow the instructions on how to install Mininet in your machine. +After Mininet is installed, run the following command to deploy a single switch P4 topology on Mininet. + +```bash +cd ~/tfs-ctrl/src/tests/p4-topologies/topo-mininet/ +sudo python3 topo-mininet/1switch1path-int.py --host-int-iface=eth0 +``` + +You may need to change the `host-int-iface` to a network interface that suits your setup. +This is the interface through which Mininet sends in-band network telemetry packets to TFS. + +## P4 artifacts + +In the `./p4src/` directory there are compiled P4 artifacts of the pipeline that will be pushed to the P4 switch, along with the P4-runtime definitions. +The `./setup.sh` script copies from this directory. If you need to change the P4 program, make sure to put the compiled artifacts there. + +## Tests + +A set of tests is implemented, each focusing on different aspects of TFS. +For each of these tests, an auxiliary bash script allows to run it with less typing. + +| Bash Runner | Purpose | +| -------------------------------------------- | --------------------------------------------------------------------------- | +| setup.sh | Copy P4 artifacts into the SBI pod | +| run_test_01_bootstrap.sh | Connect TFS to the P4 switch | +| run_test_02_sbi_provision_int_l2_l3_acl.sh | Install L2, L3, INT, and ACL rules on the P4 switch via the SBI service | +| run_test_03_sbi_deprovision_int_l2_l3_acl.sh | Uninstall L2, L3, INT, and ACL rules from the P4 switch via the SBI service | +| run_test_04_cleanup.sh | Clean-up context and topology and disconnect TFS from the P4 switch | + +Each of the tests above is described in detail below. + +### Step 0: Copy the necessary P4 artifacts into the TFS SBI service pod + +The setup script copies the necessary artifacts to the SBI service pod. +It should be run just once, after a fresh install of TFS. +If you `deploy/all.sh` again, you need to repeat this step. + +```shell +cd ~/tfs-ctrl/ +source my_deploy.sh && source tfs_runtime_env_vars.sh +bash src/tests/p4-sd-fabric-sbi-connectivity/setup.sh +``` + +### Step 1: Bootstrap topology + +The bootstrap script registers the context, topology, links, and devices to TFS. + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-sbi-connectivity/run_test_01_bootstrap.sh +``` + +### Step 2: Provision L2, L3, ACL, and INT via the SBI API + +Implement forwarding, routing, ACL, and INT network functions by installing P4 rules to the Stratum switch via the TFS SBI API. +In this test, these rules are installed in batches, as the switch cannot digest all these rules at once. + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-sbi-connectivity/run_test_02_sbi_provision_int_l2_l3_acl.sh +``` + +To observe the telemetry coming from Mininet, you may configure Prometheus and Grafana as follows. +First, connect TFS Grafana with the Prometheus data source, after you modify `TFS_IP` variable in the following script: + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_datasources.sh +``` + +Then, publish a dashboard showing the switch latency, after you ensure that the `DASHBOARD_FILE` variable in the following script points to the correct file in your filesystem. + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_dashboard.sh +``` + +### Step 3: Deprovision L2, L3, ACL, and INT via the SBI API + +Deprovision forwarding, routing, ACL, and INT network functions by removing the previously installed P4 rules (via the TFS SBI API) from the Stratum switch. + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-sbi-connectivity/run_test_03_sbi_deprovision_int_l2_l3_acl.sh +``` + +### Step 4: Deprovision topology + +Delete all the objects (context, topology, links, devices) from TFS: + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-sbi-connectivity/run_test_04_cleanup.sh +``` + +Alternatively, a purge test is implemented; this test removes services, links, devices, topology, and context in this order. + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-sbi-connectivity/run_test_05_purge.sh +``` diff --git a/src/tests/p4-fabric-tna/__init__.py b/src/tests/p4-sd-fabric-sbi-connectivity/__init__.py similarity index 100% rename from src/tests/p4-fabric-tna/__init__.py rename to src/tests/p4-sd-fabric-sbi-connectivity/__init__.py diff --git a/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/grafana-latency.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/grafana-latency.json new file mode 100644 index 0000000000000000000000000000000000000000..e02d1cc268d628de2bcc2f7d4211b77d7a575757 --- /dev/null +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/grafana-latency.json @@ -0,0 +1,175 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": [], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.5.22" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "Latency", + "axisPlacement": "left", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 17, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "dash": [ + 20, + 10 + ], + "fill": "dash" + }, + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ns" + }, + "overrides": [] + }, + "gridPos": { + "h": 17, + "w": 23, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "avg(KPISAMPLETYPE_INT_HOP_LAT_SW01)", + "refId": "A" + } + ], + "title": "P4 switch latency", + "transparent": true, + "type": "timeseries" + } + ], + "refresh": "5s", + "schemaVersion": 36, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Latency", + "uid": "VefdTgZvk", + "version": 2, + "weekStart": "" +} \ No newline at end of file diff --git a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-acl.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-acl.json similarity index 94% rename from src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-acl.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-acl.json index 97a548983f29c7af8c1da21fda5ab09b45a940aa..9fd750539bae8f8da2f80ade9df92fbcac209491 100644 --- a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-acl.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-acl.json @@ -3,10 +3,10 @@ { "device_id": { "device_uuid": { - "uuid": "p4-sw1" + "uuid": "sw1" } }, - "name": "p4-sw1", + "name": "sw1", "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_config": { "config_rules": [ diff --git a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b1.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b1.json similarity index 98% rename from src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b1.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b1.json index 3fc9a71732aef424b85c9b91b255083b3e1badbb..b260c5a4c153ed27492f7a7c23a8d2806b8c7aa1 100644 --- a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b1.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b1.json @@ -3,10 +3,10 @@ { "device_id": { "device_uuid": { - "uuid": "p4-sw1" + "uuid": "sw1" } }, - "name": "p4-sw1", + "name": "sw1", "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_config": { "config_rules": [ diff --git a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b2.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b2.json similarity index 99% rename from src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b2.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b2.json index e6b5a8ea8590586b2aeee46eb9b736b1e27ba35e..1ddf941cbac6ed900f9997ee77ecd9782af591d0 100644 --- a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b2.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b2.json @@ -3,10 +3,10 @@ { "device_id": { "device_uuid": { - "uuid": "p4-sw1" + "uuid": "sw1" } }, - "name": "p4-sw1", + "name": "sw1", "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_config": { "config_rules": [ diff --git a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b3.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b3.json similarity index 99% rename from src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b3.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b3.json index f8d2c71830d3ef55ea8ffd97e3557fc9d8cc6315..d4d8a92fd89b52204f3f97f947885a6ce008b423 100644 --- a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-int-b3.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-int-b3.json @@ -3,10 +3,10 @@ { "device_id": { "device_uuid": { - "uuid": "p4-sw1" + "uuid": "sw1" } }, - "name": "p4-sw1", + "name": "sw1", "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_config": { "config_rules": [ diff --git a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-routing-east.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-routing-east.json similarity index 99% rename from src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-routing-east.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-routing-east.json index 0fe8b5036f8446f65e8fca85ddeea97cd6ed8cd0..f0c438568a33d17d4bcc833fb07c674fad7ef08e 100644 --- a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-routing-east.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-routing-east.json @@ -3,10 +3,10 @@ { "device_id": { "device_uuid": { - "uuid": "p4-sw1" + "uuid": "sw1" } }, - "name": "p4-sw1", + "name": "sw1", "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_config": { "config_rules": [ diff --git a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-routing-west.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-routing-west.json similarity index 99% rename from src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-routing-west.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-routing-west.json index c48d9d31e2b36dd1710ab53d51280759e82cca1c..2d5b9e080a3690c0e7f5d60ec65bc23ab6d6b76c 100644 --- a/src/tests/p4-fabric-tna/descriptors/sbi-rules-insert-routing-west.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-insert-routing-west.json @@ -3,10 +3,10 @@ { "device_id": { "device_uuid": { - "uuid": "p4-sw1" + "uuid": "sw1" } }, - "name": "p4-sw1", + "name": "sw1", "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_config": { "config_rules": [ diff --git a/src/tests/p4-fabric-tna/descriptors/sbi-rules-remove.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-remove.json similarity index 99% rename from src/tests/p4-fabric-tna/descriptors/sbi-rules-remove.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-remove.json index 68132e9e6ec09435cfcbaae16a9c2287e9c649b5..b2b3b429f19ebe7327c86c40cb144ead565bd3c0 100644 --- a/src/tests/p4-fabric-tna/descriptors/sbi-rules-remove.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/sbi-rules-remove.json @@ -3,10 +3,10 @@ { "device_id": { "device_uuid": { - "uuid": "p4-sw1" + "uuid": "sw1" } }, - "name": "p4-sw1", + "name": "sw1", "device_operational_status": "DEVICEOPERATIONALSTATUS_ENABLED", "device_config": { "config_rules": [ diff --git a/src/tests/p4-fabric-tna/descriptors/topology.json b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/topology.json similarity index 78% rename from src/tests/p4-fabric-tna/descriptors/topology.json rename to src/tests/p4-sd-fabric-sbi-connectivity/descriptors/topology.json index a8cc72ae28280fd89870465d6fa80e2030e5092d..420cc8f0f883a37ddb07fff749220590b79fe2c2 100644 --- a/src/tests/p4-fabric-tna/descriptors/topology.json +++ b/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/topology.json @@ -10,8 +10,8 @@ { "device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, "name": "tfs-sdn-controller", - "device_type": "ietf-slice", - "device_drivers": ["DEVICEDRIVER_IETF_SLICE"], + "device_type": "teraflowsdn", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", "device_config": {"config_rules": [ {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, @@ -22,8 +22,8 @@ ]} }, { - "device_id": {"device_uuid": {"uuid": "west-net"}}, - "device_type": "network", + "device_id": {"device_uuid": {"uuid": "h1"}}, + "device_type": "emu-client", "device_drivers": ["DEVICEDRIVER_UNDEFINED"], "device_config": { "config_rules": [ @@ -36,8 +36,8 @@ } }, { - "device_id": {"device_uuid": {"uuid": "east-net"}}, - "device_type": "network", + "device_id": {"device_uuid": {"uuid": "h2"}}, + "device_type": "emu-client", "device_drivers": ["DEVICEDRIVER_UNDEFINED"], "device_config": { "config_rules": [ @@ -80,31 +80,31 @@ ], "links": [ { - "link_id": {"link_uuid": {"uuid": "sw1/1==west-net/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + "link_id": {"link_uuid": {"uuid": "sw1/1==h1/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "1"}}, - {"device_id": {"device_uuid": {"uuid": "west-net"}}, "endpoint_uuid": {"uuid": "eth1"}} + {"device_id": {"device_uuid": {"uuid": "h1"}}, "endpoint_uuid": {"uuid": "eth1"}} ] }, { - "link_id": {"link_uuid": {"uuid": "west-net/eth1==sw1/1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "west-net"}}, "endpoint_uuid": {"uuid": "eth1"}}, + "link_id": {"link_uuid": {"uuid": "h1/eth1==sw1/1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "h1"}}, "endpoint_uuid": {"uuid": "eth1"}}, {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "1"}} ] }, { - "link_id": {"link_uuid": {"uuid": "sw1/2==east-net/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + "link_id": {"link_uuid": {"uuid": "sw1/2==h2/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "2"}}, - {"device_id": {"device_uuid": {"uuid": "east-net"}}, "endpoint_uuid": {"uuid": "eth1"}} + {"device_id": {"device_uuid": {"uuid": "h2"}}, "endpoint_uuid": {"uuid": "eth1"}} ] }, { - "link_id": {"link_uuid": {"uuid": "east-net/eth1==sw1/2"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "east-net"}}, "endpoint_uuid": {"uuid": "eth1"}}, + "link_id": {"link_uuid": {"uuid": "h2/eth1==sw1/2"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "h2"}}, "endpoint_uuid": {"uuid": "eth1"}}, {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "2"}} ] }, { - "link_id": {"link_uuid": {"uuid": "sw1/3==tfs-sdn-controller/mgmt"}}, "link_type": "LINKTYPE_VIRTUAL", "link_endpoint_ids": [ + "link_id": {"link_uuid": {"uuid": "sw1/3==tfs-sdn-controller/mgmt"}}, "link_type": "LINKTYPE_MANAGEMENT", "link_endpoint_ids": [ {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "3"}}, {"device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, "endpoint_uuid": {"uuid": "mgmt"}} ] diff --git a/src/tests/p4-fabric-tna/p4src/README.md b/src/tests/p4-sd-fabric-sbi-connectivity/p4src/README.md similarity index 100% rename from src/tests/p4-fabric-tna/p4src/README.md rename to src/tests/p4-sd-fabric-sbi-connectivity/p4src/README.md diff --git a/src/tests/p4-fabric-tna/p4src/_pp.p4 b/src/tests/p4-sd-fabric-sbi-connectivity/p4src/_pp.p4 similarity index 100% rename from src/tests/p4-fabric-tna/p4src/_pp.p4 rename to src/tests/p4-sd-fabric-sbi-connectivity/p4src/_pp.p4 diff --git a/src/tests/p4-fabric-tna/p4src/bmv2.json b/src/tests/p4-sd-fabric-sbi-connectivity/p4src/bmv2.json similarity index 100% rename from src/tests/p4-fabric-tna/p4src/bmv2.json rename to src/tests/p4-sd-fabric-sbi-connectivity/p4src/bmv2.json diff --git a/src/tests/p4-fabric-tna/p4src/p4info.txt b/src/tests/p4-sd-fabric-sbi-connectivity/p4src/p4info.txt similarity index 100% rename from src/tests/p4-fabric-tna/p4src/p4info.txt rename to src/tests/p4-sd-fabric-sbi-connectivity/p4src/p4info.txt diff --git a/src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_dashboard.sh b/src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_dashboard.sh new file mode 100644 index 0000000000000000000000000000000000000000..0664cc6cdf81f91103142f816fcc9a23f27efc82 --- /dev/null +++ b/src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_dashboard.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# ----------------------------------- +# CONFIGURATION +# ----------------------------------- + +GRAFANA_URL="http://localhost:80/grafana" # Your Grafana URL +GRAFANA_USERNAME="admin" +GRAFANA_PASSWORD="admin" + +DATASOURCE_NAME="Prometheus" +DASHBOARD_FILE="/home/ubuntu/tfs-ctrl/src/tests/p4-sd-fabric-sbi-connectivity/descriptors/grafana-latency.json" # Path to your dashboard JSON + +# ----------------------------------- +# READ DASHBOARD JSON +# ----------------------------------- +if [ ! -f "$DASHBOARD_FILE" ]; then + echo "[ERROR] Dashboard file not found: $DASHBOARD_FILE" + exit 1 +fi + +DASHBOARD_JSON=$(cat "$DASHBOARD_FILE") + +# --------------------------------------- +# 1. Get the datasource UID +# --------------------------------------- + +PROM_UID=$(curl -s \ + -u "${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}" \ + "${GRAFANA_URL}/api/datasources/name/${DATASOURCE_NAME}" \ + | jq -r '.uid') + +if [ -z "$PROM_UID" ] || [ "$PROM_UID" == "null" ]; then + echo "ERROR: Could not retrieve datasource UID. Check datasource name/auth." + exit 1 +fi + +echo "Found datasource UID: $PROM_UID" + +# --------------------------------------- +# 2. Inject the UID into dashboard JSON +# --------------------------------------- + +DASHBOARD_JSON=$(jq --arg uid "$PROM_UID" ' + walk( + if type == "object" and has("datasource") then + .datasource |= + (if type == "object" then .uid = $uid else $uid end) + else . + end + ) +' "$DASHBOARD_FILE") + +# --------------------------------------- +# 3. Wrap in Grafana API import format +# --------------------------------------- + +read -r -d '' IMPORT_JSON << EOF +{ + "dashboard": ${DASHBOARD_JSON}, + "overwrite": true, + "folderId": 0, + "message": "Imported via API" +} +EOF + +# ----------------------------------- +# 4. Import dashboard using API +# ----------------------------------- + +echo "Importing dashboard into Grafana..." + +curl -X POST "${GRAFANA_URL}/api/dashboards/db" \ + -H "Content-Type: application/json" \ + -u "${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}" \ + -d "${IMPORT_JSON}" + +echo +echo "Done" diff --git a/src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_datasources.sh b/src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_datasources.sh new file mode 100644 index 0000000000000000000000000000000000000000..2e82eebe5d4187d0e0adc6f90d73e6bf95ea6ebb --- /dev/null +++ b/src/tests/p4-sd-fabric-sbi-connectivity/run_grafana_datasources.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# --------------------------- +# CONFIGURATION +# --------------------------- + +TFS_IP="192.168.5.137" + +GRAFANA_URL="http://localhost:80/grafana" # Your Grafana URL +GRAFANA_USERNAME="admin" +GRAFANA_PASSWORD="admin" + +DATASOURCE_NAME="Prometheus" +PROMETHEUS_URL="http://${TFS_IP}:30090/" # URL of your Prometheus server + +# --------------------------- +# CREATE DATA SOURCE PAYLOAD +# --------------------------- + +read -r -d '' DATA_SOURCE_JSON << EOF +{ + "name": "${DATASOURCE_NAME}", + "type": "prometheus", + "access": "proxy", + "url": "${PROMETHEUS_URL}", + "basicAuth": false, + "isDefault": true, + "editable": true +} +EOF + +# --------------------------- +# SEND REQUEST (with username/password) +# --------------------------- + +echo "Creating Prometheus datasource in Grafana..." + +curl -X POST "${GRAFANA_URL}/api/datasources" \ + -H "Content-Type: application/json" \ + -u "${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}" \ + -d "${DATA_SOURCE_JSON}" + +echo +echo "Done" diff --git a/src/tests/p4-fabric-tna/run_test_01_bootstrap.sh b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_01_bootstrap.sh similarity index 88% rename from src/tests/p4-fabric-tna/run_test_01_bootstrap.sh rename to src/tests/p4-sd-fabric-sbi-connectivity/run_test_01_bootstrap.sh index 7bef3a4487c0b2a0e0c97e09672871206906de5e..d2a119b191f02636e7625054acf29d6005b14690 100755 --- a/src/tests/p4-fabric-tna/run_test_01_bootstrap.sh +++ b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_01_bootstrap.sh @@ -18,4 +18,4 @@ # - tfs_runtime_env_vars.sh source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-setup/test_functional_bootstrap.py +python3 -m pytest --verbose src/tests/p4-sd-fabric-sbi-connectivity/test_functional_bootstrap.py diff --git a/src/tests/p4-fabric-tna/run_test_02a_sbi_provision_int_l2_l3_acl.sh b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_02_sbi_provision.sh similarity index 86% rename from src/tests/p4-fabric-tna/run_test_02a_sbi_provision_int_l2_l3_acl.sh rename to src/tests/p4-sd-fabric-sbi-connectivity/run_test_02_sbi_provision.sh index 4ddb1e41d7e0b8cfc29c905047fafc8a1c808a24..a325682e4b1734a1e1c5ede8dc16bd8da482b56a 100755 --- a/src/tests/p4-fabric-tna/run_test_02a_sbi_provision_int_l2_l3_acl.sh +++ b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_02_sbi_provision.sh @@ -14,4 +14,4 @@ # limitations under the License. source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_provision.py +python3 -m pytest --verbose src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_provision.py diff --git a/src/tests/p4-fabric-tna/run_test_02b_sbi_deprovision_int_l2_l3_acl.sh b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_03_sbi_deprovision.sh similarity index 85% rename from src/tests/p4-fabric-tna/run_test_02b_sbi_deprovision_int_l2_l3_acl.sh rename to src/tests/p4-sd-fabric-sbi-connectivity/run_test_03_sbi_deprovision.sh index af54c2cae85ab15a7548c45a0b4ce4839a5a2560..570f73d2789ebd08722badaf246f10803aec22bf 100755 --- a/src/tests/p4-fabric-tna/run_test_02b_sbi_deprovision_int_l2_l3_acl.sh +++ b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_03_sbi_deprovision.sh @@ -14,4 +14,4 @@ # limitations under the License. source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_deprovision.py +python3 -m pytest --verbose src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_deprovision.py diff --git a/src/tests/p4-fabric-tna/run_test_08_purge.sh b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_04_cleanup.sh similarity index 87% rename from src/tests/p4-fabric-tna/run_test_08_purge.sh rename to src/tests/p4-sd-fabric-sbi-connectivity/run_test_04_cleanup.sh index 15913353079a1102603ac2d771415c3b7c1a3ab3..bf0aaddee780b4fb36736cd98ff1fd2b5af546f7 100755 --- a/src/tests/p4-fabric-tna/run_test_08_purge.sh +++ b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_04_cleanup.sh @@ -14,4 +14,4 @@ # limitations under the License. source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-setup/test_functional_purge.py +python3 -m pytest --verbose src/tests/p4-sd-fabric-sbi-connectivity/test_functional_cleanup.py diff --git a/src/tests/p4-fabric-tna/run_test_07_cleanup.sh b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_05_purge.sh similarity index 87% rename from src/tests/p4-fabric-tna/run_test_07_cleanup.sh rename to src/tests/p4-sd-fabric-sbi-connectivity/run_test_05_purge.sh index 74db934a8a4fa8390774e52526819e20cb796a23..e9a221fa976fb17014345c6e9130f24fd80d4aa3 100755 --- a/src/tests/p4-fabric-tna/run_test_07_cleanup.sh +++ b/src/tests/p4-sd-fabric-sbi-connectivity/run_test_05_purge.sh @@ -14,4 +14,4 @@ # limitations under the License. source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-setup/test_functional_cleanup.py +python3 -m pytest --verbose src/tests/p4-sd-fabric-sbi-connectivity/test_functional_purge.py diff --git a/src/tests/p4-fabric-tna/setup.sh b/src/tests/p4-sd-fabric-sbi-connectivity/setup.sh similarity index 79% rename from src/tests/p4-fabric-tna/setup.sh rename to src/tests/p4-sd-fabric-sbi-connectivity/setup.sh index d5f080e6d871e364f4f32a9bb44b7d49758f1a2c..a8b1a881e0f4ca3f79c7be25b5bfa623f14e5c1f 100755 --- a/src/tests/p4-fabric-tna/setup.sh +++ b/src/tests/p4-sd-fabric-sbi-connectivity/setup.sh @@ -18,5 +18,5 @@ export POD_NAME=$(kubectl get pods -n=tfs | grep device | awk '{print $1}') kubectl exec ${POD_NAME} -n=tfs -c=server -- mkdir -p /root/p4 -kubectl cp src/tests/p4-fabric-tna/p4src/p4info.txt tfs/${POD_NAME}:/root/p4 -c=server -kubectl cp src/tests/p4-fabric-tna/p4src/bmv2.json tfs/${POD_NAME}:/root/p4 -c=server +kubectl cp src/tests/p4-sd-fabric-sbi-connectivity/p4src/p4info.txt tfs/${POD_NAME}:/root/p4 -c=server +kubectl cp src/tests/p4-sd-fabric-sbi-connectivity/p4src/bmv2.json tfs/${POD_NAME}:/root/p4 -c=server diff --git a/src/tests/p4-fabric-tna/tests-setup/test_functional_bootstrap.py b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_bootstrap.py similarity index 91% rename from src/tests/p4-fabric-tna/tests-setup/test_functional_bootstrap.py rename to src/tests/p4-sd-fabric-sbi-connectivity/test_functional_bootstrap.py index 7c4a6c7a0c583c7dadd68cfb92bbdfab51db6cac..eedcb99511c49ef63a689212ed225edb60ed43e1 100644 --- a/src/tests/p4-fabric-tna/tests-setup/test_functional_bootstrap.py +++ b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_bootstrap.py @@ -19,7 +19,8 @@ from common.tools.descriptor.Loader import DescriptorLoader, \ from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from tests.Fixtures import context_client, device_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID, DESC_TOPO +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID +from test_functional_common import DESC_TOPOLOGY LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) @@ -36,8 +37,10 @@ def test_scenario_bootstrap( """ validate_empty_scenario(context_client) + LOGGER.info(f"------> TOPOLOGY: {DESC_TOPOLOGY}") + descriptor_loader = DescriptorLoader( - descriptors_file=DESC_TOPO, context_client=context_client, device_client=device_client) + descriptors_file=DESC_TOPOLOGY, context_client=context_client, device_client=device_client) results = descriptor_loader.process() check_descriptor_load_results(results, descriptor_loader) descriptor_loader.validate() diff --git a/src/tests/p4-fabric-tna/tests-setup/test_functional_cleanup.py b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_cleanup.py similarity index 88% rename from src/tests/p4-fabric-tna/tests-setup/test_functional_cleanup.py rename to src/tests/p4-sd-fabric-sbi-connectivity/test_functional_cleanup.py index fe197de54882f675befcbe769a6f87c4336846e1..41897fb0aa2134e1d6052b16791b908a9b02c7b5 100644 --- a/src/tests/p4-fabric-tna/tests-setup/test_functional_cleanup.py +++ b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_cleanup.py @@ -17,7 +17,8 @@ from common.tools.descriptor.Loader import DescriptorLoader, validate_empty_scen from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from tests.Fixtures import context_client, device_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID, DESC_TOPO +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID +from test_functional_common import DESC_TOPOLOGY LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) @@ -33,7 +34,7 @@ def test_scenario_cleanup( # Unload topology and validate empty scenario descriptor_loader = DescriptorLoader( - descriptors_file=DESC_TOPO, context_client=context_client, device_client=device_client) + descriptors_file=DESC_TOPOLOGY, context_client=context_client, device_client=device_client) descriptor_loader.validate() descriptor_loader.unload() validate_empty_scenario(context_client) diff --git a/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_common.py b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_common.py new file mode 100644 index 0000000000000000000000000000000000000000..8e1b761a58599ad2325630a66f6e42a5284e316c --- /dev/null +++ b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_common.py @@ -0,0 +1,78 @@ +# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import os + +DEV_NB = 4 +CONNECTION_RULES = 3 +ENDPOINT_RULES = 3 + +INT_RULES = 19 +L2_RULES = 10 +L3_RULES = 4 +ACL_RULES = 1 + +DATAPLANE_RULES_NB_INT_B1 = 5 +DATAPLANE_RULES_NB_INT_B2 = 6 +DATAPLANE_RULES_NB_INT_B3 = 8 +DATAPLANE_RULES_NB_RT_WEST = 7 +DATAPLANE_RULES_NB_RT_EAST = 7 +DATAPLANE_RULES_NB_ACL = 1 +DATAPLANE_RULES_NB_TOT = \ + DATAPLANE_RULES_NB_INT_B1 +\ + DATAPLANE_RULES_NB_INT_B2 +\ + DATAPLANE_RULES_NB_INT_B3 +\ + DATAPLANE_RULES_NB_RT_WEST +\ + DATAPLANE_RULES_NB_RT_EAST +\ + DATAPLANE_RULES_NB_ACL + +TEST_PATH = os.path.join( + os.path.dirname(os.path.abspath(__file__)) + + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to P4 SD-Fabric tests" + +# Topology descriptor +DESC_TOPOLOGY = os.path.join(TEST_PATH, 'topology.json') +assert os.path.exists(DESC_TOPOLOGY), "Invalid path to the SD-Fabric topology descriptor" + +# SBI descriptors for Rule INSERTION +# The switch cannot digest all rules at once, hence we insert in batches +DESC_FILE_RULES_INSERT_INT_B1 = os.path.join(TEST_PATH, 'sbi-rules-insert-int-b1.json') +assert os.path.exists(DESC_FILE_RULES_INSERT_INT_B1),\ + "Invalid path to the SD-Fabric INT SBI descriptor (batch #1)" + +DESC_FILE_RULES_INSERT_INT_B2 = os.path.join(TEST_PATH, 'sbi-rules-insert-int-b2.json') +assert os.path.exists(DESC_FILE_RULES_INSERT_INT_B2),\ + "Invalid path to the SD-Fabric INT SBI descriptor (batch #2)" + +DESC_FILE_RULES_INSERT_INT_B3 = os.path.join(TEST_PATH, 'sbi-rules-insert-int-b3.json') +assert os.path.exists(DESC_FILE_RULES_INSERT_INT_B3),\ + "Invalid path to the SD-Fabric INT SBI descriptor (batch #3)" + +DESC_FILE_RULES_INSERT_ROUTING_WEST = os.path.join(TEST_PATH, 'sbi-rules-insert-routing-west.json') +assert os.path.exists(DESC_FILE_RULES_INSERT_ROUTING_WEST),\ + "Invalid path to the SD-Fabric routing SBI descriptor (domain1-side)" + +DESC_FILE_RULES_INSERT_ROUTING_EAST = os.path.join(TEST_PATH, 'sbi-rules-insert-routing-east.json') +assert os.path.exists(DESC_FILE_RULES_INSERT_ROUTING_EAST),\ + "Invalid path to the SD-Fabric routing SBI descriptor (domain2-side)" + +DESC_FILE_RULES_INSERT_ACL = os.path.join(TEST_PATH, 'sbi-rules-insert-acl.json') +assert os.path.exists(DESC_FILE_RULES_INSERT_ACL),\ + "Invalid path to the SD-Fabric ACL SBI descriptor" + +# SBI descriptors for Rule DELETION +DESC_FILE_RULES_DELETE_ALL = os.path.join(TEST_PATH, 'sbi-rules-remove.json') +assert os.path.exists(DESC_FILE_RULES_DELETE_ALL),\ + "Invalid path to the SD-Fabric rule removal SBI descriptor" diff --git a/src/tests/p4-fabric-tna/tests-setup/test_functional_purge.py b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_purge.py similarity index 100% rename from src/tests/p4-fabric-tna/tests-setup/test_functional_purge.py rename to src/tests/p4-sd-fabric-sbi-connectivity/test_functional_purge.py diff --git a/src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_deprovision.py b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_deprovision.py similarity index 91% rename from src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_deprovision.py rename to src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_deprovision.py index 4fbf182c5ae81f2f72105736d0b57dcd94cc1e5d..8bf3b8c9006af71eec58be65cd4f10e54ad162ab 100644 --- a/src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_deprovision.py +++ b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_deprovision.py @@ -18,21 +18,8 @@ from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from tests.Fixtures import context_client, device_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DESC_FILE_RULES_DELETE_ALL, - DEV_NB, - CONNECTION_RULES, - ENDPOINT_RULES, - DATAPLANE_RULES_NB_INT_B1, - DATAPLANE_RULES_NB_INT_B2, - DATAPLANE_RULES_NB_INT_B3, - DATAPLANE_RULES_NB_RT_WEST, - DATAPLANE_RULES_NB_RT_EAST, - DATAPLANE_RULES_NB_ACL, - DATAPLANE_RULES_NB_TOT, - verify_number_of_rules -) +from tests.tools.test_tools_p4 import * +from test_functional_common import * LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_provision.py b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_provision.py similarity index 94% rename from src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_provision.py rename to src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_provision.py index 08b9e2f5ece3057bb985ebb4433a0a9838187b8f..ba45ad8bc9dfd230c5c717f6acddd3e8d15dc641 100644 --- a/src/tests/p4-fabric-tna/tests-sbi/test_functional_sbi_rules_provision.py +++ b/src/tests/p4-sd-fabric-sbi-connectivity/test_functional_sbi_rules_provision.py @@ -18,26 +18,8 @@ from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from tests.Fixtures import context_client, device_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DESC_FILE_RULES_INSERT_INT_B1, - DESC_FILE_RULES_INSERT_INT_B2, - DESC_FILE_RULES_INSERT_INT_B3, - DESC_FILE_RULES_INSERT_ROUTING_WEST, - DESC_FILE_RULES_INSERT_ROUTING_EAST, - DESC_FILE_RULES_INSERT_ACL, - DEV_NB, - CONNECTION_RULES, - ENDPOINT_RULES, - DATAPLANE_RULES_NB_INT_B1, - DATAPLANE_RULES_NB_INT_B2, - DATAPLANE_RULES_NB_INT_B3, - DATAPLANE_RULES_NB_RT_WEST, - DATAPLANE_RULES_NB_RT_EAST, - DATAPLANE_RULES_NB_ACL, - DATAPLANE_RULES_NB_TOT, - verify_number_of_rules -) +from tests.tools.test_tools_p4 import * +from test_functional_common import * LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/README.md b/src/tests/p4-sd-fabric-svc-connectivity/README.md similarity index 61% rename from src/tests/p4-fabric-tna/README.md rename to src/tests/p4-sd-fabric-svc-connectivity/README.md index e8ae8fde918b6dd65fc1eb9a078753ea442f22a6..e828cb11f323d1339da9a4b24b3c6d4c02be60f1 100644 --- a/src/tests/p4-fabric-tna/README.md +++ b/src/tests/p4-sd-fabric-svc-connectivity/README.md @@ -1,4 +1,4 @@ -# Tests for P4 routing, ACL, and In-Band Network Telemetry functions +# Tests for P4 routing, ACL, and In-Band Network Telemetry functions via TFS Service API This directory contains the necessary scripts and configurations to run tests atop a Stratum-based P4 whitebox that performs a set of network functions, including forwarding (L2), routing (L3), L3/L4 access control list (ACL), and In-Band Network Telemetry (INT). The P4 data plane is based on ONF's SD-Fabric implementation, titled [fabric-tna](https://github.com/stratum/fabric-tna) @@ -45,12 +45,35 @@ To conduct this test, follow the steps below. ### Deploy TFS +Go to the TFS parent folder. + ```shell cd ~/tfs-ctrl/ +``` + +Edit `my_deploy.sh` to include the following TFS components and then source the file. + +```shell +nano my_deploy.sh +`export TFS_COMPONENTS="context device pathcomp service kpi_manager kpi_value_writer kpi_value_api telemetry nbi webui"` +``` + +```shell source my_deploy.sh && source tfs_runtime_env_vars.sh +``` + +Now deploy TFS: + +```shell ./deploy/all.sh ``` +When deployed, execute the following command to ensure that the above components are all in place and in a running state: + +```shell +./deploy/show.sh +``` + ### Path setup Ensure that `PATH` variable contains the parent project directory, e.g., "home/$USER/tfs-ctrl". @@ -59,8 +82,16 @@ Ensure that `PYTHONPATH` variable contains the source code directory of TFS, e.g ## Topology setup -In the `./topology/` directory there are scripts that allow to build Stratum on a target machine (e.g., a VM) and then deploy a P4 switch atop this machine. -This test assumes a Stratum P4 switch with 2 network interfaces used as a data plane (routing traffic from one to another) as well as another network interface used to send telemetry information to an external telemetry collector. +Go to `src/tests/p4-topologies/` and follow the instructions on how to install Mininet in your machine. +After Mininet is installed, run the following command to deploy a single switch P4 topology on Mininet. + +```bash +cd ~/tfs-ctrl/src/tests/p4-topologies/topo-mininet/ +sudo python3 topo-mininet/1switch1path-int.py --host-int-iface=eth0 +``` + +You may need to change the `host-int-iface` to a network interface that suits your setup. +This is the interface through which Mininet sends in-band network telemetry packets to TFS. ## P4 artifacts @@ -76,17 +107,15 @@ For each of these tests, an auxiliary bash script allows to run it with less typ | --------------------------------------------- | --------------------------------------------------------------------------- | | setup.sh | Copy P4 artifacts into the SBI pod | | run_test_01_bootstrap.sh | Connect TFS to the P4 switch | -| run_test_02a_sbi_provision_int_l2_l3_acl.sh | Install L2, L3, INT, and ACL rules on the P4 switch via the SBI service | -| run_test_02b_sbi_deprovision_int_l2_l3_acl.sh | Uninstall L2, L3, INT, and ACL rules from the P4 switch via the SBI service | -| run_test_03a_service_provision_l2.sh | Install L2 forwarding rules via a dedicated P4 L2 service handler | -| run_test_03b_service_deprovision_l2.sh | Uninstall L2 forwarding rules via a dedicated P4 L2 service handler | -| run_test_04a_service_provision_l3.sh | Install L3 routing rules via a dedicated P4 L3 service handler | -| run_test_04b_service_deprovision_l3.sh | Uninstall L3 routing rules via a dedicated P4 L3 service handler | -| run_test_05a_service_provision_acl.sh | Install ACL rules via a dedicated P4 ACL service handler | -| run_test_05b_service_deprovision_acl.sh | Uninstall ACL rules via a dedicated P4 ACL service handler | -| run_test_06a_service_provision_int.sh | Install INT rules via a dedicated P4 INT service handler | -| run_test_06b_service_deprovision_int.sh | Uninstall INT rules via a dedicated P4 INT service handler | -| run_test_07_cleanup.sh | Clean-up context and topology and disconnect TFS from the P4 switch | +| run_test_02_service_provision_int.sh | Install INT rules via a dedicated P4 INT service handler | +| run_test_03_service_provision_l2.sh | Install L2 forwarding rules via a dedicated P4 L2 service handler | +| run_test_04_service_provision_l3.sh | Install L3 routing rules via a dedicated P4 L3 service handler | +| run_test_05_service_provision_acl.sh | Install ACL rules via a dedicated P4 ACL service handler | +| run_test_06_service_deprovision_int.sh | Uninstall INT rules via a dedicated P4 INT service handler | +| run_test_07_service_deprovision_l2.sh | Uninstall L2 forwarding rules via a dedicated P4 L2 service handler | +| run_test_08_service_deprovision_l3.sh | Uninstall L3 routing rules via a dedicated P4 L3 service handler | +| run_test_09_service_deprovision_acl.sh | Uninstall ACL rules via a dedicated P4 ACL service handler | +| run_test_10_cleanup.sh | Clean-up context and topology and disconnect TFS from the P4 switch | Each of the tests above is described in detail below. @@ -99,7 +128,7 @@ If you `deploy/all.sh` again, you need to repeat this step. ```shell cd ~/tfs-ctrl/ source my_deploy.sh && source tfs_runtime_env_vars.sh -bash src/tests/p4-fabric-tna/setup.sh +bash src/tests/p4-sd-fabric-svc-connectivity/setup.sh ``` ### Step 1: Bootstrap topology @@ -108,85 +137,50 @@ The bootstrap script registers the context, topology, links, and devices to TFS. ```shell cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_01_bootstrap.sh -``` - -### Step 2: Manage L2, L3, ACL, and INT via the SBI API (rules) - -Implement forwarding, routing, ACL, and INT network functions by installing P4 rules to the Stratum switch via the TFS SBI API. -In this test, these rules are installed in batches, as the switch cannot digest all these rules at once. - -```shell -cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_02a_sbi_provision_int_l2_l3_acl.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_01_bootstrap.sh ``` -Deprovision forwarding, routing, ACL, and INT network functions by removing the previously installed P4 rules (via the TFS SBI API) from the Stratum switch. - -```shell -cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_02b_sbi_deprovision_int_l2_l3_acl.sh -``` - -### Step 3: Manage L2, L3, ACL, and INT via the Service API +### Step 2: Manage L2, L3, ACL, and INT via the Service API To avoid interacting with the switch using low-level P4 rules (via the SBI), we created modular network services, which allow users to easily provision L2, L3, ACL, and INT network functions. These services require users to define the service endpoints as well as some high-level service configuration, while leaving the rest of complexity to tailored service handlers that interact with the SBI on behalf of the user. -#### Provision L2 network service via the Service API - -```shell -cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_03a_service_provision_l2.sh -``` - -#### Deprovision L2 network service via the Service API - -```shell -cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_03b_service_deprovision_l2.sh -``` - -#### Provision L3 network service via the Service API - -```shell -cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_04a_service_provision_l3.sh -``` - -#### Deprovision L3 network service via the Service API +#### Provision L2 + INT + ACL network services via the Service API ```shell cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_04b_service_deprovision_l3.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_02_service_provision_int.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_03_service_provision_l2.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_05_service_provision_acl.sh ``` -#### Provision ACL network service via the Service API - -```shell -cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_05a_service_provision_acl.sh -``` +#### Provision L3 + INT + ACL network services via the Service API -#### Deprovision ACL network service via the Service API +Alternatively, you can replace L2 with L3 connectivity as follows: ```shell cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_05b_service_deprovision_acl.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_02_service_provision_int.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_04_service_provision_l3.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_05_service_provision_acl.sh ``` -#### Provision INT service via the Service API +#### Deprovision L2 + INT + ACL network services via the Service API ```shell cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_06a_service_provision_int.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_06_service_deprovision_int.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_07_service_deprovision_l2.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_09_service_deprovision_acl.sh ``` -#### Deprovision INT service via the Service API +And for the corresponding L3 service: ```shell cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_06b_service_deprovision_int.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_06_service_deprovision_int.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_08_service_deprovision_l3.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_09_service_deprovision_acl.sh ``` ### Step 4: Deprovision topology @@ -195,12 +189,12 @@ Delete all the objects (context, topology, links, devices) from TFS: ```shell cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_07_cleanup.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_10_cleanup.sh ``` Alternatively, a purge test is implemented; this test removes services, links, devices, topology, and context in this order. ```shell cd ~/tfs-ctrl/ -bash src/tests/p4-fabric-tna/run_test_08_purge.sh +bash src/tests/p4-sd-fabric-svc-connectivity/run_test_11_purge.sh ``` diff --git a/src/tests/p4-sd-fabric-svc-connectivity/__init__.py b/src/tests/p4-sd-fabric-svc-connectivity/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7363515f07a52d996229bcbd72932ce1423258d7 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. diff --git a/src/tests/p4-sd-fabric-svc-connectivity/descriptors/grafana-latency.json b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/grafana-latency.json new file mode 100644 index 0000000000000000000000000000000000000000..e02d1cc268d628de2bcc2f7d4211b77d7a575757 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/grafana-latency.json @@ -0,0 +1,175 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": [], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "8.5.22" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "Latency", + "axisPlacement": "left", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 17, + "gradientMode": "opacity", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineStyle": { + "dash": [ + 20, + 10 + ], + "fill": "dash" + }, + "lineWidth": 2, + "pointSize": 4, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ns" + }, + "overrides": [] + }, + "gridPos": { + "h": 17, + "w": 23, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "avg(KPISAMPLETYPE_INT_HOP_LAT_SW01)", + "refId": "A" + } + ], + "title": "P4 switch latency", + "transparent": true, + "type": "timeseries" + } + ], + "refresh": "5s", + "schemaVersion": 36, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-15m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Latency", + "uid": "VefdTgZvk", + "version": 2, + "weekStart": "" +} \ No newline at end of file diff --git a/src/tests/p4-fabric-tna/descriptors/service-p4-acl.json b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-acl.json similarity index 100% rename from src/tests/p4-fabric-tna/descriptors/service-p4-acl.json rename to src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-acl.json diff --git a/src/tests/p4-fabric-tna/descriptors/service-p4-int.json b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-int.json similarity index 94% rename from src/tests/p4-fabric-tna/descriptors/service-p4-int.json rename to src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-int.json index 1a55179ad4167b0857db831a912c85e5d814f0bb..1538f29d1cda6a6892941137653952d5797feaad 100644 --- a/src/tests/p4-fabric-tna/descriptors/service-p4-int.json +++ b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-int.json @@ -40,8 +40,8 @@ ], "int_collector_info": { "iface": "eth0", - "mac": "3e:87:de:3d:6d:33", - "ip": "192.168.5.131", + "mac": "46:e4:58:c6:74:53", + "ip": "192.168.5.137", "port": 12345, "vlan_id": 4094, "duration_sec": 2000, diff --git a/src/tests/p4-fabric-tna/descriptors/service-p4-l2-simple.json b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-l2.json similarity index 95% rename from src/tests/p4-fabric-tna/descriptors/service-p4-l2-simple.json rename to src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-l2.json index 8ecc2df96b95fc398f87ac42a9badf3dd051f5dd..d943dfb6bf8ed0105ef727c878852a7b5f0f49e9 100644 --- a/src/tests/p4-fabric-tna/descriptors/service-p4-l2-simple.json +++ b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-l2.json @@ -2,11 +2,11 @@ "services": [ { "service_id": { - "context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "p4-service-l2"} + "context_id": {"context_uuid": {"uuid": "admin"}}, + "service_uuid": {"uuid": "p4-service-l2"} }, "name": "p4-service-l2", "service_type": "SERVICETYPE_L2NM", - "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_endpoint_ids": [ { "device_id": {"device_uuid": {"uuid": "sw1"}}, diff --git a/src/tests/p4-fabric-tna/descriptors/service-p4-l3.json b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-l3.json similarity index 93% rename from src/tests/p4-fabric-tna/descriptors/service-p4-l3.json rename to src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-l3.json index 6fda23e80daf4ba1b549618064ed104bdb5c36e1..1e2c0e84f043c37b4f95b7f744ae5343af226378 100644 --- a/src/tests/p4-fabric-tna/descriptors/service-p4-l3.json +++ b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/service-p4-l3.json @@ -2,11 +2,11 @@ "services": [ { "service_id": { - "context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "p4-service-l3"} + "context_id": {"context_uuid": {"uuid": "admin"}}, + "service_uuid": {"uuid": "p4-service-l3"} }, "name": "p4-service-l3", "service_type": "SERVICETYPE_L3NM", - "service_status": {"service_status": "SERVICESTATUS_PLANNED"}, "service_endpoint_ids": [ { "device_id": {"device_uuid": {"uuid": "sw1"}}, @@ -32,11 +32,13 @@ "port_list": [ { "port_id": 1, - "port_type": "host" + "port_type": "host", + "vlan_id": 4094 }, { "port_id": 2, - "port_type": "host" + "port_type": "host", + "vlan_id": 4094 } ], "routing_list": [ diff --git a/src/tests/p4-sd-fabric-svc-connectivity/descriptors/topology.json b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/topology.json new file mode 100644 index 0000000000000000000000000000000000000000..420cc8f0f883a37ddb07fff749220590b79fe2c2 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/descriptors/topology.json @@ -0,0 +1,113 @@ +{ + "contexts": [ + {"context_id": {"context_uuid": {"uuid": "admin"}}} + ], + "topologies": [ + {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} + } + ], + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, + "name": "tfs-sdn-controller", + "device_type": "teraflowsdn", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "mgmt", "name": "mgmt", "type": "mgmt-int"}] + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "h1"}}, + "device_type": "emu-client", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "eth1", "name": "eth1", "type": "copper"}] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "h2"}}, + "device_type": "emu-client", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "eth1", "name": "eth1", "type": "copper"}] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "sw1"}}, + "device_type": "p4-switch", + "device_drivers": ["DEVICEDRIVER_P4"], + "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", + "name": "sw1", + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "192.168.5.139"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "50001"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "id": 1, + "name": "sw1", + "vendor": "Open Networking Foundation", + "hw_ver": "BMv2 simple_switch", + "sw_ver": "Stratum", + "timeout": 60, + "p4bin": "/root/p4/bmv2.json", + "p4info": "/root/p4/p4info.txt", + "endpoints": [ + {"uuid": "1", "name": "1", "type": "port-dataplane"}, + {"uuid": "2", "name": "2", "type": "port-dataplane"}, + {"uuid": "3", "name": "3", "type": "port-int"} + ] + }}} + ] + } + } + ], + "links": [ + { + "link_id": {"link_uuid": {"uuid": "sw1/1==h1/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "1"}}, + {"device_id": {"device_uuid": {"uuid": "h1"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "h1/eth1==sw1/1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "h1"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1/2==h2/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "2"}}, + {"device_id": {"device_uuid": {"uuid": "h2"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "h2/eth1==sw1/2"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "h2"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "2"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1/3==tfs-sdn-controller/mgmt"}}, "link_type": "LINKTYPE_MANAGEMENT", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1"}}, "endpoint_uuid": {"uuid": "3"}}, + {"device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, "endpoint_uuid": {"uuid": "mgmt"}} + ] + } + ] +} diff --git a/src/tests/p4-sd-fabric-svc-connectivity/p4src/README.md b/src/tests/p4-sd-fabric-svc-connectivity/p4src/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e17d044fb6100c13e47f1dffb779f4800c59b9d3 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/p4src/README.md @@ -0,0 +1,24 @@ +# P4 Sources + +We employ the P4 sources from the [fabric-tna](https://github.com/stratum/fabric-tna/tree/main) project. + +To compile a relevant P4 target binary and P4 info file, do: + +```shell +git clone https://github.com/stratum/fabric-tna.git + +cd ./fabric-tna + +make fabric-upf-int-v1model +``` + +At this point, a relevant `build.sh` script is being run and a P4 program is being compiled. + +After a successful compilation, some artifacts (p4info.txt, bmv2.json) will be generated and placed into `build` sub-folder. + +```shell +ls build/fabric-int/bmv2 +_pp.p4 bmv2.json p4info.txt +``` + +These artefacts are now moved into this repository. diff --git a/src/tests/p4-sd-fabric-svc-connectivity/p4src/_pp.p4 b/src/tests/p4-sd-fabric-svc-connectivity/p4src/_pp.p4 new file mode 100644 index 0000000000000000000000000000000000000000..870509db7f530c7bf9070e4c24b5b546a2a3441d --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/p4src/_pp.p4 @@ -0,0 +1,2452 @@ +error { + PacketRejectedByParser +} +#include +#define V1MODEL_VERSION 20180101 +#include + +typedef bit<9> PortId_t; +typedef bit<16> MulticastGroupId_t; +typedef bit<5> QueueId_t; +typedef bit<10> MirrorId_t; +typedef bit<16> ReplicationId_t; +enum bit<2> MeterColor_t { + GREEN = 0, + YELLOW = 1, + RED = 2 +} + +typedef bit<1> BOOL; +typedef bit<8> FieldListIndex_t; +const PortId_t BMV2_DROP_PORT = 511; +const PortId_t FAKE_V1MODEL_RECIRC_PORT = 510; +const FieldListIndex_t PRESERVE_INT_MD = 241; +const FieldListIndex_t PRESERVE_INGRESS_PORT = 231; +const FieldListIndex_t NO_PRESERVATION = 0; +typedef bit<3> fwd_type_t; +typedef bit<32> next_id_t; +typedef bit<20> mpls_label_t; +typedef bit<48> mac_addr_t; +typedef bit<12> vlan_id_t; +typedef bit<32> ipv4_addr_t; +typedef bit<16> l4_port_t; +typedef bit<32> flow_hash_t; +typedef bit<4> slice_id_t; +typedef bit<2> tc_t; +typedef bit<(4 + 2)> slice_tc_t; +type bit<9> FabricPortId_t; +const bit<8> DEFAULT_APP_ID = 0; +const slice_id_t DEFAULT_SLICE_ID = 0; +const tc_t DEFAULT_TC = 0; +const QueueId_t QUEUE_ID_BEST_EFFORT = 0; +typedef bit<32> teid_t; +typedef bit<12> upf_ctr_idx_t; +typedef bit<8> tun_peer_id_t; +typedef bit<32> ue_session_id_t; +typedef bit<15> session_meter_idx_t; +typedef bit<15> app_meter_idx_t; +const session_meter_idx_t DEFAULT_SESSION_METER_IDX = 0; +const app_meter_idx_t DEFAULT_APP_METER_IDX = 0; +enum bit<2> EncapPresence { + NONE = 0x0, + GTPU_ONLY = 0x1, + GTPU_WITH_PSC = 0x2, + VXLAN = 0x3 +} + +const bit<16> GTPU_UDP_PORT = 2152; +const bit<3> GTP_V1 = 3w1; +const bit<8> GTPU_GPDU = 0xff; +const bit<1> GTP_PROTOCOL_TYPE_GTP = 1w1; +const bit<8> GTPU_NEXT_EXT_NONE = 0x0; +const bit<8> GTPU_NEXT_EXT_PSC = 0x85; +const bit<4> GTPU_EXT_PSC_TYPE_DL = 4w0; +const bit<4> GTPU_EXT_PSC_TYPE_UL = 4w1; +const bit<8> GTPU_EXT_PSC_LEN = 8w1; +enum bit<2> PortType_t { + UNKNOWN = 0x0, + EDGE = 0x1, + INFRA = 0x2, + INTERNAL = 0x3 +} + +const bit<16> ETHERTYPE_QINQ = 0x88a8; +const bit<16> ETHERTYPE_QINQ_NON_STD = 0x9100; +const bit<16> ETHERTYPE_VLAN = 0x8100; +const bit<16> ETHERTYPE_MPLS = 0x8847; +const bit<16> ETHERTYPE_MPLS_MULTICAST = 0x8848; +const bit<16> ETHERTYPE_IPV4 = 0x800; +const bit<16> ETHERTYPE_IPV6 = 0x86dd; +const bit<16> ETHERTYPE_ARP = 0x806; +const bit<16> ETHERTYPE_PPPOED = 0x8863; +const bit<16> ETHERTYPE_PPPOES = 0x8864; +const bit<16> ETHERTYPE_PACKET_OUT = 0xbf01; +const bit<16> ETHERTYPE_CPU_LOOPBACK_INGRESS = 0xbf02; +const bit<16> ETHERTYPE_CPU_LOOPBACK_EGRESS = 0xbf03; +const bit<16> ETHERTYPE_INT_WIP_IPV4 = 0xbf04; +const bit<16> ETHERTYPE_INT_WIP_MPLS = 0xbf05; +const bit<16> PPPOE_PROTOCOL_IP4 = 0x21; +const bit<16> PPPOE_PROTOCOL_IP6 = 0x57; +const bit<16> PPPOE_PROTOCOL_MPLS = 0x281; +const bit<8> PROTO_ICMP = 1; +const bit<8> PROTO_TCP = 6; +const bit<8> PROTO_UDP = 17; +const bit<8> PROTO_ICMPV6 = 58; +const bit<4> IPV4_MIN_IHL = 5; +const fwd_type_t FWD_BRIDGING = 0; +const fwd_type_t FWD_MPLS = 1; +const fwd_type_t FWD_IPV4_UNICAST = 2; +const fwd_type_t FWD_IPV4_MULTICAST = 3; +const fwd_type_t FWD_IPV6_UNICAST = 4; +const fwd_type_t FWD_IPV6_MULTICAST = 5; +const fwd_type_t FWD_UNKNOWN = 7; +const vlan_id_t DEFAULT_VLAN_ID = 12w4094; +const bit<8> DEFAULT_MPLS_TTL = 64; +const bit<8> DEFAULT_IPV4_TTL = 64; +const bit<16> VXLAN_UDP_PORT = 4789; +const bit<7> RECIRC_PORT_NUMBER = 7w68; +action nop() { + NoAction(); +} +enum bit<8> BridgedMdType_t { + INVALID = 0, + INGRESS_TO_EGRESS = 1, + EGRESS_MIRROR = 2, + INGRESS_MIRROR = 3, + INT_INGRESS_DROP = 4, + DEFLECTED = 5 +} + +enum bit<3> FabricMirrorType_t { + INVALID = 0, + INT_REPORT = 1, + PACKET_IN = 2 +} + +const MirrorId_t PACKET_IN_MIRROR_SESSION_ID = 0x1ff; +enum bit<2> CpuLoopbackMode_t { + DISABLED = 0, + DIRECT = 1, + INGRESS = 2 +} + +const bit<4> NPROTO_ETHERNET = 0; +const bit<4> NPROTO_TELEMETRY_DROP_HEADER = 1; +const bit<4> NPROTO_TELEMETRY_SWITCH_LOCAL_HEADER = 2; +const bit<16> REPORT_FIXED_HEADER_BYTES = 12; +const bit<16> DROP_REPORT_HEADER_BYTES = 12; +const bit<16> LOCAL_REPORT_HEADER_BYTES = 16; +const bit<8> INT_MIRROR_SESSION_BASE = 0x80; +const bit<10> V1MODEL_INT_MIRROR_SESSION = 0x1fa; +typedef bit<16> flow_report_filter_index_t; +typedef bit<16> drop_report_filter_index_t; +typedef bit<12> queue_report_filter_index_t; +typedef bit<16> queue_report_quota_t; +typedef bit<3> IntReportType_t; +const IntReportType_t INT_REPORT_TYPE_NO_REPORT = 0; +const IntReportType_t INT_REPORT_TYPE_DROP = 4; +const IntReportType_t INT_REPORT_TYPE_QUEUE = 2; +const IntReportType_t INT_REPORT_TYPE_FLOW = 1; +typedef bit<8> IntWipType_t; +const IntWipType_t INT_IS_NOT_WIP = 0; +const IntWipType_t INT_IS_WIP = 1; +const IntWipType_t INT_IS_WIP_WITH_MPLS = 2; +const bit<16> INT_WIP_ADJUST_IP_BYTES = 14 - 1 ^ 0xffff; +const bit<16> INT_WIP_ADJUST_UDP_BYTES = INT_WIP_ADJUST_IP_BYTES - 20; +const bit<16> INT_WIP_ADJUST_IP_MPLS_BYTES = INT_WIP_ADJUST_IP_BYTES - 4; +const bit<16> INT_WIP_ADJUST_UDP_MPLS_BYTES = INT_WIP_ADJUST_UDP_BYTES - 4; +enum bit<8> IntDropReason_t { + DROP_REASON_UNKNOWN = 0, + DROP_REASON_IP_TTL_ZERO = 26, + DROP_REASON_ROUTING_V4_MISS = 29, + DROP_REASON_ROUTING_V6_MISS = 29, + DROP_REASON_PORT_VLAN_MAPPING_MISS = 55, + DROP_REASON_TRAFFIC_MANAGER = 71, + DROP_REASON_ACL_DENY = 80, + DROP_REASON_BRIDGING_MISS = 89, + DROP_REASON_NEXT_ID_MISS = 128, + DROP_REASON_MPLS_MISS = 129, + DROP_REASON_EGRESS_NEXT_MISS = 130, + DROP_REASON_MPLS_TTL_ZERO = 131, + DROP_REASON_UPF_DL_SESSION_MISS = 132, + DROP_REASON_UPF_DL_SESSION_DROP = 133, + DROP_REASON_UPF_UL_SESSION_MISS = 134, + DROP_REASON_UPF_UL_SESSION_DROP = 135, + DROP_REASON_UPF_DL_SESSION_DROP_BUFF = 136, + DROP_REASON_UPF_DL_TERMINATION_MISS = 137, + DROP_REASON_UPF_DL_TERMINATION_DROP = 138, + DROP_REASON_UPF_UL_TERMINATION_MISS = 139, + DROP_REASON_UPF_UL_TERMINATION_DROP = 140, + DROP_REASON_UPF_UPLINK_RECIRC_DENY = 150, + DROP_REASON_INGRESS_QOS_METER = 160, + DROP_REASON_ROUTING_V4_DROP = 170, + DROP_REASON_ROUTING_V6_DROP = 171 +} + +@controller_header("packet_in") header packet_in_header_t { + FabricPortId_t ingress_port; + bit<7> _pad0; +} + +@controller_header("packet_out") header packet_out_header_t { + @padding + bit<7> pad0; + FabricPortId_t egress_port; + @padding + bit<3> pad1; + QueueId_t queue_id; + @padding + bit<5> pad2; + CpuLoopbackMode_t cpu_loopback_mode; + bit<1> do_forwarding; + @padding + bit<16> pad3; + @padding + bit<48> pad4; + bit<16> ether_type; +} + +header ethernet_t { + mac_addr_t dst_addr; + mac_addr_t src_addr; +} + +header eth_type_t { + bit<16> value; +} + +header vlan_tag_t { + bit<16> eth_type; + bit<3> pri; + bit<1> cfi; + vlan_id_t vlan_id; +} + +header mpls_t { + mpls_label_t label; + bit<3> tc; + bit<1> bos; + bit<8> ttl; +} + +header pppoe_t { + bit<4> version; + bit<4> type_id; + bit<8> code; + bit<16> session_id; + bit<16> length; + bit<16> protocol; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<6> dscp; + bit<2> ecn; + bit<16> total_len; + bit<16> identification; + bit<3> flags; + bit<13> frag_offset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdr_checksum; + bit<32> src_addr; + bit<32> dst_addr; +} + +header ipv6_t { + bit<4> version; + bit<8> traffic_class; + bit<20> flow_label; + bit<16> payload_len; + bit<8> next_hdr; + bit<8> hop_limit; + bit<128> src_addr; + bit<128> dst_addr; +} + +header tcp_t { + bit<16> sport; + bit<16> dport; +} + +@pa_container_size("egress" , "hdr.outer_udp.sport" , 16) @pa_container_size("egress" , "hdr.outer_udp.dport" , 16) header udp_t { + bit<16> sport; + bit<16> dport; + bit<16> len; + bit<16> checksum; +} + +header icmp_t { + bit<8> icmp_type; + bit<8> icmp_code; +} + +header vxlan_t { + bit<8> flags; + bit<24> reserved; + bit<24> vni; + bit<8> reserved_2; +} + +header gtpu_t { + bit<3> version; + bit<1> pt; + bit<1> spare; + bit<1> ex_flag; + bit<1> seq_flag; + bit<1> npdu_flag; + bit<8> msgtype; + bit<16> msglen; + teid_t teid; +} + +header gtpu_options_t { + bit<16> seq_num; + bit<8> n_pdu_num; + bit<8> next_ext; +} + +header gtpu_ext_psc_t { + bit<8> len; + bit<4> type; + bit<4> spare0; + bit<1> ppp; + bit<1> rqi; + bit<6> qfi; + bit<8> next_ext; +} + +@flexible struct upf_bridged_metadata_t { + tun_peer_id_t tun_peer_id; + upf_ctr_idx_t upf_ctr_id; + bit<6> qfi; + bool needs_gtpu_encap; + bool skip_upf; + bool skip_egress_upf_ctr; + teid_t teid; + bit<4> _pad; +} + +@pa_no_overlay("egress" , "hdr.report_fixed_header.rsvd") header report_fixed_header_t { + bit<4> ver; + bit<4> nproto; + bit<3> dqf; + bit<15> rsvd; + bit<6> hw_id; + bit<32> seq_no; + bit<32> ig_tstamp; +} + +@pa_container_size("egress" , "hdr.common_report_header.queue_id" , 8) @pa_container_size("egress" , "hdr.common_report_header.ig_port" , 16) @pa_container_size("egress" , "hdr.common_report_header.eg_port" , 16) @pa_no_overlay("egress" , "hdr.common_report_header.queue_id") @pa_no_overlay("egress" , "hdr.common_report_header.eg_port") header common_report_header_t { + bit<32> switch_id; + bit<7> pad1; + bit<9> ig_port; + bit<7> pad2; + bit<9> eg_port; + bit<3> pad3; + bit<5> queue_id; +} + +header drop_report_header_t { + bit<8> drop_reason; + @padding + bit<16> pad; +} + +header local_report_header_t { + bit<5> pad1; + bit<19> queue_occupancy; + bit<32> eg_tstamp; +} + +@pa_no_overlay("egress" , "fabric_md.int_report_md.bmd_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.mirror_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.ig_port") @pa_no_overlay("egress" , "fabric_md.int_report_md.eg_port") @pa_no_overlay("egress" , "fabric_md.int_report_md.queue_id") @pa_no_overlay("egress" , "fabric_md.int_report_md.queue_occupancy") @pa_no_overlay("egress" , "fabric_md.int_report_md.ig_tstamp") @pa_no_overlay("egress" , "fabric_md.int_report_md.eg_tstamp") @pa_no_overlay("egress" , "fabric_md.int_report_md.drop_reason") @pa_no_overlay("egress" , "fabric_md.int_report_md.ip_eth_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.report_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.flow_hash") @pa_no_overlay("egress" , "fabric_md.int_report_md.encap_presence") header int_report_metadata_t { + BridgedMdType_t bmd_type; + @padding + bit<5> _pad0; + FabricMirrorType_t mirror_type; + @padding + bit<7> _pad1; + bit<9> ig_port; + @padding + bit<7> _pad2; + bit<9> eg_port; + @padding + bit<3> _pad3; + bit<5> queue_id; + @padding + bit<5> _pad4; + bit<19> queue_occupancy; + bit<32> ig_tstamp; + bit<32> eg_tstamp; + bit<8> drop_reason; + bit<16> ip_eth_type; + @padding + bit<6> _pad5; + EncapPresence encap_presence; + bit<3> report_type; + @padding + bit<5> _pad6; + flow_hash_t flow_hash; +} + +@flexible struct int_bridged_metadata_t { + bit<3> report_type; + MirrorId_t mirror_session_id; + IntDropReason_t drop_reason; + QueueId_t queue_id; + PortId_t egress_port; + IntWipType_t wip_type; +} + +struct int_metadata_t { + bit<32> hop_latency; + bit<48> timestamp; + bool vlan_stripped; + bool queue_report; +} + +@flexible struct bridged_metadata_base_t { + flow_hash_t inner_hash; + mpls_label_t mpls_label; + PortId_t ig_port; + bool is_multicast; + fwd_type_t fwd_type; + vlan_id_t vlan_id; + EncapPresence encap_presence; + bit<8> mpls_ttl; + bit<48> ig_tstamp; + bit<16> ip_eth_type; + bit<10> stats_flow_id; + slice_tc_t slice_tc; +} + +header bridged_metadata_t { + BridgedMdType_t bmd_type; + bridged_metadata_base_t base; + upf_bridged_metadata_t upf; + int_bridged_metadata_t int_bmd; + bit<1> _pad0; + bit<7> _pad1; + bit<5> _pad2; +} + +struct lookup_metadata_t { + mac_addr_t eth_dst; + mac_addr_t eth_src; + bit<16> eth_type; + vlan_id_t vlan_id; + bool is_ipv4; + bit<32> ipv4_src; + bit<32> ipv4_dst; + bit<8> ip_proto; + l4_port_t l4_sport; + l4_port_t l4_dport; + bit<8> icmp_type; + bit<8> icmp_code; +} + +struct common_mirror_metadata_t { + MirrorId_t mirror_session_id; + BridgedMdType_t bmd_type; +} + +@pa_auto_init_metadata struct fabric_ingress_metadata_t { + bridged_metadata_t bridged; + flow_hash_t ecmp_hash; + lookup_metadata_t lkp; + bit<32> routing_ipv4_dst; + bool skip_forwarding; + bool skip_next; + next_id_t next_id; + bool egress_port_set; + bool punt_to_cpu; + bool ipv4_checksum_err; + bool inner_ipv4_checksum_err; + slice_id_t slice_id; + tc_t tc; + bool tc_unknown; + bool is_upf_hit; + slice_id_t upf_slice_id; + tc_t upf_tc; + MeterColor_t upf_meter_color; + PortType_t ig_port_type; + common_mirror_metadata_t mirror; +} + +header common_egress_metadata_t { + BridgedMdType_t bmd_type; + @padding + bit<5> _pad; + FabricMirrorType_t mirror_type; +} + +header packet_in_mirror_metadata_t { + BridgedMdType_t bmd_type; + @padding + bit<5> _pad0; + FabricMirrorType_t mirror_type; + @padding + bit<7> _pad1; + PortId_t ingress_port; +} + +@pa_auto_init_metadata struct fabric_egress_metadata_t { + bridged_metadata_t bridged; + PortId_t cpu_port; + bool inner_ipv4_checksum_err; + int_report_metadata_t int_report_md; + int_metadata_t int_md; + bit<16> int_ipv4_len; + bool is_int_recirc; + bit<16> pkt_length; +} + +header fake_ethernet_t { + @padding + bit<48> _pad0; + @padding + bit<48> _pad1; + bit<16> ether_type; +} + +struct ingress_headers_t { + packet_out_header_t packet_out; + packet_in_header_t packet_in; + fake_ethernet_t fake_ethernet; + ethernet_t ethernet; + vlan_tag_t vlan_tag; + eth_type_t eth_type; + mpls_t mpls; + ipv4_t ipv4; + ipv6_t ipv6; + tcp_t tcp; + udp_t udp; + icmp_t icmp; + gtpu_t gtpu; + gtpu_options_t gtpu_options; + gtpu_ext_psc_t gtpu_ext_psc; + vxlan_t vxlan; + ethernet_t inner_ethernet; + eth_type_t inner_eth_type; + ipv4_t inner_ipv4; + tcp_t inner_tcp; + udp_t inner_udp; + icmp_t inner_icmp; +} + +struct egress_headers_t { + packet_in_header_t packet_in; + fake_ethernet_t fake_ethernet; + ethernet_t report_ethernet; + eth_type_t report_eth_type; + mpls_t report_mpls; + ipv4_t report_ipv4; + udp_t report_udp; + report_fixed_header_t report_fixed_header; + common_report_header_t common_report_header; + local_report_header_t local_report_header; + drop_report_header_t drop_report_header; + ethernet_t ethernet; + vlan_tag_t vlan_tag; + eth_type_t eth_type; + mpls_t mpls; + ipv4_t outer_ipv4; + udp_t outer_udp; + gtpu_t outer_gtpu; + gtpu_options_t outer_gtpu_options; + gtpu_ext_psc_t outer_gtpu_ext_psc; + ipv4_t ipv4; + ipv6_t ipv6; + udp_t udp; +} + +struct fabric_v1model_metadata_t { + bool skip_egress; + bool do_upf_uplink_recirc; + bit<1> drop_ctl; + IntReportType_t int_mirror_type; + fabric_ingress_metadata_t ingress; + fabric_egress_metadata_t egress; + @field_list(PRESERVE_INT_MD) + IntReportType_t recirc_preserved_report_type; + @field_list(PRESERVE_INT_MD) + FabricPortId_t recirc_preserved_egress_port; + @field_list(PRESERVE_INT_MD) + IntDropReason_t recirc_preserved_drop_reason; + @field_list(PRESERVE_INGRESS_PORT) + FabricPortId_t recirc_preserved_ingress_port; +} + +struct v1model_header_t { + ingress_headers_t ingress; + egress_headers_t egress; +} + +parser FabricParser(packet_in packet, out v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md, inout standard_metadata_t standard_md) { + state start { + fabric_md.egress.pkt_length = (bit<16>)standard_md.packet_length; + fabric_md.ingress.bridged.setValid(); + fabric_md.ingress.bridged.bmd_type = BridgedMdType_t.INGRESS_TO_EGRESS; + fabric_md.ingress.bridged.base.ig_port = standard_md.ingress_port; + fabric_md.recirc_preserved_ingress_port = (FabricPortId_t)standard_md.ingress_port; + fabric_md.ingress.bridged.base.ig_tstamp = standard_md.ingress_global_timestamp; + fabric_md.ingress.egress_port_set = false; + fabric_md.ingress.punt_to_cpu = false; + fabric_md.ingress.bridged.base.ip_eth_type = 0; + fabric_md.ingress.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UNKNOWN; + fabric_md.ingress.bridged.int_bmd.wip_type = INT_IS_NOT_WIP; + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.NONE; + fabric_md.ingress.upf_meter_color = MeterColor_t.GREEN; + transition check_ethernet; + } + state check_ethernet { + fake_ethernet_t tmp = packet.lookahead(); + transition select(tmp.ether_type) { + ETHERTYPE_CPU_LOOPBACK_INGRESS: parse_fake_ethernet; + ETHERTYPE_CPU_LOOPBACK_EGRESS: parse_fake_ethernet_and_accept; + ETHERTYPE_PACKET_OUT: check_packet_out; + ETHERTYPE_INT_WIP_IPV4: parse_int_wip_ipv4; + ETHERTYPE_INT_WIP_MPLS: parse_int_wip_mpls; + default: parse_ethernet; + } + } + state check_packet_out { + packet_out_header_t tmp = packet.lookahead(); + transition select(tmp.do_forwarding) { + 0: parse_packet_out_and_accept; + default: strip_packet_out; + } + } + state parse_int_wip_ipv4 { + hdr.ingress.ethernet.setValid(); + hdr.ingress.eth_type.setValid(); + hdr.ingress.eth_type.value = ETHERTYPE_IPV4; + fabric_md.ingress.bridged.int_bmd.wip_type = INT_IS_WIP; + fabric_md.ingress.bridged.base.mpls_label = 0; + fabric_md.ingress.bridged.base.mpls_ttl = DEFAULT_MPLS_TTL + 1; + packet.advance(14 * 8); + transition parse_ipv4; + } + state parse_int_wip_mpls { + hdr.ingress.ethernet.setValid(); + hdr.ingress.eth_type.setValid(); + hdr.ingress.eth_type.value = ETHERTYPE_MPLS; + fabric_md.ingress.bridged.int_bmd.wip_type = INT_IS_WIP_WITH_MPLS; + packet.advance(14 * 8); + transition parse_mpls; + } + state parse_packet_out_and_accept { + packet.extract(hdr.ingress.packet_out); + transition accept; + } + state strip_packet_out { + packet.advance(14 * 8); + transition parse_ethernet; + } + state parse_fake_ethernet { + packet.extract(hdr.ingress.fake_ethernet); + fake_ethernet_t tmp = packet.lookahead(); + transition select(tmp.ether_type) { + ETHERTYPE_INT_WIP_IPV4: parse_int_wip_ipv4; + ETHERTYPE_INT_WIP_MPLS: parse_int_wip_mpls; + default: parse_ethernet; + } + } + state parse_fake_ethernet_and_accept { + packet.extract(hdr.ingress.fake_ethernet); + transition accept; + } + state parse_ethernet { + packet.extract(hdr.ingress.ethernet); + transition select(packet.lookahead>()) { + ETHERTYPE_QINQ: parse_vlan_tag; + ETHERTYPE_VLAN &&& 0xefff: parse_vlan_tag; + default: parse_untagged; + } + } + state parse_vlan_tag { + packet.extract(hdr.ingress.vlan_tag); + fabric_md.ingress.bridged.base.vlan_id = hdr.ingress.vlan_tag.vlan_id; + transition select(packet.lookahead>()) { + default: parse_eth_type; + } + } + state parse_untagged { + fabric_md.ingress.bridged.base.vlan_id = DEFAULT_VLAN_ID; + transition parse_eth_type; + } + state parse_eth_type { + packet.extract(hdr.ingress.eth_type); + transition select(hdr.ingress.eth_type.value) { + ETHERTYPE_MPLS: parse_mpls; + ETHERTYPE_IPV4: parse_non_mpls; + ETHERTYPE_IPV6: parse_non_mpls; + default: accept; + } + } + state parse_mpls { + packet.extract(hdr.ingress.mpls); + fabric_md.ingress.bridged.base.mpls_label = hdr.ingress.mpls.label; + fabric_md.ingress.bridged.base.mpls_ttl = hdr.ingress.mpls.ttl; + transition select(packet.lookahead>()) { + 4: parse_ipv4; + 6: parse_ipv6; + default: reject_packet; + } + } + state reject_packet { + verify(false, error.PacketRejectedByParser); + transition accept; + } + state parse_non_mpls { + fabric_md.ingress.bridged.base.mpls_label = 0; + fabric_md.ingress.bridged.base.mpls_ttl = DEFAULT_MPLS_TTL + 1; + transition select(hdr.ingress.eth_type.value) { + ETHERTYPE_IPV4: parse_ipv4; + ETHERTYPE_IPV6: parse_ipv6; + default: accept; + } + } + state parse_ipv4 { + packet.extract(hdr.ingress.ipv4); + fabric_md.ingress.routing_ipv4_dst = hdr.ingress.ipv4.dst_addr; + fabric_md.ingress.bridged.base.ip_eth_type = ETHERTYPE_IPV4; + transition select(hdr.ingress.ipv4.protocol) { + PROTO_TCP: parse_tcp; + PROTO_UDP: parse_udp; + PROTO_ICMP: parse_icmp; + default: accept; + } + } + state parse_ipv6 { + packet.extract(hdr.ingress.ipv6); + fabric_md.ingress.bridged.base.ip_eth_type = ETHERTYPE_IPV6; + transition select(hdr.ingress.ipv6.next_hdr) { + PROTO_TCP: parse_tcp; + PROTO_UDP: parse_udp; + PROTO_ICMPV6: parse_icmp; + default: accept; + } + } + state parse_icmp { + packet.extract(hdr.ingress.icmp); + transition accept; + } + state parse_tcp { + packet.extract(hdr.ingress.tcp); + transition accept; + } + state parse_udp { + packet.extract(hdr.ingress.udp); + gtpu_t gtpu = packet.lookahead(); + transition select(hdr.ingress.udp.dport, gtpu.version, gtpu.msgtype) { + (GTPU_UDP_PORT, GTP_V1, GTPU_GPDU): parse_gtpu; + (VXLAN_UDP_PORT, default, default): parse_vxlan; + default: accept; + } + } + state parse_gtpu { + packet.extract(hdr.ingress.gtpu); + transition select(hdr.ingress.gtpu.ex_flag, hdr.ingress.gtpu.seq_flag, hdr.ingress.gtpu.npdu_flag) { + (0, 0, 0): set_gtpu_only; + default: parse_gtpu_options; + } + } + state set_gtpu_only { + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.GTPU_ONLY; + transition parse_inner_ipv4; + } + state parse_gtpu_options { + packet.extract(hdr.ingress.gtpu_options); + bit<8> gtpu_ext_len = packet.lookahead>(); + transition select(hdr.ingress.gtpu_options.next_ext, gtpu_ext_len) { + (GTPU_NEXT_EXT_PSC, GTPU_EXT_PSC_LEN): parse_gtpu_ext_psc; + default: accept; + } + } + state parse_gtpu_ext_psc { + packet.extract(hdr.ingress.gtpu_ext_psc); + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.GTPU_WITH_PSC; + transition select(hdr.ingress.gtpu_ext_psc.next_ext) { + GTPU_NEXT_EXT_NONE: parse_inner_ipv4; + default: accept; + } + } + state parse_vxlan { + packet.extract(hdr.ingress.vxlan); + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.VXLAN; + transition parse_inner_ethernet; + } + state parse_inner_ethernet { + packet.extract(hdr.ingress.inner_ethernet); + packet.extract(hdr.ingress.inner_eth_type); + transition select(hdr.ingress.inner_eth_type.value) { + ETHERTYPE_IPV4: parse_inner_ipv4; + default: accept; + } + } + state parse_inner_ipv4 { + packet.extract(hdr.ingress.inner_ipv4); + transition select(hdr.ingress.inner_ipv4.protocol) { + PROTO_TCP: parse_inner_tcp; + PROTO_UDP: parse_inner_udp; + PROTO_ICMP: parse_inner_icmp; + default: accept; + } + } + state parse_inner_tcp { + packet.extract(hdr.ingress.inner_tcp); + transition accept; + } + state parse_inner_udp { + packet.extract(hdr.ingress.inner_udp); + transition accept; + } + state parse_inner_icmp { + packet.extract(hdr.ingress.inner_icmp); + transition accept; + } +} + +control FabricDeparser(packet_out packet, in v1model_header_t hdr) { + apply { + packet.emit(hdr.ingress.fake_ethernet); + packet.emit(hdr.ingress.packet_in); + packet.emit(hdr.egress.report_ethernet); + packet.emit(hdr.egress.report_eth_type); + packet.emit(hdr.egress.report_mpls); + packet.emit(hdr.egress.report_ipv4); + packet.emit(hdr.egress.report_udp); + packet.emit(hdr.egress.report_fixed_header); + packet.emit(hdr.egress.common_report_header); + packet.emit(hdr.egress.local_report_header); + packet.emit(hdr.egress.drop_report_header); + packet.emit(hdr.ingress.ethernet); + packet.emit(hdr.ingress.vlan_tag); + packet.emit(hdr.ingress.eth_type); + packet.emit(hdr.ingress.mpls); + packet.emit(hdr.ingress.ipv4); + packet.emit(hdr.ingress.ipv6); + packet.emit(hdr.ingress.tcp); + packet.emit(hdr.ingress.udp); + packet.emit(hdr.ingress.icmp); + packet.emit(hdr.ingress.gtpu); + packet.emit(hdr.ingress.gtpu_options); + packet.emit(hdr.ingress.gtpu_ext_psc); + packet.emit(hdr.ingress.vxlan); + packet.emit(hdr.ingress.inner_ethernet); + packet.emit(hdr.ingress.inner_eth_type); + packet.emit(hdr.ingress.inner_ipv4); + packet.emit(hdr.ingress.inner_tcp); + packet.emit(hdr.ingress.inner_udp); + packet.emit(hdr.ingress.inner_icmp); + } +} + +control Acl(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout FabricPortId_t recirc_preserved_egress_port, inout bit<1> drop_ctl) { + direct_counter(CounterType.packets_and_bytes) acl_counter; + action set_next_id_acl(next_id_t next_id) { + fabric_md.next_id = next_id; + acl_counter.count(); + fabric_md.skip_next = false; + drop_ctl = 0; + } + action copy_to_cpu() { + clone_preserving_field_list(CloneType.I2E, (bit<32>)PACKET_IN_MIRROR_SESSION_ID, PRESERVE_INGRESS_PORT); + acl_counter.count(); + } + action punt_to_cpu() { + copy_to_cpu(); + fabric_md.skip_next = true; + fabric_md.punt_to_cpu = true; + drop_ctl = 1; + } + action drop() { + drop_ctl = 1; + fabric_md.skip_next = true; + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_ACL_DENY; + acl_counter.count(); + } + action set_output_port(FabricPortId_t port_num) { + standard_md.egress_spec = (PortId_t)port_num; + recirc_preserved_egress_port = port_num; + fabric_md.egress_port_set = true; + fabric_md.skip_next = true; + drop_ctl = 0; + acl_counter.count(); + } + action nop_acl() { + acl_counter.count(); + } + table acl { + key = { + fabric_md.bridged.base.ig_port: ternary @name("ig_port") ; + fabric_md.lkp.eth_dst : ternary @name("eth_dst") ; + fabric_md.lkp.eth_src : ternary @name("eth_src") ; + fabric_md.lkp.vlan_id : ternary @name("vlan_id") ; + fabric_md.lkp.eth_type : ternary @name("eth_type") ; + fabric_md.lkp.ipv4_src : ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst : ternary @name("ipv4_dst") ; + fabric_md.lkp.ip_proto : ternary @name("ip_proto") ; + fabric_md.lkp.icmp_type : ternary @name("icmp_type") ; + fabric_md.lkp.icmp_code : ternary @name("icmp_code") ; + fabric_md.lkp.l4_sport : ternary @name("l4_sport") ; + fabric_md.lkp.l4_dport : ternary @name("l4_dport") ; + fabric_md.ig_port_type : ternary @name("ig_port_type") ; + } + actions = { + set_next_id_acl; + punt_to_cpu; + copy_to_cpu; + drop; + set_output_port; + nop_acl; + } + const default_action = nop_acl(); + size = 1024; + counters = acl_counter; + } + apply { + acl.apply(); + } +} + +control Next(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout FabricPortId_t recirc_preserved_egress_port) { + @hidden action output(FabricPortId_t port_num) { + standard_md.egress_spec = (PortId_t)port_num; + recirc_preserved_egress_port = port_num; + fabric_md.egress_port_set = true; + } + @hidden action rewrite_smac(mac_addr_t smac) { + hdr.ethernet.src_addr = smac; + } + @hidden action rewrite_dmac(mac_addr_t dmac) { + hdr.ethernet.dst_addr = dmac; + } + @hidden action routing(FabricPortId_t port_num, mac_addr_t smac, mac_addr_t dmac) { + rewrite_smac(smac); + rewrite_dmac(dmac); + output(port_num); + } + @max_group_size(32w16) action_selector(HashAlgorithm.crc16, 32w16, 32w16) hashed_profile; + direct_counter(CounterType.packets_and_bytes) hashed_counter; + action output_hashed(FabricPortId_t port_num) { + output(port_num); + hashed_counter.count(); + } + action routing_hashed(FabricPortId_t port_num, mac_addr_t smac, mac_addr_t dmac) { + routing(port_num, smac, dmac); + hashed_counter.count(); + } + table hashed { + key = { + fabric_md.next_id : exact @name("next_id") ; + fabric_md.ecmp_hash: selector; + } + actions = { + output_hashed; + routing_hashed; + @defaultonly nop; + } + implementation = hashed_profile; + counters = hashed_counter; + const default_action = nop(); + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) multicast_counter; + action set_mcast_group_id(MulticastGroupId_t group_id) { + standard_md.mcast_grp = group_id; + fabric_md.bridged.base.is_multicast = true; + multicast_counter.count(); + } + action reset_mcast_group_id() { + standard_md.mcast_grp = 0; + fabric_md.bridged.base.is_multicast = false; + } + table multicast { + key = { + fabric_md.next_id: exact @name("next_id") ; + } + actions = { + set_mcast_group_id; + @defaultonly reset_mcast_group_id; + } + counters = multicast_counter; + const default_action = reset_mcast_group_id(); + size = 1024; + } + apply { + hashed.apply(); + multicast.apply(); + } +} + +control EgressNextControl(inout ingress_headers_t hdr, inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout IntDropReason_t recirc_preserved_drop_reason, inout bit<1> drop_ctl) { + @hidden action pop_mpls_if_present() { + hdr.mpls.setInvalid(); + hdr.eth_type.value = fabric_md.bridged.base.ip_eth_type; + } + @hidden action set_mpls() { + hdr.mpls.setValid(); + hdr.mpls.label = fabric_md.bridged.base.mpls_label; + hdr.mpls.tc = 3w0; + hdr.mpls.bos = 1w1; + hdr.mpls.ttl = fabric_md.bridged.base.mpls_ttl; + hdr.eth_type.value = ETHERTYPE_MPLS; + } + @hidden action push_outer_vlan() { + hdr.vlan_tag.setValid(); + hdr.vlan_tag.eth_type = ETHERTYPE_VLAN; + hdr.vlan_tag.vlan_id = fabric_md.bridged.base.vlan_id; + } + direct_counter(CounterType.packets_and_bytes) egress_vlan_counter; + action push_vlan() { + push_outer_vlan(); + egress_vlan_counter.count(); + } + action pop_vlan() { + hdr.vlan_tag.setInvalid(); + egress_vlan_counter.count(); + } + action drop() { + drop_ctl = 1; + egress_vlan_counter.count(); + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_EGRESS_NEXT_MISS; + } + table egress_vlan { + key = { + fabric_md.bridged.base.vlan_id: exact @name("vlan_id") ; + standard_md.egress_port : exact @name("eg_port") ; + } + actions = { + push_vlan; + pop_vlan; + @defaultonly drop; + } + const default_action = drop(); + counters = egress_vlan_counter; + size = 1024; + } + apply { + if (fabric_md.bridged.base.is_multicast && fabric_md.bridged.base.ig_port == standard_md.egress_port) { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_NO_REPORT; + drop_ctl = 1; + } + if (fabric_md.bridged.base.mpls_label == 0) { + if (hdr.mpls.isValid()) { + pop_mpls_if_present(); + } + } else { + set_mpls(); + } + if (!fabric_md.is_int_recirc) { + egress_vlan.apply(); + } + bool regular_packet = true; + regular_packet = !(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP || fabric_md.bridged.bmd_type == BridgedMdType_t.EGRESS_MIRROR); + if (hdr.mpls.isValid()) { + hdr.mpls.ttl = hdr.mpls.ttl - 1; + if (hdr.mpls.ttl == 0) { + drop_ctl = 1; + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_MPLS_TTL_ZERO; + } + } else { + if (hdr.ipv4.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING) { + if (regular_packet) { + hdr.ipv4.ttl = hdr.ipv4.ttl - 1; + } + if (hdr.ipv4.ttl == 0) { + drop_ctl = 1; + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_IP_TTL_ZERO; + } + } else if (hdr.ipv6.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING) { + if (regular_packet) { + hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1; + } + if (hdr.ipv6.hop_limit == 0) { + drop_ctl = 1; + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_IP_TTL_ZERO; + } + } + } + } +} + +const bit<10> UNSET_FLOW_ID = 0; +control StatsIngress(in lookup_metadata_t lkp, in PortId_t ig_port, out bit<10> stats_flow_id) { + direct_counter(CounterType.packets_and_bytes) flow_counter; + action count(bit<10> flow_id) { + stats_flow_id = flow_id; + flow_counter.count(); + } + table flows { + key = { + lkp.ipv4_src: ternary @name("ipv4_src") ; + lkp.ipv4_dst: ternary @name("ipv4_dst") ; + lkp.ip_proto: ternary @name("ip_proto") ; + lkp.l4_sport: ternary @name("l4_sport") ; + lkp.l4_dport: ternary @name("l4_dport") ; + ig_port : exact @name("ig_port") ; + } + actions = { + count; + } + const default_action = count(UNSET_FLOW_ID); + const size = 1 << 10; + counters = flow_counter; + } + apply { + flows.apply(); + } +} + +control StatsEgress(in bit<10> stats_flow_id, in PortId_t eg_port, in BridgedMdType_t bmd_type) { + direct_counter(CounterType.packets_and_bytes) flow_counter; + action count() { + flow_counter.count(); + } + table flows { + key = { + stats_flow_id: exact @name("stats_flow_id") ; + eg_port : exact @name("eg_port") ; + } + actions = { + count; + } + const default_action = count; + const size = 1 << 10; + counters = flow_counter; + } + apply { + if (bmd_type == BridgedMdType_t.INGRESS_TO_EGRESS) { + flows.apply(); + } + } +} + +control Hasher(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md) { + flow_hash_t max = 0xffffffff; + flow_hash_t base = 0; + apply { + hash(fabric_md.bridged.base.inner_hash, HashAlgorithm.crc32, base, { fabric_md.lkp.ipv4_src, fabric_md.lkp.ipv4_dst, fabric_md.lkp.ip_proto, fabric_md.lkp.l4_sport, fabric_md.lkp.l4_dport }, max); + if (fabric_md.bridged.upf.needs_gtpu_encap) { + hash(fabric_md.ecmp_hash, HashAlgorithm.crc32, base, { fabric_md.bridged.upf.tun_peer_id, fabric_md.bridged.upf.teid }, max); + } else if (hdr.gtpu.isValid()) { + hash(fabric_md.ecmp_hash, HashAlgorithm.crc32, base, { hdr.ipv4.src_addr, hdr.ipv4.dst_addr, hdr.gtpu.teid }, max); + } else if (fabric_md.lkp.is_ipv4) { + fabric_md.ecmp_hash = fabric_md.bridged.base.inner_hash; + } else { + fabric_md.bridged.base.inner_hash = 0; + hash(fabric_md.ecmp_hash, HashAlgorithm.crc32, base, { hdr.ethernet.dst_addr, hdr.ethernet.src_addr, hdr.eth_type.value }, max); + } + } +} + +control IngressSliceTcClassifier(inout ingress_headers_t hdr, inout standard_metadata_t standard_md, inout fabric_ingress_metadata_t fabric_md) { + direct_counter(CounterType.packets) classifier_stats; + action set_slice_id_tc(slice_id_t slice_id, tc_t tc) { + fabric_md.slice_id = slice_id; + fabric_md.tc = tc; + fabric_md.tc_unknown = false; + classifier_stats.count(); + } + action no_classification() { + set_slice_id_tc(DEFAULT_SLICE_ID, DEFAULT_TC); + fabric_md.tc_unknown = true; + } + action trust_dscp() { + fabric_md.slice_id = hdr.ipv4.dscp[4 + 2 - 1:2]; + fabric_md.tc = hdr.ipv4.dscp[2 - 1:0]; + fabric_md.tc_unknown = false; + classifier_stats.count(); + } + table classifier { + key = { + fabric_md.bridged.base.ig_port: ternary @name("ig_port") ; + fabric_md.lkp.ipv4_src : ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst : ternary @name("ipv4_dst") ; + fabric_md.lkp.ip_proto : ternary @name("ip_proto") ; + fabric_md.lkp.l4_sport : ternary @name("l4_sport") ; + fabric_md.lkp.l4_dport : ternary @name("l4_dport") ; + } + actions = { + set_slice_id_tc; + trust_dscp; + @defaultonly no_classification; + } + const default_action = no_classification(); + counters = classifier_stats; + size = 512; + } + apply { + classifier.apply(); + } +} + +control IngressQos(inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bit<1> drop_ctl) { + bit<2> packet_color = 2w0; + @hidden action use_upf() { + fabric_md.bridged.base.slice_tc = fabric_md.upf_slice_id ++ fabric_md.upf_tc; + } + @hidden action use_default() { + fabric_md.bridged.base.slice_tc = fabric_md.slice_id ++ fabric_md.tc; + } + @hidden table set_slice_tc { + key = { + fabric_md.is_upf_hit: exact; + } + actions = { + use_upf; + use_default; + } + const size = 2; + const entries = { + true : use_upf; + false : use_default; + } + } + meter(1 << 4 + 2, MeterType.bytes) slice_tc_meter; + direct_counter(CounterType.packets) queues_stats; + action set_queue(QueueId_t qid) { + queues_stats.count(); + } + action meter_drop() { + drop_ctl = 1; + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_INGRESS_QOS_METER; + queues_stats.count(); + } + table queues { + key = { + fabric_md.bridged.base.slice_tc: exact @name("slice_tc") ; + packet_color : ternary @name("color") ; + } + actions = { + set_queue; + meter_drop; + } + const default_action = set_queue(QUEUE_ID_BEST_EFFORT); + counters = queues_stats; + size = 1 << 4 + 2 + 1; + } + action set_default_tc(tc_t tc) { + fabric_md.bridged.base.slice_tc = fabric_md.bridged.base.slice_tc[4 + 2 - 1:2] ++ tc; + } + table default_tc { + key = { + fabric_md.bridged.base.slice_tc: ternary @name("slice_tc") ; + fabric_md.tc_unknown : exact @name("tc_unknown") ; + } + actions = { + set_default_tc; + @defaultonly nop; + } + const default_action = nop; + size = 1 << 4; + } + apply { + set_slice_tc.apply(); + default_tc.apply(); + if (fabric_md.upf_meter_color != MeterColor_t.RED) { + slice_tc_meter.execute_meter((bit<32>)fabric_md.bridged.base.slice_tc, packet_color); + } else { + packet_color = MeterColor_t.RED; + } + queues.apply(); + } +} + +control EgressDscpRewriter(inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout ingress_headers_t hdr) { + bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc; + action rewrite() { + } + action clear() { + tmp_dscp = 0; + } + table rewriter { + key = { + standard_md.egress_port: exact @name("eg_port") ; + } + actions = { + rewrite; + clear; + @defaultonly nop; + } + const default_action = nop; + size = 512; + } + apply { + if (rewriter.apply().hit) { + if (hdr.ipv4.isValid()) { + hdr.ipv4.dscp = tmp_dscp; + } + } + } +} + +control FabricVerifyChecksum(inout v1model_header_t hdr, inout fabric_v1model_metadata_t meta) { + apply { + verify_checksum(hdr.ingress.ipv4.isValid(), { hdr.ingress.ipv4.version, hdr.ingress.ipv4.ihl, hdr.ingress.ipv4.dscp, hdr.ingress.ipv4.ecn, hdr.ingress.ipv4.total_len, hdr.ingress.ipv4.identification, hdr.ingress.ipv4.flags, hdr.ingress.ipv4.frag_offset, hdr.ingress.ipv4.ttl, hdr.ingress.ipv4.protocol, hdr.ingress.ipv4.src_addr, hdr.ingress.ipv4.dst_addr }, hdr.ingress.ipv4.hdr_checksum, HashAlgorithm.csum16); + verify_checksum(hdr.ingress.inner_ipv4.isValid(), { hdr.ingress.inner_ipv4.version, hdr.ingress.inner_ipv4.ihl, hdr.ingress.inner_ipv4.dscp, hdr.ingress.inner_ipv4.ecn, hdr.ingress.inner_ipv4.total_len, hdr.ingress.inner_ipv4.identification, hdr.ingress.inner_ipv4.flags, hdr.ingress.inner_ipv4.frag_offset, hdr.ingress.inner_ipv4.ttl, hdr.ingress.inner_ipv4.protocol, hdr.ingress.inner_ipv4.src_addr, hdr.ingress.inner_ipv4.dst_addr }, hdr.ingress.inner_ipv4.hdr_checksum, HashAlgorithm.csum16); + } +} + +control FabricComputeChecksum(inout v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md) { + apply { + update_checksum(hdr.ingress.ipv4.isValid(), { hdr.ingress.ipv4.version, hdr.ingress.ipv4.ihl, hdr.ingress.ipv4.dscp, hdr.ingress.ipv4.ecn, hdr.ingress.ipv4.total_len, hdr.ingress.ipv4.identification, hdr.ingress.ipv4.flags, hdr.ingress.ipv4.frag_offset, hdr.ingress.ipv4.ttl, hdr.ingress.ipv4.protocol, hdr.ingress.ipv4.src_addr, hdr.ingress.ipv4.dst_addr }, hdr.ingress.ipv4.hdr_checksum, HashAlgorithm.csum16); + update_checksum(hdr.ingress.inner_ipv4.isValid(), { hdr.ingress.inner_ipv4.version, hdr.ingress.inner_ipv4.ihl, hdr.ingress.inner_ipv4.dscp, hdr.ingress.inner_ipv4.ecn, hdr.ingress.inner_ipv4.total_len, hdr.ingress.inner_ipv4.identification, hdr.ingress.inner_ipv4.flags, hdr.ingress.inner_ipv4.frag_offset, hdr.ingress.inner_ipv4.ttl, hdr.ingress.inner_ipv4.protocol, hdr.ingress.inner_ipv4.src_addr, hdr.ingress.inner_ipv4.dst_addr }, hdr.ingress.inner_ipv4.hdr_checksum, HashAlgorithm.csum16); + update_checksum(hdr.egress.report_ipv4.isValid(), { hdr.egress.report_ipv4.version, hdr.egress.report_ipv4.ihl, hdr.egress.report_ipv4.dscp, hdr.egress.report_ipv4.ecn, hdr.egress.report_ipv4.total_len, hdr.egress.report_ipv4.identification, hdr.egress.report_ipv4.flags, hdr.egress.report_ipv4.frag_offset, hdr.egress.report_ipv4.ttl, hdr.egress.report_ipv4.protocol, hdr.egress.report_ipv4.src_addr, hdr.egress.report_ipv4.dst_addr }, hdr.egress.report_ipv4.hdr_checksum, HashAlgorithm.csum16); + } +} + +control PacketIoIngress(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout bool skip_egress, inout standard_metadata_t standard_md, inout FabricPortId_t recirc_preserved_egress_port) { + @hidden action do_packet_out() { + standard_md.egress_spec = (PortId_t)hdr.packet_out.egress_port; + recirc_preserved_egress_port = hdr.packet_out.egress_port; + fabric_md.egress_port_set = true; + hdr.packet_out.setInvalid(); + skip_egress = true; + fabric_md.bridged.setInvalid(); + exit; + } + apply { + if (hdr.packet_out.isValid()) { + do_packet_out(); + } + } +} + +control PacketIoEgress(inout ingress_headers_t hdr, inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md, in FabricPortId_t preserved_ig_port) { + action set_switch_info(FabricPortId_t cpu_port) { + fabric_md.cpu_port = (PortId_t)cpu_port; + } + table switch_info { + actions = { + set_switch_info; + @defaultonly nop; + } + default_action = nop; + const size = 1; + } + apply { + switch_info.apply(); + if (standard_md.egress_port == fabric_md.cpu_port) { + hdr.packet_in.setValid(); + hdr.packet_in.ingress_port = preserved_ig_port; + hdr.fake_ethernet.setInvalid(); + exit; + } + if (hdr.fake_ethernet.isValid() && hdr.fake_ethernet.ether_type == ETHERTYPE_CPU_LOOPBACK_EGRESS) { + fabric_md.pkt_length = (bit<16>)standard_md.packet_length - 14; + } + } +} + +control PreNext(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md) { + direct_counter(CounterType.packets_and_bytes) next_mpls_counter; + action set_mpls_label(mpls_label_t label) { + fabric_md.bridged.base.mpls_label = label; + next_mpls_counter.count(); + } + table next_mpls { + key = { + fabric_md.next_id: exact @name("next_id") ; + } + actions = { + set_mpls_label; + @defaultonly nop; + } + const default_action = nop(); + counters = next_mpls_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) next_vlan_counter; + action set_vlan(vlan_id_t vlan_id) { + fabric_md.bridged.base.vlan_id = vlan_id; + next_vlan_counter.count(); + } + table next_vlan { + key = { + fabric_md.next_id: exact @name("next_id") ; + } + actions = { + set_vlan; + @defaultonly nop; + } + const default_action = nop(); + counters = next_vlan_counter; + size = 1024; + } + apply { + next_mpls.apply(); + next_vlan.apply(); + } +} + +control Filtering(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md) { + direct_counter(CounterType.packets_and_bytes) ingress_port_vlan_counter; + action deny() { + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + fabric_md.ig_port_type = PortType_t.UNKNOWN; + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_PORT_VLAN_MAPPING_MISS; + ingress_port_vlan_counter.count(); + } + action permit(PortType_t port_type) { + fabric_md.ig_port_type = port_type; + ingress_port_vlan_counter.count(); + } + action permit_with_internal_vlan(vlan_id_t vlan_id, PortType_t port_type) { + fabric_md.bridged.base.vlan_id = vlan_id; + permit(port_type); + } + table ingress_port_vlan { + key = { + fabric_md.bridged.base.ig_port: exact @name("ig_port") ; + hdr.vlan_tag.isValid() : exact @name("vlan_is_valid") ; + hdr.vlan_tag.vlan_id : ternary @name("vlan_id") ; + } + actions = { + deny(); + permit(); + permit_with_internal_vlan(); + } + const default_action = deny(); + counters = ingress_port_vlan_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) fwd_classifier_counter; + action set_forwarding_type(fwd_type_t fwd_type) { + fabric_md.bridged.base.fwd_type = fwd_type; + fwd_classifier_counter.count(); + } + counter(8, CounterType.packets_and_bytes) fwd_type_counter; + table fwd_classifier { + key = { + fabric_md.bridged.base.ig_port : exact @name("ig_port") ; + fabric_md.lkp.eth_dst : ternary @name("eth_dst") ; + fabric_md.lkp.eth_type : ternary @name("eth_type") ; + fabric_md.bridged.base.ip_eth_type: exact @name("ip_eth_type") ; + } + actions = { + set_forwarding_type; + } + const default_action = set_forwarding_type(FWD_BRIDGING); + counters = fwd_classifier_counter; + size = 1024; + } + apply { + ingress_port_vlan.apply(); + fwd_classifier.apply(); + fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type); + } +} + +control Forwarding(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bit<1> drop_ctl) { + action set_int_drop_reason(bit<8> drop_reason) { + fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason; + } + @hidden action set_next_id(next_id_t next_id) { + fabric_md.next_id = next_id; + } + direct_counter(CounterType.packets_and_bytes) bridging_counter; + action set_next_id_bridging(next_id_t next_id) { + set_next_id(next_id); + bridging_counter.count(); + } + table bridging { + key = { + fabric_md.bridged.base.vlan_id: exact @name("vlan_id") ; + hdr.ethernet.dst_addr : ternary @name("eth_dst") ; + } + actions = { + set_next_id_bridging; + @defaultonly set_int_drop_reason; + } + const default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_BRIDGING_MISS); + counters = bridging_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) mpls_counter; + action pop_mpls_and_next(next_id_t next_id) { + hdr.mpls.setInvalid(); + hdr.eth_type.value = fabric_md.bridged.base.ip_eth_type; + fabric_md.bridged.base.mpls_label = 0; + set_next_id(next_id); + mpls_counter.count(); + } + table mpls { + key = { + fabric_md.bridged.base.mpls_label: exact @name("mpls_label") ; + } + actions = { + pop_mpls_and_next; + @defaultonly set_int_drop_reason; + } + const default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_MPLS_MISS); + counters = mpls_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) routing_v4_counter; + action set_next_id_routing_v4(next_id_t next_id) { + set_next_id(next_id); + routing_v4_counter.count(); + } + action nop_routing_v4() { + routing_v4_counter.count(); + } + action drop_routing_v4() { + fabric_md.skip_next = true; + routing_v4_counter.count(); + drop_ctl = 1; + } + table routing_v4 { + key = { + fabric_md.routing_ipv4_dst: lpm @name("ipv4_dst") ; + } + actions = { + set_next_id_routing_v4; + nop_routing_v4; + drop_routing_v4; + @defaultonly set_int_drop_reason; + } + default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_ROUTING_V4_MISS); + counters = routing_v4_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) routing_v6_counter; + action set_next_id_routing_v6(next_id_t next_id) { + set_next_id(next_id); + routing_v6_counter.count(); + } + action drop_routing_v6() { + fabric_md.skip_next = true; + routing_v6_counter.count(); + drop_ctl = 1; + } + table routing_v6 { + key = { + hdr.ipv6.dst_addr: lpm @name("ipv6_dst") ; + } + actions = { + set_next_id_routing_v6; + drop_routing_v6; + @defaultonly set_int_drop_reason; + } + default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_ROUTING_V6_MISS); + counters = routing_v6_counter; + size = 1024; + } + apply { + if (hdr.ethernet.isValid() && fabric_md.bridged.base.fwd_type == FWD_BRIDGING) { + bridging.apply(); + } else if (hdr.mpls.isValid() && fabric_md.bridged.base.fwd_type == FWD_MPLS) { + mpls.apply(); + } else if (fabric_md.lkp.is_ipv4 && (fabric_md.bridged.base.fwd_type == FWD_IPV4_UNICAST || fabric_md.bridged.base.fwd_type == FWD_IPV4_MULTICAST)) { + routing_v4.apply(); + } else if (hdr.ipv6.isValid() && fabric_md.bridged.base.fwd_type == FWD_IPV6_UNICAST) { + routing_v6.apply(); + } + } +} + +control LookupMdInit(in ingress_headers_t hdr, out lookup_metadata_t lkp_md) { + apply { + lkp_md.eth_dst = hdr.ethernet.dst_addr; + lkp_md.eth_src = hdr.ethernet.src_addr; + lkp_md.eth_type = hdr.eth_type.value; + lkp_md.vlan_id = 0; + if (hdr.vlan_tag.isValid()) { + lkp_md.vlan_id = hdr.vlan_tag.vlan_id; + } + lkp_md.is_ipv4 = false; + lkp_md.ipv4_src = 0; + lkp_md.ipv4_dst = 0; + lkp_md.ip_proto = 0; + lkp_md.l4_sport = 0; + lkp_md.l4_dport = 0; + lkp_md.icmp_type = 0; + lkp_md.icmp_code = 0; + if (hdr.inner_ipv4.isValid()) { + lkp_md.is_ipv4 = true; + lkp_md.ipv4_src = hdr.inner_ipv4.src_addr; + lkp_md.ipv4_dst = hdr.inner_ipv4.dst_addr; + lkp_md.ip_proto = hdr.inner_ipv4.protocol; + if (hdr.inner_tcp.isValid()) { + lkp_md.l4_sport = hdr.inner_tcp.sport; + lkp_md.l4_dport = hdr.inner_tcp.dport; + } else if (hdr.inner_udp.isValid()) { + lkp_md.l4_sport = hdr.inner_udp.sport; + lkp_md.l4_dport = hdr.inner_udp.dport; + } else if (hdr.inner_icmp.isValid()) { + lkp_md.icmp_type = hdr.inner_icmp.icmp_type; + lkp_md.icmp_code = hdr.inner_icmp.icmp_code; + } + } else if (hdr.ipv4.isValid()) { + lkp_md.is_ipv4 = true; + lkp_md.ipv4_src = hdr.ipv4.src_addr; + lkp_md.ipv4_dst = hdr.ipv4.dst_addr; + lkp_md.ip_proto = hdr.ipv4.protocol; + if (hdr.tcp.isValid()) { + lkp_md.l4_sport = hdr.tcp.sport; + lkp_md.l4_dport = hdr.tcp.dport; + } else if (hdr.udp.isValid()) { + lkp_md.l4_sport = hdr.udp.sport; + lkp_md.l4_dport = hdr.udp.dport; + } else if (hdr.icmp.isValid()) { + lkp_md.icmp_type = hdr.icmp.icmp_type; + lkp_md.icmp_code = hdr.icmp.icmp_code; + } + } + } +} + +control UpfIngress(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bool do_upf_uplink_recirc, inout bit<1> drop_ctl) { + counter(4096, CounterType.packets_and_bytes) terminations_counter; + meter(20000, MeterType.bytes) session_meter; + meter(20000, MeterType.bytes) app_meter; + bool is_uplink = false; + bool term_hit = false; + bool sess_hit = false; + bit<32> app_ipv4_addr = 0; + l4_port_t app_l4_port = 0; + bit<8> app_ip_proto = 0; + bit<8> internal_app_id = DEFAULT_APP_ID; + ue_session_id_t ue_session_id = 0; + session_meter_idx_t session_meter_idx_internal = DEFAULT_SESSION_METER_IDX; + app_meter_idx_t app_meter_idx_internal = DEFAULT_APP_METER_IDX; + @hidden action _drop_common() { + drop_ctl = 1; + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + } + @hidden action _term_hit(upf_ctr_idx_t ctr_id) { + fabric_md.bridged.upf.upf_ctr_id = ctr_id; + term_hit = true; + } + @hidden action _set_field_encap(teid_t teid, bit<6> qfi) { + fabric_md.bridged.upf.needs_gtpu_encap = true; + fabric_md.bridged.upf.teid = teid; + fabric_md.bridged.upf.qfi = qfi; + } + @hidden action _gtpu_decap() { + fabric_md.bridged.base.ip_eth_type = ETHERTYPE_IPV4; + fabric_md.routing_ipv4_dst = hdr.inner_ipv4.dst_addr; + hdr.ipv4 = hdr.inner_ipv4; + hdr.inner_ipv4.setInvalid(); + hdr.udp = hdr.inner_udp; + hdr.inner_udp.setInvalid(); + hdr.tcp = hdr.inner_tcp; + hdr.inner_tcp.setInvalid(); + hdr.icmp = hdr.inner_icmp; + hdr.inner_icmp.setInvalid(); + hdr.gtpu.setInvalid(); + hdr.gtpu_options.setInvalid(); + hdr.gtpu_ext_psc.setInvalid(); + fabric_md.bridged.base.encap_presence = EncapPresence.NONE; + } + @hidden action _iface_common(slice_id_t slice_id) { + fabric_md.bridged.upf.skip_upf = false; + fabric_md.is_upf_hit = true; + fabric_md.upf_slice_id = slice_id; + } + action iface_access(slice_id_t slice_id) { + _iface_common(slice_id); + } + action iface_core(slice_id_t slice_id) { + _iface_common(slice_id); + } + action iface_dbuf(slice_id_t slice_id) { + _iface_common(slice_id); + _gtpu_decap(); + } + action iface_miss() { + fabric_md.bridged.upf.skip_upf = true; + } + table interfaces { + key = { + hdr.ipv4.dst_addr : lpm @name("ipv4_dst_addr") ; + hdr.gtpu.isValid(): exact @name("gtpu_is_valid") ; + } + actions = { + iface_access; + iface_core; + iface_dbuf; + @defaultonly iface_miss; + } + const default_action = iface_miss(); + const size = 64; + } + action set_uplink_session_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_SESSION_MISS; + } + action set_uplink_session_drop() { + sess_hit = true; + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_SESSION_DROP; + } + action set_downlink_session_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_SESSION_MISS; + } + action set_downlink_session_drop() { + sess_hit = true; + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_SESSION_DROP; + } + action set_downlink_session(tun_peer_id_t tun_peer_id, session_meter_idx_t session_meter_idx) { + sess_hit = true; + ue_session_id = fabric_md.routing_ipv4_dst; + session_meter_idx_internal = session_meter_idx; + fabric_md.bridged.upf.tun_peer_id = tun_peer_id; + } + action set_downlink_session_buf(tun_peer_id_t tun_peer_id, session_meter_idx_t session_meter_idx) { + sess_hit = true; + ue_session_id = fabric_md.routing_ipv4_dst; + session_meter_idx_internal = session_meter_idx; + fabric_md.bridged.upf.tun_peer_id = tun_peer_id; + fabric_md.bridged.upf.skip_egress_upf_ctr = true; + } + action set_downlink_session_buf_drop() { + sess_hit = true; + ue_session_id = fabric_md.routing_ipv4_dst; + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_SESSION_DROP_BUFF; + } + action set_uplink_session(session_meter_idx_t session_meter_idx) { + sess_hit = true; + ue_session_id = fabric_md.lkp.ipv4_src; + session_meter_idx_internal = session_meter_idx; + _gtpu_decap(); + } + table downlink_sessions { + key = { + fabric_md.routing_ipv4_dst: exact @name("ue_addr") ; + } + actions = { + set_downlink_session; + set_downlink_session_buf; + set_downlink_session_buf_drop; + set_downlink_session_drop; + @defaultonly set_downlink_session_miss; + } + size = 100000; + const default_action = set_downlink_session_miss(); + } + table uplink_sessions { + key = { + hdr.ipv4.dst_addr: exact @name("tunnel_ipv4_dst") ; + hdr.gtpu.teid : exact @name("teid") ; + } + actions = { + set_uplink_session; + set_uplink_session_drop; + @defaultonly set_uplink_session_miss; + } + size = 100000 * 1; + const default_action = set_uplink_session_miss(); + } + action uplink_drop_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_TERMINATION_MISS; + } + action downlink_drop_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_TERMINATION_MISS; + } + action uplink_drop(upf_ctr_idx_t ctr_id) { + _drop_common(); + _term_hit(ctr_id); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_TERMINATION_DROP; + } + action downlink_drop(upf_ctr_idx_t ctr_id) { + _drop_common(); + _term_hit(ctr_id); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_TERMINATION_DROP; + } + action app_fwd(upf_ctr_idx_t ctr_id, tc_t tc, app_meter_idx_t app_meter_idx) { + _term_hit(ctr_id); + fabric_md.upf_tc = tc; + app_meter_idx_internal = app_meter_idx; + fabric_md.tc_unknown = false; + } + action downlink_fwd_encap(upf_ctr_idx_t ctr_id, tc_t tc, teid_t teid, bit<6> qfi, app_meter_idx_t app_meter_idx) { + app_fwd(ctr_id, tc, app_meter_idx); + _set_field_encap(teid, qfi); + } + table uplink_terminations { + key = { + ue_session_id : exact @name("ue_session_id") ; + internal_app_id: exact @name("app_id") ; + } + actions = { + app_fwd; + uplink_drop; + @defaultonly uplink_drop_miss; + } + const default_action = uplink_drop_miss(); + const size = 100000; + } + table downlink_terminations { + key = { + ue_session_id : exact @name("ue_session_id") ; + internal_app_id: exact @name("app_id") ; + } + actions = { + downlink_fwd_encap; + downlink_drop; + @defaultonly downlink_drop_miss; + } + const default_action = downlink_drop_miss(); + const size = 100000; + } + action set_routing_ipv4_dst(ipv4_addr_t tun_dst_addr) { + fabric_md.routing_ipv4_dst = tun_dst_addr; + } + table ig_tunnel_peers { + key = { + fabric_md.bridged.upf.tun_peer_id: exact @name("tun_peer_id") ; + } + actions = { + set_routing_ipv4_dst; + @defaultonly nop; + } + const default_action = nop(); + const size = 256; + } + action set_app_id(bit<8> app_id) { + internal_app_id = app_id; + } + table applications { + key = { + fabric_md.upf_slice_id: exact @name("slice_id") ; + app_ipv4_addr : lpm @name("app_ipv4_addr") ; + app_l4_port : range @name("app_l4_port") ; + app_ip_proto : ternary @name("app_ip_proto") ; + } + actions = { + set_app_id; + @defaultonly nop; + } + const default_action = nop(); + size = 5 * 1; + } + direct_counter(CounterType.packets) recirc_stats; + action recirc_allow() { + standard_md.egress_spec = FAKE_V1MODEL_RECIRC_PORT; + fabric_md.bridged.base.vlan_id = DEFAULT_VLAN_ID; + do_upf_uplink_recirc = true; + fabric_md.egress_port_set = true; + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + recirc_stats.count(); + } + action recirc_deny() { + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UPLINK_RECIRC_DENY; + do_upf_uplink_recirc = false; + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + recirc_stats.count(); + } + action recirc_miss() { + recirc_stats.count(); + } + table uplink_recirc_rules { + key = { + fabric_md.lkp.ipv4_src: ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst: ternary @name("ipv4_dst") ; + } + actions = { + recirc_allow; + recirc_deny; + @defaultonly recirc_miss; + } + const default_action = recirc_miss; + size = 64; + counters = recirc_stats; + } + apply { + if (hdr.ipv4.isValid()) { + switch (interfaces.apply().action_run) { + iface_access: { + is_uplink = true; + app_ipv4_addr = fabric_md.lkp.ipv4_dst; + app_l4_port = fabric_md.lkp.l4_dport; + app_ip_proto = fabric_md.lkp.ip_proto; + if (fabric_md.bridged.base.encap_presence != EncapPresence.NONE) { + uplink_sessions.apply(); + } + } + iface_core: { + app_ipv4_addr = fabric_md.lkp.ipv4_src; + app_l4_port = fabric_md.lkp.l4_sport; + app_ip_proto = fabric_md.lkp.ip_proto; + downlink_sessions.apply(); + } + iface_dbuf: { + app_ipv4_addr = fabric_md.lkp.ipv4_src; + app_l4_port = fabric_md.lkp.l4_sport; + app_ip_proto = fabric_md.lkp.ip_proto; + downlink_sessions.apply(); + } + } + applications.apply(); + if (sess_hit) { + if (is_uplink) { + uplink_terminations.apply(); + uplink_recirc_rules.apply(); + } else { + downlink_terminations.apply(); + } + } else { + fabric_md.bridged.upf.skip_egress_upf_ctr = true; + } + app_meter.execute_meter((bit<32>)app_meter_idx_internal, fabric_md.upf_meter_color); + if (fabric_md.upf_meter_color != MeterColor_t.RED) { + session_meter.execute_meter((bit<32>)session_meter_idx_internal, fabric_md.upf_meter_color); + } + ig_tunnel_peers.apply(); + if (term_hit) { + terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id); + } + } + } +} + +control UpfEgress(inout ingress_headers_t hdr, inout fabric_egress_metadata_t fabric_md) { + counter(4096, CounterType.packets_and_bytes) terminations_counter; + action load_tunnel_params(l4_port_t tunnel_src_port, ipv4_addr_t tunnel_src_addr, ipv4_addr_t tunnel_dst_addr) { + hdr.ipv4.src_addr = tunnel_src_addr; + hdr.ipv4.dst_addr = tunnel_dst_addr; + hdr.udp.sport = tunnel_src_port; + } + table eg_tunnel_peers { + key = { + fabric_md.bridged.upf.tun_peer_id: exact @name("tun_peer_id") ; + } + actions = { + load_tunnel_params; + @defaultonly nop; + } + const default_action = nop(); + const size = 256; + } + @hidden action _encap_initialize() { + hdr.ipv4.version = 4w4; + hdr.ipv4.ihl = 4w5; + hdr.ipv4.dscp = 0; + hdr.ipv4.ecn = 0; + hdr.ipv4.identification = 0x1513; + hdr.ipv4.flags = 0; + hdr.ipv4.frag_offset = 0; + hdr.ipv4.ttl = DEFAULT_IPV4_TTL; + hdr.ipv4.protocol = PROTO_UDP; + hdr.udp.dport = GTPU_UDP_PORT; + hdr.gtpu.version = GTP_V1; + hdr.gtpu.pt = GTP_PROTOCOL_TYPE_GTP; + hdr.gtpu.spare = 0; + hdr.gtpu.seq_flag = 0; + hdr.gtpu.npdu_flag = 0; + hdr.gtpu.msgtype = GTPU_GPDU; + hdr.gtpu.teid = fabric_md.bridged.upf.teid; + hdr.gtpu_options.seq_num = 0; + hdr.gtpu_options.n_pdu_num = 0; + hdr.gtpu_options.next_ext = GTPU_NEXT_EXT_PSC; + hdr.gtpu_ext_psc.len = GTPU_EXT_PSC_LEN; + hdr.gtpu_ext_psc.type = GTPU_EXT_PSC_TYPE_DL; + hdr.gtpu_ext_psc.spare0 = 0; + hdr.gtpu_ext_psc.ppp = 0; + hdr.gtpu_ext_psc.rqi = 0; + hdr.gtpu_ext_psc.next_ext = GTPU_NEXT_EXT_NONE; + } + @hidden action _encap_common() { + hdr.inner_ipv4.setValid(); + hdr.inner_ipv4 = hdr.ipv4; + hdr.udp.setValid(); + hdr.gtpu.setValid(); + _encap_initialize(); + } + action gtpu_only() { + _encap_common(); + hdr.ipv4.total_len = 20 + 8 + 8 + hdr.inner_ipv4.total_len; + hdr.udp.len = 8 + 8 + hdr.inner_ipv4.total_len; + hdr.gtpu.msglen = hdr.inner_ipv4.total_len; + fabric_md.int_report_md.encap_presence = EncapPresence.GTPU_ONLY; + } + action gtpu_with_psc() { + hdr.gtpu_options.setValid(); + hdr.gtpu_ext_psc.setValid(); + _encap_common(); + hdr.ipv4.total_len = 20 + 8 + 8 + 4 + 4 + hdr.inner_ipv4.total_len; + hdr.udp.len = 8 + 8 + 4 + 4 + hdr.inner_ipv4.total_len; + hdr.gtpu.msglen = 4 + 4 + hdr.inner_ipv4.total_len; + hdr.gtpu.ex_flag = 1; + hdr.gtpu_ext_psc.qfi = fabric_md.bridged.upf.qfi; + fabric_md.int_report_md.encap_presence = EncapPresence.GTPU_WITH_PSC; + } + table gtpu_encap { + actions = { + gtpu_only; + gtpu_with_psc; + } + default_action = gtpu_only(); + const size = 1; + } + apply { + if (!fabric_md.bridged.upf.skip_upf) { + if (fabric_md.bridged.upf.needs_gtpu_encap) { + if (hdr.udp.isValid()) { + hdr.inner_udp.setValid(); + hdr.inner_udp = hdr.udp; + hdr.udp.setInvalid(); + } + if (hdr.tcp.isValid()) { + hdr.inner_tcp.setValid(); + hdr.inner_tcp = hdr.tcp; + hdr.tcp.setInvalid(); + } + if (hdr.icmp.isValid()) { + hdr.inner_icmp.setValid(); + hdr.inner_icmp = hdr.icmp; + hdr.icmp.setInvalid(); + } + gtpu_encap.apply(); + eg_tunnel_peers.apply(); + } + if (!fabric_md.bridged.upf.skip_egress_upf_ctr) { + terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id); + } + } + } +} + +control IntWatchlist(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout IntReportType_t recirc_preserved_report_type) { + direct_counter(CounterType.packets_and_bytes) watchlist_counter; + action mark_to_report() { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_FLOW; + recirc_preserved_report_type = INT_REPORT_TYPE_FLOW; + watchlist_counter.count(); + } + action no_report() { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_NO_REPORT; + recirc_preserved_report_type = INT_REPORT_TYPE_NO_REPORT; + } + action no_report_collector() { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_NO_REPORT; + } + table watchlist { + key = { + fabric_md.lkp.is_ipv4 : exact @name("ipv4_valid") ; + fabric_md.lkp.ipv4_src: ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst: ternary @name("ipv4_dst") ; + fabric_md.lkp.ip_proto: ternary @name("ip_proto") ; + fabric_md.lkp.l4_sport: range @name("l4_sport") ; + fabric_md.lkp.l4_dport: range @name("l4_dport") ; + } + actions = { + mark_to_report; + no_report_collector; + @defaultonly no_report(); + } + const default_action = no_report(); + const size = 64; + counters = watchlist_counter; + } + apply { + watchlist.apply(); + } +} + +control IntIngress(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bit<1> drop_ctl) { + direct_counter(CounterType.packets_and_bytes) drop_report_counter; + @hidden action report_drop() { + fabric_md.bridged.bmd_type = BridgedMdType_t.INT_INGRESS_DROP; + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_DROP; + fabric_md.bridged.base.vlan_id = DEFAULT_VLAN_ID; + fabric_md.bridged.base.mpls_label = 0; + fabric_md.bridged.upf.skip_upf = true; + drop_ctl = 0; + standard_md.egress_spec = FAKE_V1MODEL_RECIRC_PORT; + drop_report_counter.count(); + } + @hidden table drop_report { + key = { + fabric_md.bridged.int_bmd.report_type: exact @name("int_report_type") ; + drop_ctl : exact @name("drop_ctl") ; + fabric_md.punt_to_cpu : exact @name("punt_to_cpu") ; + fabric_md.egress_port_set : exact @name("egress_port_set") ; + standard_md.mcast_grp : ternary @name("mcast_group_id") ; + } + actions = { + report_drop; + @defaultonly nop; + } + const entries = { + (INT_REPORT_TYPE_FLOW, 1, false, false, default) : report_drop(); + (INT_REPORT_TYPE_FLOW, 1, false, true, default) : report_drop(); + (INT_REPORT_TYPE_FLOW, 0, false, false, 0) : report_drop(); + } + const default_action = nop(); + counters = drop_report_counter; + } + apply { + fabric_md.bridged.int_bmd.egress_port = standard_md.egress_spec; + fabric_md.bridged.int_bmd.queue_id = 0; + drop_report.apply(); + } +} + +control IntEgress(inout v1model_header_t hdr_v1model, inout fabric_v1model_metadata_t fabric_v1model, inout standard_metadata_t standard_md) { + const bit<48> DEFAULT_TIMESTAMP_MASK = 0xffffc0000000; + const bit<32> DEFAULT_HOP_LATENCY_MASK = 0xffffff00; + egress_headers_t hdr = hdr_v1model.egress; + fabric_egress_metadata_t fabric_md = fabric_v1model.egress; + direct_counter(CounterType.packets_and_bytes) report_counter; + direct_counter(CounterType.packets_and_bytes) int_metadata_counter; + QueueId_t egress_qid = 0; + @hidden register>(1024) seq_number; + @hidden action get_seq_number(in bit<32> seq_number_idx, out bit<32> result) { + bit<32> reg = 0; + seq_number.read(reg, seq_number_idx); + reg = reg + 1; + result = reg; + seq_number.write(seq_number_idx, reg); + } + action check_quota() { + } + action reset_quota() { + } + table queue_latency_thresholds { + key = { + egress_qid : exact @name("egress_qid") ; + fabric_md.int_md.hop_latency[31:16]: range @name("hop_latency_upper") ; + fabric_md.int_md.hop_latency[15:0] : range @name("hop_latency_lower") ; + } + actions = { + check_quota; + reset_quota; + @defaultonly nop; + } + default_action = nop(); + const size = 32 * 4; + } + action set_config(bit<32> hop_latency_mask, bit<48> timestamp_mask) { + fabric_md.int_md.hop_latency = fabric_md.int_md.hop_latency & hop_latency_mask; + fabric_md.int_md.timestamp = fabric_md.int_md.timestamp & timestamp_mask; + } + table config { + actions = { + @defaultonly set_config; + } + default_action = set_config(DEFAULT_HOP_LATENCY_MASK, DEFAULT_TIMESTAMP_MASK); + const size = 1; + } + @hidden action _report_encap_common(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, bit<32> switch_id) { + random(hdr.report_ipv4.identification, 0, 0xffff); + hdr.report_ipv4.src_addr = src_ip; + hdr.report_ipv4.dst_addr = mon_ip; + hdr.report_udp.dport = mon_port; + get_seq_number((bit<32>)hdr.report_fixed_header.hw_id, hdr.report_fixed_header.seq_no); + hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type; + hdr.common_report_header.switch_id = switch_id; + hdr.common_report_header.pad1 = 0; + hdr.common_report_header.pad2 = 0; + hdr.common_report_header.pad3 = 0; + hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type; + fabric_v1model.int_mirror_type = (bit<3>)FabricMirrorType_t.INVALID; + report_counter.count(); + } + action do_local_report_encap(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, bit<32> switch_id) { + _report_encap_common(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_IPV4; + hdr.report_fixed_header.nproto = NPROTO_TELEMETRY_SWITCH_LOCAL_HEADER; + hdr.local_report_header.setValid(); + } + action do_local_report_encap_mpls(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, mpls_label_t mon_label, bit<32> switch_id) { + do_local_report_encap(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_MPLS; + hdr.report_mpls.setValid(); + hdr.report_mpls.tc = 0; + hdr.report_mpls.bos = 0; + hdr.report_mpls.ttl = DEFAULT_MPLS_TTL; + hdr.report_mpls.label = mon_label; + } + action do_drop_report_encap(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, bit<32> switch_id) { + _report_encap_common(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_IPV4; + hdr.report_fixed_header.nproto = NPROTO_TELEMETRY_DROP_HEADER; + hdr.drop_report_header.setValid(); + hdr.local_report_header.setInvalid(); + hdr.drop_report_header.drop_reason = fabric_md.bridged.int_bmd.drop_reason; + } + action do_drop_report_encap_mpls(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, mpls_label_t mon_label, bit<32> switch_id) { + do_drop_report_encap(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_MPLS; + hdr.report_mpls.setValid(); + hdr.report_mpls.tc = 0; + hdr.report_mpls.bos = 0; + hdr.report_mpls.ttl = DEFAULT_MPLS_TTL; + hdr.report_mpls.label = mon_label; + hdr.report_mpls.label = mon_label; + } + table report { + key = { + fabric_md.int_report_md.bmd_type : exact @name("bmd_type") ; + fabric_md.int_report_md.mirror_type: exact @name("mirror_type") ; + fabric_md.int_report_md.report_type: exact @name("int_report_type") ; + } + actions = { + do_local_report_encap; + do_local_report_encap_mpls; + do_drop_report_encap; + do_drop_report_encap_mpls; + @defaultonly nop(); + } + default_action = nop; + const size = 6; + counters = report_counter; + } + @hidden action init_int_metadata(bit<3> report_type) { + fabric_md.bridged.int_bmd.mirror_session_id = V1MODEL_INT_MIRROR_SESSION; + fabric_md.int_report_md.setValid(); + fabric_v1model.int_mirror_type = (bit<3>)FabricMirrorType_t.INT_REPORT; + fabric_md.int_report_md.bmd_type = BridgedMdType_t.EGRESS_MIRROR; + fabric_md.int_report_md.mirror_type = FabricMirrorType_t.INT_REPORT; + fabric_md.int_report_md.report_type = fabric_md.bridged.int_bmd.report_type; + fabric_md.int_report_md.ig_port = fabric_md.bridged.base.ig_port; + fabric_md.int_report_md.eg_port = (PortId_t)standard_md.egress_port; + fabric_md.int_report_md.queue_id = egress_qid; + fabric_md.int_report_md.queue_occupancy = standard_md.deq_qdepth; + fabric_md.int_report_md.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]; + fabric_md.int_report_md.eg_tstamp = standard_md.egress_global_timestamp[31:0]; + fabric_md.int_report_md.ip_eth_type = fabric_md.bridged.base.ip_eth_type; + fabric_md.int_report_md.flow_hash = fabric_md.bridged.base.inner_hash; + fabric_md.int_report_md.report_type = report_type; + int_metadata_counter.count(); + } + @hidden table int_metadata { + key = { + fabric_md.bridged.int_bmd.report_type: exact @name("int_report_type") ; + fabric_v1model.drop_ctl : exact @name("drop_ctl") ; + fabric_md.int_md.queue_report : exact @name("queue_report") ; + } + actions = { + init_int_metadata; + @defaultonly nop(); + } + const default_action = nop(); + const entries = { + (INT_REPORT_TYPE_FLOW, 0, false) : init_int_metadata(INT_REPORT_TYPE_FLOW); + (INT_REPORT_TYPE_FLOW, 1, false) : init_int_metadata(INT_REPORT_TYPE_DROP); + } + counters = int_metadata_counter; + } + @hidden action adjust_ip_udp_len(bit<16> adjust_ip, bit<16> adjust_udp) { + hdr_v1model.ingress.ipv4.total_len = fabric_md.pkt_length + adjust_ip; + hdr_v1model.ingress.udp.len = fabric_md.pkt_length + adjust_udp; + } + @hidden table adjust_int_report_hdr_length { + key = { + fabric_md.bridged.int_bmd.wip_type: exact @name("is_int_wip") ; + } + actions = { + @defaultonly nop(); + adjust_ip_udp_len; + } + const default_action = nop(); + const entries = { + INT_IS_WIP : adjust_ip_udp_len(INT_WIP_ADJUST_IP_BYTES, INT_WIP_ADJUST_UDP_BYTES); + INT_IS_WIP_WITH_MPLS : adjust_ip_udp_len(INT_WIP_ADJUST_IP_MPLS_BYTES, INT_WIP_ADJUST_UDP_MPLS_BYTES); + } + } + apply { + fabric_md.int_md.hop_latency = standard_md.egress_global_timestamp[31:0] - fabric_md.bridged.base.ig_tstamp[31:0]; + fabric_md.int_md.timestamp = standard_md.egress_global_timestamp; + queue_latency_thresholds.apply(); + config.apply(); + hdr.report_fixed_header.hw_id = 4w0 ++ standard_md.egress_spec[8:7]; + if (fabric_md.int_report_md.isValid()) { + report.apply(); + } else { + if (int_metadata.apply().hit) { + clone_preserving_field_list(CloneType.E2E, (bit<32>)fabric_md.bridged.int_bmd.mirror_session_id, PRESERVE_INT_MD); + } + } + adjust_int_report_hdr_length.apply(); + fabric_v1model.egress = fabric_md; + hdr_v1model.egress = hdr; + } +} + +control IntTnaEgressParserEmulator(inout v1model_header_t hdr_v1model, inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md) { + egress_headers_t hdr = hdr_v1model.egress; + @hidden action set_common_int_headers() { + hdr.report_ethernet.setValid(); + hdr.report_eth_type.setValid(); + hdr.report_ipv4.setValid(); + hdr.report_ipv4.version = 4w4; + hdr.report_ipv4.ihl = 4w5; + hdr.report_ipv4.dscp = 0; + hdr.report_ipv4.ecn = 2w0; + hdr.report_ipv4.flags = 0; + hdr.report_ipv4.frag_offset = 0; + hdr.report_ipv4.ttl = DEFAULT_IPV4_TTL; + hdr.report_ipv4.protocol = PROTO_UDP; + hdr.report_udp.setValid(); + hdr.report_udp.sport = 0; + hdr.report_fixed_header.setValid(); + hdr.report_fixed_header.ver = 0; + hdr.report_fixed_header.nproto = NPROTO_TELEMETRY_SWITCH_LOCAL_HEADER; + hdr.report_fixed_header.rsvd = 0; + hdr.common_report_header.setValid(); + } + @hidden action set_common_int_drop_headers() { + set_common_int_headers(); + fabric_md.int_report_md.setValid(); + fabric_md.int_report_md.ip_eth_type = ETHERTYPE_IPV4; + fabric_md.int_report_md.report_type = INT_REPORT_TYPE_DROP; + fabric_md.int_report_md.mirror_type = FabricMirrorType_t.INVALID; + hdr.drop_report_header.setValid(); + } + @hidden action parse_int_ingress_drop() { + set_common_int_drop_headers(); + fabric_md.int_report_md.bmd_type = BridgedMdType_t.INT_INGRESS_DROP; + fabric_md.int_report_md.encap_presence = fabric_md.bridged.base.encap_presence; + fabric_md.int_report_md.flow_hash = fabric_md.bridged.base.inner_hash; + hdr.drop_report_header.drop_reason = fabric_md.bridged.int_bmd.drop_reason; + hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]; + hdr.common_report_header.ig_port = fabric_md.bridged.base.ig_port; + hdr.common_report_header.eg_port = 0; + hdr.common_report_header.queue_id = 0; + } + @hidden action parse_int_report_mirror() { + set_common_int_headers(); + fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type; + fabric_md.bridged.base.vlan_id = DEFAULT_VLAN_ID; + fabric_md.bridged.base.mpls_label = 0; + fabric_md.bridged.upf.skip_upf = true; + hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp; + hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port; + hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port; + hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id; + hdr.local_report_header.setValid(); + hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy; + hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp; + } + apply { + fabric_md.is_int_recirc = true; + hdr_v1model.ingress.vlan_tag.setInvalid(); + if (hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()) { + hdr_v1model.ingress.ipv4.setInvalid(); + hdr_v1model.ingress.tcp.setInvalid(); + hdr_v1model.ingress.udp.setInvalid(); + hdr_v1model.ingress.icmp.setInvalid(); + hdr_v1model.ingress.vxlan.setInvalid(); + hdr_v1model.ingress.inner_ethernet.setInvalid(); + hdr_v1model.ingress.inner_eth_type.setInvalid(); + hdr_v1model.ingress.gtpu.setInvalid(); + hdr_v1model.ingress.gtpu_options.setInvalid(); + hdr_v1model.ingress.gtpu_ext_psc.setInvalid(); + } + if ((bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP) { + parse_int_ingress_drop(); + recirculate_preserving_field_list(NO_PRESERVATION); + } else { + parse_int_report_mirror(); + recirculate_preserving_field_list(PRESERVE_INT_MD); + } + hdr_v1model.egress = hdr; + } +} + +control FabricIngress(inout v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md, inout standard_metadata_t standard_md) { + LookupMdInit() lkp_md_init; + StatsIngress() stats; + PacketIoIngress() pkt_io; + Filtering() filtering; + Forwarding() forwarding; + PreNext() pre_next; + Acl() acl; + Next() next; + Hasher() hasher; + IngressSliceTcClassifier() slice_tc_classifier; + IngressQos() qos; + UpfIngress() upf; + IntWatchlist() int_watchlist; + IntIngress() int_ingress; + apply { + mark_to_drop(standard_md); + if (standard_md.parser_error == error.PacketRejectedByParser) { + exit; + } + if (standard_md.instance_type == 4) { + fabric_md.ingress.bridged.base.ig_port = FAKE_V1MODEL_RECIRC_PORT; + } + lkp_md_init.apply(hdr.ingress, fabric_md.ingress.lkp); + pkt_io.apply(hdr.ingress, fabric_md.ingress, fabric_md.skip_egress, standard_md, fabric_md.recirc_preserved_egress_port); + int_watchlist.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.recirc_preserved_report_type); + stats.apply(fabric_md.ingress.lkp, fabric_md.ingress.bridged.base.ig_port, fabric_md.ingress.bridged.base.stats_flow_id); + slice_tc_classifier.apply(hdr.ingress, standard_md, fabric_md.ingress); + filtering.apply(hdr.ingress, fabric_md.ingress, standard_md); + if (!fabric_md.ingress.skip_forwarding) { + upf.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.do_upf_uplink_recirc, fabric_md.drop_ctl); + } + if (!fabric_md.ingress.skip_forwarding) { + forwarding.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.drop_ctl); + } + hasher.apply(hdr.ingress, fabric_md.ingress); + if (!fabric_md.ingress.skip_next) { + pre_next.apply(hdr.ingress, fabric_md.ingress); + } + acl.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.recirc_preserved_egress_port, fabric_md.drop_ctl); + if (!fabric_md.ingress.skip_next) { + next.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.recirc_preserved_egress_port); + } + qos.apply(fabric_md.ingress, standard_md, fabric_md.drop_ctl); + int_ingress.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.drop_ctl); + fabric_md.egress.bridged = fabric_md.ingress.bridged; + if (fabric_md.drop_ctl == 1) { + mark_to_drop(standard_md); + } + } +} + +control FabricEgress(inout v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md, inout standard_metadata_t standard_md) { + StatsEgress() stats; + PacketIoEgress() pkt_io_egress; + EgressNextControl() egress_next; + EgressDscpRewriter() dscp_rewriter; + UpfEgress() upf; + IntTnaEgressParserEmulator() parser_emulator; + IntEgress() int_egress; + apply { + fabric_md.egress.cpu_port = 0; + if (fabric_md.skip_egress) { + exit; + } + if (standard_md.instance_type == 2) { + fabric_md.egress.bridged.int_bmd.drop_reason = fabric_md.recirc_preserved_drop_reason; + fabric_md.egress.bridged.int_bmd.report_type = fabric_md.recirc_preserved_report_type; + parser_emulator.apply(hdr, fabric_md.egress, standard_md); + } + if ((bit<8>)fabric_md.egress.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP) { + parser_emulator.apply(hdr, fabric_md.egress, standard_md); + } + pkt_io_egress.apply(hdr.ingress, fabric_md.egress, standard_md, fabric_md.recirc_preserved_ingress_port); + stats.apply(fabric_md.egress.bridged.base.stats_flow_id, standard_md.egress_port, fabric_md.egress.bridged.bmd_type); + egress_next.apply(hdr.ingress, fabric_md.egress, standard_md, fabric_md.recirc_preserved_drop_reason, fabric_md.drop_ctl); + upf.apply(hdr.ingress, fabric_md.egress); + int_egress.apply(hdr, fabric_md, standard_md); + dscp_rewriter.apply(fabric_md.egress, standard_md, hdr.ingress); + if (fabric_md.do_upf_uplink_recirc) { + recirculate_preserving_field_list(NO_PRESERVATION); + } + if (fabric_md.drop_ctl == 1) { + mark_to_drop(standard_md); + } + } +} + +V1Switch(FabricParser(), FabricVerifyChecksum(), FabricIngress(), FabricEgress(), FabricComputeChecksum(), FabricDeparser()) main; + diff --git a/src/tests/p4-sd-fabric-svc-connectivity/p4src/bmv2.json b/src/tests/p4-sd-fabric-svc-connectivity/p4src/bmv2.json new file mode 100644 index 0000000000000000000000000000000000000000..fe66f93e4c95c397fca7f6d5251802c7a8858a0e --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/p4src/bmv2.json @@ -0,0 +1,28235 @@ +{ + "header_types" : [ + { + "name" : "scalars_0", + "id" : 0, + "fields" : [ + ["tmp_2", 16, false], + ["tmp_4", 1, false], + ["tmp_6", 16, false], + ["tmp_12", 3, false], + ["tmp_13", 8, false], + ["gtpu_ext_len_0", 8, false], + ["tmp_3", 16, false], + ["tmp_5", 16, false], + ["tmp_7", 4, false], + ["tmp_8", 112, false], + ["tmp_9", 112, false], + ["tmp_10", 112, false], + ["tmp_11", 64, false], + ["tmp_14", 32, false], + ["tmp_15", 32, false], + ["tmp_16", 32, false], + ["tmp_17", 32, false], + ["tmp_18", 8, false], + ["tmp_19", 32, false], + ["tmp_20", 32, false], + ["tmp_21", 32, false], + ["tmp_22", 32, false], + ["tmp_23", 48, false], + ["tmp_24", 48, false], + ["tmp_25", 16, false], + ["tmp_26", 32, false], + ["tmp_27", 32, false], + ["tmp_28", 8, false], + ["tmp_29", 16, false], + ["tmp_30", 16, false], + ["tmp_31", 32, false], + ["qos_packet_color", 2, false], + ["upf_is_uplink", 1, false], + ["upf_term_hit", 1, false], + ["upf_sess_hit", 1, false], + ["upf_app_ipv4_addr", 32, false], + ["upf_app_l4_port", 16, false], + ["upf_app_ip_proto", 8, false], + ["upf_internal_app_id", 8, false], + ["upf_ue_session_id", 32, false], + ["upf_session_meter_idx_internal", 15, false], + ["upf_app_meter_idx_internal", 15, false], + ["tmp_32", 32, false], + ["tmp_33", 32, false], + ["tmp_34", 32, false], + ["tmp_35", 32, false], + ["tmp_36", 32, false], + ["tmp_37", 32, false], + ["tmp_38", 32, false], + ["tmp_39", 32, false], + ["tmp_40", 32, false], + ["tmp_41", 32, false], + ["dscp_rewriter_tmp_dscp", 6, false], + ["int_egress_fabric_md_pkt_length", 16, false], + ["int_egress_egress_qid", 5, false], + ["int_egress_reg", 32, false], + ["key_0", 16, false], + ["key_1", 16, false], + ["userMetadata._skip_egress0", 1, false], + ["userMetadata._do_upf_uplink_recirc1", 1, false], + ["userMetadata._drop_ctl2", 1, false], + ["userMetadata._int_mirror_type3", 3, false], + ["userMetadata._ingress_ecmp_hash5", 32, false], + ["userMetadata._ingress_lkp_eth_dst6", 48, false], + ["userMetadata._ingress_lkp_eth_src7", 48, false], + ["userMetadata._ingress_lkp_eth_type8", 16, false], + ["userMetadata._ingress_lkp_vlan_id9", 12, false], + ["userMetadata._ingress_lkp_is_ipv410", 1, false], + ["userMetadata._ingress_lkp_ipv4_src11", 32, false], + ["userMetadata._ingress_lkp_ipv4_dst12", 32, false], + ["userMetadata._ingress_lkp_ip_proto13", 8, false], + ["userMetadata._ingress_lkp_l4_sport14", 16, false], + ["userMetadata._ingress_lkp_l4_dport15", 16, false], + ["userMetadata._ingress_lkp_icmp_type16", 8, false], + ["userMetadata._ingress_lkp_icmp_code17", 8, false], + ["userMetadata._ingress_routing_ipv4_dst18", 32, false], + ["userMetadata._ingress_skip_forwarding19", 1, false], + ["userMetadata._ingress_skip_next20", 1, false], + ["userMetadata._ingress_next_id21", 32, false], + ["userMetadata._ingress_egress_port_set22", 1, false], + ["userMetadata._ingress_punt_to_cpu23", 1, false], + ["userMetadata._ingress_ipv4_checksum_err24", 1, false], + ["userMetadata._ingress_inner_ipv4_checksum_err25", 1, false], + ["userMetadata._ingress_slice_id26", 4, false], + ["userMetadata._ingress_tc27", 2, false], + ["userMetadata._ingress_tc_unknown28", 1, false], + ["userMetadata._ingress_is_upf_hit29", 1, false], + ["userMetadata._ingress_upf_slice_id30", 4, false], + ["userMetadata._ingress_upf_tc31", 2, false], + ["userMetadata._ingress_upf_meter_color32", 2, false], + ["userMetadata._ingress_ig_port_type33", 2, false], + ["userMetadata._ingress_mirror_mirror_session_id34", 10, false], + ["userMetadata._ingress_mirror_bmd_type35", 8, false], + ["userMetadata._egress_cpu_port37", 9, false], + ["userMetadata._egress_inner_ipv4_checksum_err38", 1, false], + ["userMetadata._egress_int_md_hop_latency40", 32, false], + ["userMetadata._egress_int_md_timestamp41", 48, false], + ["userMetadata._egress_int_md_vlan_stripped42", 1, false], + ["userMetadata._egress_int_md_queue_report43", 1, false], + ["userMetadata._egress_int_ipv4_len44", 16, false], + ["userMetadata._egress_is_int_recirc45", 1, false], + ["userMetadata._egress_pkt_length46", 16, false], + ["userMetadata._recirc_preserved_report_type47", 3, false], + ["userMetadata._recirc_preserved_egress_port48", 9, false], + ["userMetadata._recirc_preserved_drop_reason49", 8, false], + ["userMetadata._recirc_preserved_ingress_port50", 9, false], + ["_padding_1", 3, false] + ] + }, + { + "name" : "fake_ethernet_t", + "id" : 1, + "fields" : [ + ["_pad0", 48, false], + ["_pad1", 48, false], + ["ether_type", 16, false] + ] + }, + { + "name" : "packet_out_header_t", + "id" : 2, + "fields" : [ + ["pad0", 7, false], + ["egress_port", 9, false], + ["pad1", 3, false], + ["queue_id", 5, false], + ["pad2", 5, false], + ["cpu_loopback_mode", 2, false], + ["do_forwarding", 1, false], + ["pad3", 16, false], + ["pad4", 48, false], + ["ether_type", 16, false] + ] + }, + { + "name" : "gtpu_t", + "id" : 3, + "fields" : [ + ["version", 3, false], + ["pt", 1, false], + ["spare", 1, false], + ["ex_flag", 1, false], + ["seq_flag", 1, false], + ["npdu_flag", 1, false], + ["msgtype", 8, false], + ["msglen", 16, false], + ["teid", 32, false] + ] + }, + { + "name" : "ethernet_t", + "id" : 4, + "fields" : [ + ["dst_addr", 48, false], + ["src_addr", 48, false] + ] + }, + { + "name" : "eth_type_t", + "id" : 5, + "fields" : [ + ["value", 16, false] + ] + }, + { + "name" : "ipv4_t", + "id" : 6, + "fields" : [ + ["version", 4, false], + ["ihl", 4, false], + ["dscp", 6, false], + ["ecn", 2, false], + ["total_len", 16, false], + ["identification", 16, false], + ["flags", 3, false], + ["frag_offset", 13, false], + ["ttl", 8, false], + ["protocol", 8, false], + ["hdr_checksum", 16, false], + ["src_addr", 32, false], + ["dst_addr", 32, false] + ] + }, + { + "name" : "udp_t", + "id" : 7, + "fields" : [ + ["sport", 16, false], + ["dport", 16, false], + ["len", 16, false], + ["checksum", 16, false] + ] + }, + { + "name" : "report_fixed_header_t", + "id" : 8, + "fields" : [ + ["ver", 4, false], + ["nproto", 4, false], + ["dqf", 3, false], + ["rsvd", 15, false], + ["hw_id", 6, false], + ["seq_no", 32, false], + ["ig_tstamp", 32, false] + ] + }, + { + "name" : "common_report_header_t", + "id" : 9, + "fields" : [ + ["switch_id", 32, false], + ["pad1", 7, false], + ["ig_port", 9, false], + ["pad2", 7, false], + ["eg_port", 9, false], + ["pad3", 3, false], + ["queue_id", 5, false] + ] + }, + { + "name" : "local_report_header_t", + "id" : 10, + "fields" : [ + ["pad1", 5, false], + ["queue_occupancy", 19, false], + ["eg_tstamp", 32, false] + ] + }, + { + "name" : "drop_report_header_t", + "id" : 11, + "fields" : [ + ["drop_reason", 8, false], + ["pad", 16, false] + ] + }, + { + "name" : "mpls_t", + "id" : 12, + "fields" : [ + ["label", 20, false], + ["tc", 3, false], + ["bos", 1, false], + ["ttl", 8, false] + ] + }, + { + "name" : "bridged_metadata_t", + "id" : 13, + "fields" : [ + ["_bmd_type0", 8, false], + ["_base_inner_hash1", 32, false], + ["_base_mpls_label2", 20, false], + ["_base_ig_port3", 9, false], + ["_base_is_multicast4", 1, 0], + ["_base_fwd_type5", 3, false], + ["_base_vlan_id6", 12, false], + ["_base_encap_presence7", 2, false], + ["_base_mpls_ttl8", 8, false], + ["_base_ig_tstamp9", 48, false], + ["_base_ip_eth_type10", 16, false], + ["_base_stats_flow_id11", 10, false], + ["_base_slice_tc12", 6, false], + ["_upf_tun_peer_id13", 8, false], + ["_upf_upf_ctr_id14", 12, false], + ["_upf_qfi15", 6, false], + ["_upf_needs_gtpu_encap16", 1, 0], + ["_upf_skip_upf17", 1, 0], + ["_upf_skip_egress_upf_ctr18", 1, 0], + ["_upf_teid19", 32, false], + ["_upf__pad20", 4, false], + ["_int_bmd_report_type21", 3, false], + ["_int_bmd_mirror_session_id22", 10, false], + ["_int_bmd_drop_reason23", 8, false], + ["_int_bmd_queue_id24", 5, false], + ["_int_bmd_egress_port25", 9, false], + ["_int_bmd_wip_type26", 8, false], + ["__pad027", 1, false], + ["__pad128", 7, false], + ["__pad229", 5, false] + ] + }, + { + "name" : "int_report_metadata_t", + "id" : 14, + "fields" : [ + ["bmd_type", 8, false], + ["_pad0", 5, false], + ["mirror_type", 3, false], + ["_pad1", 7, false], + ["ig_port", 9, false], + ["_pad2", 7, false], + ["eg_port", 9, false], + ["_pad3", 3, false], + ["queue_id", 5, false], + ["_pad4", 5, false], + ["queue_occupancy", 19, false], + ["ig_tstamp", 32, false], + ["eg_tstamp", 32, false], + ["drop_reason", 8, false], + ["ip_eth_type", 16, false], + ["_pad5", 6, false], + ["encap_presence", 2, false], + ["report_type", 3, false], + ["_pad6", 5, false], + ["flow_hash", 32, false] + ] + }, + { + "name" : "int_metadata_t", + "id" : 15, + "fields" : [ + ["hop_latency", 32, false], + ["timestamp", 48, false], + ["vlan_stripped", 1, 0], + ["queue_report", 1, 0], + ["_padding", 6, false] + ] + }, + { + "name" : "standard_metadata", + "id" : 16, + "fields" : [ + ["ingress_port", 9, false], + ["egress_spec", 9, false], + ["egress_port", 9, false], + ["instance_type", 32, false], + ["packet_length", 32, false], + ["enq_timestamp", 32, false], + ["enq_qdepth", 19, false], + ["deq_timedelta", 32, false], + ["deq_qdepth", 19, false], + ["ingress_global_timestamp", 48, false], + ["egress_global_timestamp", 48, false], + ["mcast_grp", 16, false], + ["egress_rid", 16, false], + ["checksum_error", 1, false], + ["parser_error", 32, false], + ["priority", 3, false], + ["_padding_0", 3, false] + ] + }, + { + "name" : "packet_in_header_t", + "id" : 17, + "fields" : [ + ["ingress_port", 9, false], + ["_pad0", 7, false] + ] + }, + { + "name" : "vlan_tag_t", + "id" : 18, + "fields" : [ + ["eth_type", 16, false], + ["pri", 3, false], + ["cfi", 1, false], + ["vlan_id", 12, false] + ] + }, + { + "name" : "ipv6_t", + "id" : 19, + "fields" : [ + ["version", 4, false], + ["traffic_class", 8, false], + ["flow_label", 20, false], + ["payload_len", 16, false], + ["next_hdr", 8, false], + ["hop_limit", 8, false], + ["src_addr", 128, false], + ["dst_addr", 128, false] + ] + }, + { + "name" : "tcp_t", + "id" : 20, + "fields" : [ + ["sport", 16, false], + ["dport", 16, false] + ] + }, + { + "name" : "icmp_t", + "id" : 21, + "fields" : [ + ["icmp_type", 8, false], + ["icmp_code", 8, false] + ] + }, + { + "name" : "gtpu_options_t", + "id" : 22, + "fields" : [ + ["seq_num", 16, false], + ["n_pdu_num", 8, false], + ["next_ext", 8, false] + ] + }, + { + "name" : "gtpu_ext_psc_t", + "id" : 23, + "fields" : [ + ["len", 8, false], + ["type", 4, false], + ["spare0", 4, false], + ["ppp", 1, false], + ["rqi", 1, false], + ["qfi", 6, false], + ["next_ext", 8, false] + ] + }, + { + "name" : "vxlan_t", + "id" : 24, + "fields" : [ + ["flags", 8, false], + ["reserved", 24, false], + ["vni", 24, false], + ["reserved_2", 8, false] + ] + } + ], + "headers" : [ + { + "name" : "tmp", + "id" : 0, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "tmp_0", + "id" : 1, + "header_type" : "packet_out_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "tmp_1", + "id" : 2, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "gtpu_0", + "id" : 3, + "header_type" : "gtpu_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_ethernet", + "id" : 4, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_eth_type", + "id" : 5, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_ipv4", + "id" : 6, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_udp", + "id" : 7, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_fixed_header", + "id" : 8, + "header_type" : "report_fixed_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_common_report_header", + "id" : 9, + "header_type" : "common_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_local_report_header", + "id" : 10, + "header_type" : "local_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_drop_report_header", + "id" : 11, + "header_type" : "drop_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_eth_type", + "id" : 12, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_mpls", + "id" : 13, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_ipv4", + "id" : 14, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_udp", + "id" : 15, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_fixed_header", + "id" : 16, + "header_type" : "report_fixed_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_common_report_header", + "id" : 17, + "header_type" : "common_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_local_report_header", + "id" : 18, + "header_type" : "local_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_drop_report_header", + "id" : 19, + "header_type" : "drop_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_eth_type", + "id" : 20, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_fabric_md_bridged", + "id" : 21, + "header_type" : "bridged_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_fabric_md_int_report_md", + "id" : 22, + "header_type" : "int_report_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_fabric_md_int_md", + "id" : 23, + "header_type" : "int_metadata_t", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "scalars", + "id" : 24, + "header_type" : "scalars_0", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "standard_metadata", + "id" : 25, + "header_type" : "standard_metadata", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "_ingress_packet_out0", + "id" : 26, + "header_type" : "packet_out_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_packet_in1", + "id" : 27, + "header_type" : "packet_in_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_fake_ethernet2", + "id" : 28, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_ethernet3", + "id" : 29, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_vlan_tag4", + "id" : 30, + "header_type" : "vlan_tag_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_eth_type5", + "id" : 31, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_mpls6", + "id" : 32, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_ipv47", + "id" : 33, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_ipv68", + "id" : 34, + "header_type" : "ipv6_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_tcp9", + "id" : 35, + "header_type" : "tcp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_udp10", + "id" : 36, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_icmp11", + "id" : 37, + "header_type" : "icmp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_gtpu12", + "id" : 38, + "header_type" : "gtpu_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_gtpu_options13", + "id" : 39, + "header_type" : "gtpu_options_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_gtpu_ext_psc14", + "id" : 40, + "header_type" : "gtpu_ext_psc_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_vxlan15", + "id" : 41, + "header_type" : "vxlan_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_ethernet16", + "id" : 42, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_eth_type17", + "id" : 43, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_ipv418", + "id" : 44, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_tcp19", + "id" : 45, + "header_type" : "tcp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_udp20", + "id" : 46, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_icmp21", + "id" : 47, + "header_type" : "icmp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_packet_in22", + "id" : 48, + "header_type" : "packet_in_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_fake_ethernet23", + "id" : 49, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_ethernet24", + "id" : 50, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_eth_type25", + "id" : 51, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_mpls26", + "id" : 52, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_ipv427", + "id" : 53, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_udp28", + "id" : 54, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_fixed_header29", + "id" : 55, + "header_type" : "report_fixed_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_common_report_header30", + "id" : 56, + "header_type" : "common_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_local_report_header31", + "id" : 57, + "header_type" : "local_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_drop_report_header32", + "id" : 58, + "header_type" : "drop_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_ethernet33", + "id" : 59, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_vlan_tag34", + "id" : 60, + "header_type" : "vlan_tag_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_eth_type35", + "id" : 61, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_mpls36", + "id" : 62, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_ipv437", + "id" : 63, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_udp38", + "id" : 64, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_gtpu39", + "id" : 65, + "header_type" : "gtpu_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_gtpu_options40", + "id" : 66, + "header_type" : "gtpu_options_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_gtpu_ext_psc41", + "id" : 67, + "header_type" : "gtpu_ext_psc_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_ipv442", + "id" : 68, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_ipv643", + "id" : 69, + "header_type" : "ipv6_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_udp44", + "id" : 70, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_bridged4", + "id" : 71, + "header_type" : "bridged_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_bridged36", + "id" : 72, + "header_type" : "bridged_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_int_report_md39", + "id" : 73, + "header_type" : "int_report_metadata_t", + "metadata" : false, + "pi_omit" : true + } + ], + "header_stacks" : [], + "header_union_types" : [], + "header_unions" : [], + "header_union_stacks" : [], + "field_lists" : [ + { + "id" : 1, + "name" : "field_list241", + "elements" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + } + ] + }, + { + "id" : 2, + "name" : "field_list231", + "elements" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_ingress_port50"] + } + ] + }, + { + "id" : 3, + "name" : "empty", + "elements" : [] + }, + { + "id" : 4, + "name" : "empty_0", + "elements" : [] + }, + { + "id" : 5, + "name" : "empty_1", + "elements" : [] + } + ], + "errors" : [ + ["NoError", 1], + ["PacketTooShort", 2], + ["NoMatch", 3], + ["StackOutOfBounds", 4], + ["HeaderTooShort", 5], + ["ParserTimeout", 6], + ["ParserInvalidArgument", 7], + ["PacketRejectedByParser", 8] + ], + "enums" : [], + "parsers" : [ + { + "name" : "parser", + "id" : 0, + "init_state" : "start", + "parse_states" : [ + { + "name" : "start", + "id" : 0, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_pkt_length46"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "packet_length"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x0000ffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_bridged4" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_bmd_type0"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ig_port3"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "ingress_port"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_ingress_port50"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "ingress_port"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ig_tstamp9"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "ingress_global_timestamp"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_punt_to_cpu23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_wip_type26"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + { + "type" : "lookahead", + "value" : [0, 112] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "tmp" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp", "_pad0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x40" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp", "_pad1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp", "ether_type"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_2"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0xbf02", + "mask" : null, + "next_state" : "parse_fake_ethernet" + }, + { + "type" : "hexstr", + "value" : "0xbf03", + "mask" : null, + "next_state" : "parse_fake_ethernet_and_accept" + }, + { + "type" : "hexstr", + "value" : "0xbf01", + "mask" : null, + "next_state" : "check_packet_out" + }, + { + "type" : "hexstr", + "value" : "0xbf04", + "mask" : null, + "next_state" : "parse_int_wip_ipv4" + }, + { + "type" : "hexstr", + "value" : "0xbf05", + "mask" : null, + "next_state" : "parse_int_wip_mpls" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ethernet" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_2"] + } + ] + }, + { + "name" : "check_packet_out", + "id" : 1, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + { + "type" : "lookahead", + "value" : [0, 112] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "tmp_0" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x69" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x7f" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "egress_port"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x60" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x5d" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "queue_id"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x58" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x1f" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad2"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x53" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x1f" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "cpu_loopback_mode"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x51" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "do_forwarding"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x50" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad3"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x40" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "ether_type"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x50" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x00", + "mask" : null, + "next_state" : "parse_packet_out_and_accept" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "strip_packet_out" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_4"] + } + ] + }, + { + "name" : "parse_int_wip_ipv4", + "id" : 2, + "parser_ops" : [ + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ethernet3" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_eth_type5" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_wip_type26"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_ttl8"] + }, + { + "type" : "hexstr", + "value" : "0x41" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x00000070" + } + ], + "op" : "advance" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ipv4" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_int_wip_mpls", + "id" : 3, + "parser_ops" : [ + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ethernet3" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_eth_type5" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "hexstr", + "value" : "0x8847" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_wip_type26"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x00000070" + } + ], + "op" : "advance" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_mpls" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_packet_out_and_accept", + "id" : 4, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_packet_out0" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "strip_packet_out", + "id" : 5, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x00000070" + } + ], + "op" : "advance" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ethernet" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_fake_ethernet", + "id" : 6, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_fake_ethernet2" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + { + "type" : "lookahead", + "value" : [0, 112] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "tmp_1" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_1", "_pad0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x40" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_1", "_pad1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_1", "ether_type"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_6"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0xbf04", + "mask" : null, + "next_state" : "parse_int_wip_ipv4" + }, + { + "type" : "hexstr", + "value" : "0xbf05", + "mask" : null, + "next_state" : "parse_int_wip_mpls" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ethernet" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_6"] + } + ] + }, + { + "name" : "parse_fake_ethernet_and_accept", + "id" : 7, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_fake_ethernet2" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_ethernet", + "id" : 8, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_ethernet3" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_3"] + }, + { + "type" : "lookahead", + "value" : [0, 16] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x88a8", + "mask" : null, + "next_state" : "parse_vlan_tag" + }, + { + "type" : "hexstr", + "value" : "0x8100", + "mask" : "0xefff", + "next_state" : "parse_vlan_tag" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_untagged" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_3"] + } + ] + }, + { + "name" : "parse_vlan_tag", + "id" : 9, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_vlan_tag4" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "vlan_id"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_5"] + }, + { + "type" : "lookahead", + "value" : [0, 16] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_eth_type" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_5"] + } + ] + }, + { + "name" : "parse_untagged", + "id" : 10, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_eth_type" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_eth_type", + "id" : 11, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_eth_type5" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x8847", + "mask" : null, + "next_state" : "parse_mpls" + }, + { + "type" : "hexstr", + "value" : "0x0800", + "mask" : null, + "next_state" : "parse_non_mpls" + }, + { + "type" : "hexstr", + "value" : "0x86dd", + "mask" : null, + "next_state" : "parse_non_mpls" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ] + }, + { + "name" : "parse_mpls", + "id" : 12, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_mpls6" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "field", + "value" : ["_ingress_mpls6", "label"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_ttl8"] + }, + { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_7"] + }, + { + "type" : "lookahead", + "value" : [0, 4] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x04", + "mask" : null, + "next_state" : "parse_ipv4" + }, + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_ipv6" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "reject_packet" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_7"] + } + ] + }, + { + "name" : "reject_packet", + "id" : 13, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "bool", + "value" : false + }, + { + "type" : "hexstr", + "value" : "0x8" + } + ], + "op" : "verify" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_non_mpls", + "id" : 14, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_ttl8"] + }, + { + "type" : "hexstr", + "value" : "0x41" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x0800", + "mask" : null, + "next_state" : "parse_ipv4" + }, + { + "type" : "hexstr", + "value" : "0x86dd", + "mask" : null, + "next_state" : "parse_ipv6" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ] + }, + { + "name" : "parse_ipv4", + "id" : 15, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_ipv47" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_tcp" + }, + { + "type" : "hexstr", + "value" : "0x11", + "mask" : null, + "next_state" : "parse_udp" + }, + { + "type" : "hexstr", + "value" : "0x01", + "mask" : null, + "next_state" : "parse_icmp" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + } + ] + }, + { + "name" : "parse_ipv6", + "id" : 16, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_ipv68" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x86dd" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_tcp" + }, + { + "type" : "hexstr", + "value" : "0x11", + "mask" : null, + "next_state" : "parse_udp" + }, + { + "type" : "hexstr", + "value" : "0x3a", + "mask" : null, + "next_state" : "parse_icmp" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_ipv68", "next_hdr"] + } + ] + }, + { + "name" : "parse_icmp", + "id" : 17, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_icmp11" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_tcp", + "id" : 18, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_tcp9" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_udp", + "id" : 19, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_udp10" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + { + "type" : "lookahead", + "value" : [0, 64] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "gtpu_0" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "version"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3d" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "pt"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3c" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "spare"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3b" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "ex_flag"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3a" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "seq_flag"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x39" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "npdu_flag"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x38" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "msgtype"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x30" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "msglen"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x20" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "teid"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3d" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_13"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x30" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x086801ff", + "mask" : null, + "next_state" : "parse_gtpu" + }, + { + "type" : "hexstr", + "value" : "0x12b50000", + "mask" : "0xffff0000", + "next_state" : "parse_vxlan" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_12"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_13"] + } + ] + }, + { + "name" : "parse_gtpu", + "id" : 20, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_gtpu12" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x000000", + "mask" : null, + "next_state" : "set_gtpu_only" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_gtpu_options" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "ex_flag"] + }, + { + "type" : "field", + "value" : ["_ingress_gtpu12", "seq_flag"] + }, + { + "type" : "field", + "value" : ["_ingress_gtpu12", "npdu_flag"] + } + ] + }, + { + "name" : "set_gtpu_only", + "id" : 21, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_inner_ipv4" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_gtpu_options", + "id" : 22, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_gtpu_options13" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "gtpu_ext_len_0"] + }, + { + "type" : "lookahead", + "value" : [0, 8] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x8501", + "mask" : null, + "next_state" : "parse_gtpu_ext_psc" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "next_ext"] + }, + { + "type" : "field", + "value" : ["scalars", "gtpu_ext_len_0"] + } + ] + }, + { + "name" : "parse_gtpu_ext_psc", + "id" : 23, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x00", + "mask" : null, + "next_state" : "parse_inner_ipv4" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "next_ext"] + } + ] + }, + { + "name" : "parse_vxlan", + "id" : 24, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_vxlan15" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x03" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_ethernet16" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_eth_type17" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x0800", + "mask" : null, + "next_state" : "parse_inner_ipv4" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_inner_eth_type17", "value"] + } + ] + }, + { + "name" : "parse_inner_ipv4", + "id" : 25, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_ipv418" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_inner_tcp" + }, + { + "type" : "hexstr", + "value" : "0x11", + "mask" : null, + "next_state" : "parse_inner_udp" + }, + { + "type" : "hexstr", + "value" : "0x01", + "mask" : null, + "next_state" : "parse_inner_icmp" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + } + ] + }, + { + "name" : "parse_inner_tcp", + "id" : 26, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_tcp19" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_inner_udp", + "id" : 27, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_udp20" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_inner_icmp", + "id" : 28, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_icmp21" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + } + ] + } + ], + "parse_vsets" : [], + "deparsers" : [ + { + "name" : "deparser", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/parser.p4", + "line" : 321, + "column" : 8, + "source_fragment" : "FabricDeparser" + }, + "order" : ["_ingress_fake_ethernet2", "_ingress_packet_in1", "_egress_report_ethernet24", "_egress_report_eth_type25", "_egress_report_mpls26", "_egress_report_ipv427", "_egress_report_udp28", "_egress_report_fixed_header29", "_egress_common_report_header30", "_egress_local_report_header31", "_egress_drop_report_header32", "_ingress_ethernet3", "_ingress_vlan_tag4", "_ingress_eth_type5", "_ingress_mpls6", "_ingress_ipv47", "_ingress_ipv68", "_ingress_tcp9", "_ingress_udp10", "_ingress_icmp11", "_ingress_gtpu12", "_ingress_gtpu_options13", "_ingress_gtpu_ext_psc14", "_ingress_vxlan15", "_ingress_inner_ethernet16", "_ingress_inner_eth_type17", "_ingress_inner_ipv418", "_ingress_inner_tcp19", "_ingress_inner_udp20", "_ingress_inner_icmp21"], + "primitives" : [] + } + ], + "meter_arrays" : [ + { + "name" : "FabricIngress.qos.slice_tc_meter", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 104, + "column" : 41, + "source_fragment" : "slice_tc_meter" + }, + "is_direct" : false, + "size" : 64, + "rate_count" : 2, + "type" : "bytes" + }, + { + "name" : "FabricIngress.upf.session_meter", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 22, + "column" : 34, + "source_fragment" : "session_meter" + }, + "is_direct" : false, + "size" : 20000, + "rate_count" : 2, + "type" : "bytes" + }, + { + "name" : "FabricIngress.upf.app_meter", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 23, + "column" : 34, + "source_fragment" : "app_meter" + }, + "is_direct" : false, + "size" : 20000, + "rate_count" : 2, + "type" : "bytes" + } + ], + "counter_arrays" : [ + { + "name" : "FabricIngress.stats.flow_counter", + "id" : 0, + "is_direct" : true, + "binding" : "FabricIngress.stats.flows", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 14, + "column" : 50, + "source_fragment" : "flow_counter" + } + }, + { + "name" : "FabricIngress.filtering.ingress_port_vlan_counter", + "id" : 1, + "is_direct" : true, + "binding" : "FabricIngress.filtering.ingress_port_vlan", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 17, + "column" : 50, + "source_fragment" : "ingress_port_vlan_counter" + } + }, + { + "name" : "FabricIngress.filtering.fwd_classifier_counter", + "id" : 2, + "is_direct" : true, + "binding" : "FabricIngress.filtering.fwd_classifier", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 71, + "column" : 50, + "source_fragment" : "fwd_classifier_counter" + } + }, + { + "name" : "FabricIngress.filtering.fwd_type_counter", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 78, + "column" : 46, + "source_fragment" : "fwd_type_counter" + }, + "size" : 8, + "is_direct" : false + }, + { + "name" : "FabricIngress.forwarding.bridging_counter", + "id" : 4, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.bridging", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 29, + "column" : 50, + "source_fragment" : "bridging_counter" + } + }, + { + "name" : "FabricIngress.forwarding.mpls_counter", + "id" : 5, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.mpls", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 64, + "column" : 50, + "source_fragment" : "mpls_counter" + } + }, + { + "name" : "FabricIngress.forwarding.routing_v4_counter", + "id" : 6, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.routing_v4", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 98, + "column" : 50, + "source_fragment" : "routing_v4_counter" + } + }, + { + "name" : "FabricIngress.forwarding.routing_v6_counter", + "id" : 7, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.routing_v6", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 142, + "column" : 50, + "source_fragment" : "routing_v6_counter" + } + }, + { + "name" : "FabricIngress.pre_next.next_mpls_counter", + "id" : 8, + "is_direct" : true, + "binding" : "FabricIngress.pre_next.next_mpls", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 15, + "column" : 50, + "source_fragment" : "next_mpls_counter" + } + }, + { + "name" : "FabricIngress.pre_next.next_vlan_counter", + "id" : 9, + "is_direct" : true, + "binding" : "FabricIngress.pre_next.next_vlan", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 39, + "column" : 50, + "source_fragment" : "next_vlan_counter" + } + }, + { + "name" : "FabricIngress.acl.acl_counter", + "id" : 10, + "is_direct" : true, + "binding" : "FabricIngress.acl.acl", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 19, + "column" : 50, + "source_fragment" : "acl_counter" + } + }, + { + "name" : "FabricIngress.next.hashed_counter", + "id" : 11, + "is_direct" : true, + "binding" : "FabricIngress.next.hashed", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 115, + "column" : 50, + "source_fragment" : "hashed_counter" + } + }, + { + "name" : "FabricIngress.next.multicast_counter", + "id" : 12, + "is_direct" : true, + "binding" : "FabricIngress.next.multicast", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 148, + "column" : 50, + "source_fragment" : "multicast_counter" + } + }, + { + "name" : "FabricIngress.slice_tc_classifier.classifier_stats", + "id" : 13, + "is_direct" : true, + "binding" : "FabricIngress.slice_tc_classifier.classifier", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 20, + "column" : 40, + "source_fragment" : "classifier_stats" + } + }, + { + "name" : "FabricIngress.qos.queues_stats", + "id" : 14, + "is_direct" : true, + "binding" : "FabricIngress.qos.queues", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 106, + "column" : 40, + "source_fragment" : "queues_stats" + } + }, + { + "name" : "FabricIngress.upf.terminations_counter", + "id" : 15, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 20, + "column" : 49, + "source_fragment" : "terminations_counter" + }, + "size" : 4096, + "is_direct" : false + }, + { + "name" : "FabricIngress.upf.recirc_stats", + "id" : 16, + "is_direct" : true, + "binding" : "FabricIngress.upf.uplink_recirc_rules", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 356, + "column" : 40, + "source_fragment" : "recirc_stats" + } + }, + { + "name" : "FabricIngress.int_watchlist.watchlist_counter", + "id" : 17, + "is_direct" : true, + "binding" : "FabricIngress.int_watchlist.watchlist", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 15, + "column" : 50, + "source_fragment" : "watchlist_counter" + } + }, + { + "name" : "FabricIngress.int_ingress.drop_report_counter", + "id" : 18, + "is_direct" : true, + "binding" : "FabricIngress.int_ingress.drop_report", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 64, + "column" : 50, + "source_fragment" : "drop_report_counter" + } + }, + { + "name" : "FabricEgress.stats.flow_counter", + "id" : 19, + "is_direct" : true, + "binding" : "FabricEgress.stats.flows", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 47, + "column" : 50, + "source_fragment" : "flow_counter" + } + }, + { + "name" : "FabricEgress.egress_next.egress_vlan_counter", + "id" : 20, + "is_direct" : true, + "binding" : "FabricEgress.egress_next.egress_vlan", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 241, + "column" : 50, + "source_fragment" : "egress_vlan_counter" + } + }, + { + "name" : "FabricEgress.upf.terminations_counter", + "id" : 21, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 477, + "column" : 49, + "source_fragment" : "terminations_counter" + }, + "size" : 4096, + "is_direct" : false + }, + { + "name" : "FabricEgress.int_egress.report_counter", + "id" : 22, + "is_direct" : true, + "binding" : "FabricEgress.int_egress.report", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 131, + "column" : 50, + "source_fragment" : "report_counter" + } + }, + { + "name" : "FabricEgress.int_egress.int_metadata_counter", + "id" : 23, + "is_direct" : true, + "binding" : "FabricEgress.int_egress.int_metadata", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 132, + "column" : 50, + "source_fragment" : "int_metadata_counter" + } + } + ], + "register_arrays" : [ + { + "name" : "FabricEgress.int_egress.seq_number", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 138, + "column" : 28, + "source_fragment" : "seq_number" + }, + "size" : 1024, + "bitwidth" : 32 + } + ], + "calculations" : [ + { + "name" : "calc", + "id" : 0, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_18"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_19"] + } + ] + }, + { + "name" : "calc_0", + "id" : 1, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_20"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_21"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_22"] + } + ] + }, + { + "name" : "calc_1", + "id" : 2, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_23"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_24"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_25"] + } + ] + }, + { + "name" : "calc_2", + "id" : 3, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_26"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_27"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_28"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_29"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_30"] + } + ] + }, + { + "name" : "calc_3", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 55, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ] + }, + { + "name" : "calc_4", + "id" : 5, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ] + }, + { + "name" : "calc_5", + "id" : 6, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 92, + "column" : 8, + "source_fragment" : "update_checksum(hdr.egress.report_ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_egress_report_ipv427", "version"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "ihl"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "dscp"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "ecn"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "total_len"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "identification"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "flags"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "ttl"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "protocol"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "src_addr"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "dst_addr"] + } + ] + }, + { + "name" : "calc_6", + "id" : 7, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 13, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ] + }, + { + "name" : "calc_7", + "id" : 8, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ] + } + ], + "learn_lists" : [], + "actions" : [ + { + "name" : "nop", + "id" : 0, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 1, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 2, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 3, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 4, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 5, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 6, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "NoAction", + "id" : 7, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.stats.count", + "id" : 8, + "runtime_data" : [ + { + "name" : "flow_id", + "bitwidth" : 10 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_stats_flow_id11"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 17, + "column" : 22, + "source_fragment" : "= flow_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.pkt_io.do_packet_out", + "id" : 9, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_packet_out0", "egress_port"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 13, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t)hdr.packet_out.egress_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "field", + "value" : ["_ingress_packet_out0", "egress_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 14, + "column" : 37, + "source_fragment" : "= hdr.packet_out.egress_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 15, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_packet_out0" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 16, + "column" : 8, + "source_fragment" : "hdr.packet_out.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._skip_egress0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 17, + "column" : 20, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_bridged4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 19, + "column" : 8, + "source_fragment" : "fabric_md.bridged.setInvalid()" + } + }, + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "FabricIngress.filtering.deny", + "id" : 10, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 22, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 23, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ig_port_type33"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 100, + "column" : 14, + "source_fragment" : "0x0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x37" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 250, + "column" : 41, + "source_fragment" : "55, ..." + } + } + ] + }, + { + "name" : "FabricIngress.filtering.permit", + "id" : 11, + "runtime_data" : [ + { + "name" : "port_type", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ig_port_type33"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 33, + "column" : 31, + "source_fragment" : "= port_type; ..." + } + } + ] + }, + { + "name" : "FabricIngress.filtering.permit_with_internal_vlan", + "id" : 12, + "runtime_data" : [ + { + "name" : "vlan_id", + "bitwidth" : 12 + }, + { + "name" : "port_type", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.vlan_id = vlan_id" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ig_port_type33"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 33, + "column" : 31, + "source_fragment" : "= port_type; ..." + } + } + ] + }, + { + "name" : "FabricIngress.filtering.set_forwarding_type", + "id" : 13, + "runtime_data" : [ + { + "name" : "fwd_type", + "bitwidth" : 3 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 74, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.fwd_type = fwd_type" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 14, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 15, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 16, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 17, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_next_id_bridging", + "id" : 18, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.pop_mpls_and_next", + "id" : 19, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_mpls6" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 67, + "column" : 8, + "source_fragment" : "hdr.mpls.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 68, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 69, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_next_id_routing_v4", + "id" : 20, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.nop_routing_v4", + "id" : 21, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.forwarding.drop_routing_v4", + "id" : 22, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 111, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 113, + "column" : 17, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_next_id_routing_v6", + "id" : 23, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.drop_routing_v6", + "id" : 24, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 150, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 152, + "column" : 17, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.pre_next.set_mpls_label", + "id" : 25, + "runtime_data" : [ + { + "name" : "label", + "bitwidth" : 20 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 18, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = label" + } + } + ] + }, + { + "name" : "FabricIngress.pre_next.set_vlan", + "id" : 26, + "runtime_data" : [ + { + "name" : "vlan_id", + "bitwidth" : 12 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 42, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.vlan_id = vlan_id" + } + } + ] + }, + { + "name" : "FabricIngress.acl.set_next_id_acl", + "id" : 27, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 22, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 26, + "column" : 28, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 27, + "column" : 17, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.copy_to_cpu", + "id" : 28, + "runtime_data" : [], + "primitives" : [ + { + "op" : "clone_ingress_pkt_to_egress", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x000001ff" + }, + { + "type" : "hexstr", + "value" : "0x2" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "clone_preserving_field_list(CloneType.I2E, ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.punt_to_cpu", + "id" : 29, + "runtime_data" : [], + "primitives" : [ + { + "op" : "clone_ingress_pkt_to_egress", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x000001ff" + }, + { + "type" : "hexstr", + "value" : "0x2" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "clone_preserving_field_list(CloneType.I2E, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 40, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_punt_to_cpu23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 41, + "column" : 30, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 42, + "column" : 17, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.drop", + "id" : 30, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 46, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 47, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x50" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 252, + "column" : 27, + "source_fragment" : "80, ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.set_output_port", + "id" : 31, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 62, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t) port_num" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 63, + "column" : 37, + "source_fragment" : "= port_num; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 64, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 65, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 66, + "column" : 17, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.nop_acl", + "id" : 32, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.next.output_hashed", + "id" : 33, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 16, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t)port_num" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 17, + "column" : 37, + "source_fragment" : "= port_num; // Needed by INT. ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 18, + "column" : 34, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.next.routing_hashed", + "id" : 34, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + }, + { + "name" : "smac", + "bitwidth" : 48 + }, + { + "name" : "dmac", + "bitwidth" : 48 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ethernet3", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 23, + "column" : 8, + "source_fragment" : "hdr.ethernet.src_addr = smac; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ethernet3", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 28, + "column" : 8, + "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 16, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t)port_num" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 17, + "column" : 37, + "source_fragment" : "= port_num; // Needed by INT. ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 18, + "column" : 34, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.next.set_mcast_group_id", + "id" : 35, + "runtime_data" : [ + { + "name" : "group_id", + "bitwidth" : 16 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "mcast_grp"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 151, + "column" : 8, + "source_fragment" : "standard_md.mcast_grp = group_id" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_is_multicast4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 152, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.is_multicast = true" + } + } + ] + }, + { + "name" : "FabricIngress.next.reset_mcast_group_id", + "id" : 36, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "mcast_grp"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 157, + "column" : 8, + "source_fragment" : "standard_md.mcast_grp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_is_multicast4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 158, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.is_multicast = false" + } + } + ] + }, + { + "name" : "FabricIngress.slice_tc_classifier.set_slice_id_tc", + "id" : 37, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + }, + { + "name" : "tc", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 23, + "column" : 27, + "source_fragment" : "= slice_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 24, + "column" : 21, + "source_fragment" : "= tc; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 25, + "column" : 29, + "source_fragment" : "= false; ..." + } + } + ] + }, + { + "name" : "FabricIngress.slice_tc_classifier.no_classification", + "id" : 38, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 57, + "column" : 36, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 58, + "column" : 24, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 25, + "column" : 29, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 31, + "column" : 29, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.slice_tc_classifier.trust_dscp", + "id" : 39, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x0f" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 38, + "column" : 27, + "source_fragment" : "= hdr.ipv4.dscp[4 +2 -1:2]; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 39, + "column" : 21, + "source_fragment" : "= hdr.ipv4.dscp[2 -1:0]; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 40, + "column" : 29, + "source_fragment" : "= false; ..." + } + } + ] + }, + { + "name" : "FabricIngress.qos.use_upf", + "id" : 40, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "<<", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_tc31"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 81, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.slice_tc = fabric_md.upf_slice_id++fabric_md.upf_tc" + } + } + ] + }, + { + "name" : "FabricIngress.qos.use_default", + "id" : 41, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "<<", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 86, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.slice_tc = fabric_md.slice_id++fabric_md.tc" + } + } + ] + }, + { + "name" : "FabricIngress.qos.set_queue", + "id" : 42, + "runtime_data" : [ + { + "name" : "qid", + "bitwidth" : 5 + } + ], + "primitives" : [] + }, + { + "name" : "FabricIngress.qos.meter_drop", + "id" : 43, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 115, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0xa0" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 269, + "column" : 36, + "source_fragment" : "160, ..." + } + } + ] + }, + { + "name" : "FabricIngress.qos.set_default_tc", + "id" : 44, + "runtime_data" : [ + { + "name" : "tc", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "<<", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x0f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.slice_tc = fabric_md.bridged.base.slice_tc[4 +2 -1:2]++tc" + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_access", + "id" : 45, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = false" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_is_upf_hit29"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 86, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 87, + "column" : 31, + "source_fragment" : "= slice_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_core", + "id" : 46, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = false" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_is_upf_hit29"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 86, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 87, + "column" : 31, + "source_fragment" : "= slice_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_dbuf", + "id" : 47, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = false" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_is_upf_hit29"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 86, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 87, + "column" : 31, + "source_fragment" : "= slice_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 62, + "column" : 35, + "source_fragment" : "= hdr.inner_ipv4.dst_addr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + }, + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 64, + "column" : 17, + "source_fragment" : "= hdr.inner_ipv4; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 65, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + }, + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 66, + "column" : 16, + "source_fragment" : "= hdr.inner_udp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 67, + "column" : 8, + "source_fragment" : "hdr.inner_udp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + }, + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 68, + "column" : 16, + "source_fragment" : "= hdr.inner_tcp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 69, + "column" : 8, + "source_fragment" : "hdr.inner_tcp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + }, + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 70, + "column" : 17, + "source_fragment" : "= hdr.inner_icmp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.inner_icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 72, + "column" : 8, + "source_fragment" : "hdr.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 74, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 80, + "column" : 11, + "source_fragment" : "0x0, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_miss", + "id" : 48, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 104, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_uplink_session_miss", + "id" : 49, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x86" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 261, + "column" : 38, + "source_fragment" : "134, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_uplink_session_drop", + "id" : 50, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 136, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x87" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 262, + "column" : 38, + "source_fragment" : "135, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_miss", + "id" : 51, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x84" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 259, + "column" : 38, + "source_fragment" : "132, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_drop", + "id" : 52, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 151, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x85" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 260, + "column" : 38, + "source_fragment" : "133, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session", + "id" : 53, + "runtime_data" : [ + { + "name" : "tun_peer_id", + "bitwidth" : 8 + }, + { + "name" : "session_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 159, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 161, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.routing_ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 162, + "column" : 8, + "source_fragment" : "session_meter_idx_internal = session_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_tun_peer_id13"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 163, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.tun_peer_id = tun_peer_id" + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_buf", + "id" : 54, + "runtime_data" : [ + { + "name" : "tun_peer_id", + "bitwidth" : 8 + }, + { + "name" : "session_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 167, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 169, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.routing_ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 170, + "column" : 8, + "source_fragment" : "session_meter_idx_internal = session_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_tun_peer_id13"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 171, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.tun_peer_id = tun_peer_id" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_egress_upf_ctr18"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 175, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_egress_upf_ctr = true" + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_buf_drop", + "id" : 55, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 179, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 182, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.routing_ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x88" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 263, + "column" : 43, + "source_fragment" : "136, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_uplink_session", + "id" : 56, + "runtime_data" : [ + { + "name" : "session_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 190, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 192, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.lkp.ipv4_src; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 193, + "column" : 8, + "source_fragment" : "session_meter_idx_internal = session_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 62, + "column" : 35, + "source_fragment" : "= hdr.inner_ipv4.dst_addr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + }, + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 64, + "column" : 17, + "source_fragment" : "= hdr.inner_ipv4; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 65, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + }, + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 66, + "column" : 16, + "source_fragment" : "= hdr.inner_udp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 67, + "column" : 8, + "source_fragment" : "hdr.inner_udp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + }, + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 68, + "column" : 16, + "source_fragment" : "= hdr.inner_tcp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 69, + "column" : 8, + "source_fragment" : "hdr.inner_tcp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + }, + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 70, + "column" : 17, + "source_fragment" : "= hdr.inner_icmp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.inner_icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 72, + "column" : 8, + "source_fragment" : "hdr.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 74, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 80, + "column" : 11, + "source_fragment" : "0x0, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.uplink_drop_miss", + "id" : 57, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x8b" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 266, + "column" : 42, + "source_fragment" : "139, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.downlink_drop_miss", + "id" : 58, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x89" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 264, + "column" : 42, + "source_fragment" : "137, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.uplink_drop", + "id" : 59, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x8c" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 267, + "column" : 42, + "source_fragment" : "140, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.downlink_drop", + "id" : 60, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x8a" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 265, + "column" : 42, + "source_fragment" : "138, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.app_fwd", + "id" : 61, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + }, + { + "name" : "tc", + "bitwidth" : 2 + }, + { + "name" : "app_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_tc31"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 265, + "column" : 25, + "source_fragment" : "= tc; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 266, + "column" : 8, + "source_fragment" : "app_meter_idx_internal = app_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 267, + "column" : 29, + "source_fragment" : "= false; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.downlink_fwd_encap", + "id" : 62, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + }, + { + "name" : "tc", + "bitwidth" : 2 + }, + { + "name" : "teid", + "bitwidth" : 32 + }, + { + "name" : "qfi", + "bitwidth" : 6 + }, + { + "name" : "app_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_tc31"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 265, + "column" : 25, + "source_fragment" : "= tc; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 4 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 266, + "column" : 8, + "source_fragment" : "app_meter_idx_internal = app_meter_idx; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 267, + "column" : 29, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_needs_gtpu_encap16"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.needs_gtpu_encap = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_teid19"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 55, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.teid = teid; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_qfi15"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 56, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.qfi = qfi; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_routing_ipv4_dst", + "id" : 63, + "runtime_data" : [ + { + "name" : "tun_dst_addr", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 314, + "column" : 35, + "source_fragment" : "= tun_dst_addr; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_app_id", + "id" : 64, + "runtime_data" : [ + { + "name" : "app_id", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_internal_app_id"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 334, + "column" : 8, + "source_fragment" : "internal_app_id = app_id" + } + } + ] + }, + { + "name" : "FabricIngress.upf.recirc_allow", + "id" : 65, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "hexstr", + "value" : "0x01fe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 36, + "column" : 42, + "source_fragment" : "510; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._do_upf_uplink_recirc1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 364, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 365, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 366, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 367, + "column" : 28, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.recirc_deny", + "id" : 66, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x96" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 268, + "column" : 41, + "source_fragment" : "150, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._do_upf_uplink_recirc1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 375, + "column" : 29, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 376, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 377, + "column" : 28, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.recirc_miss", + "id" : 67, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.int_watchlist.mark_to_report", + "id" : 68, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 223, + "column" : 45, + "source_fragment" : "1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 223, + "column" : 45, + "source_fragment" : "1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.int_watchlist.no_report", + "id" : 69, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.int_watchlist.no_report_collector", + "id" : 70, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.int_ingress.report_drop", + "id" : 71, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_bmd_type0"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 169, + "column" : 23, + "source_fragment" : "4, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 221, + "column" : 45, + "source_fragment" : "4; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 79, + "column" : 17, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "hexstr", + "value" : "0x01fe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 36, + "column" : 42, + "source_fragment" : "510; ..." + } + } + ] + }, + { + "name" : "fabric_v1model64", + "id" : 72, + "runtime_data" : [], + "primitives" : [ + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 64, + "column" : 12, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "fabric_v1model61", + "id" : 73, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "mark_to_drop(standard_md)" + } + } + ] + }, + { + "name" : "fabric_v1model70", + "id" : 74, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ig_port3"] + }, + { + "type" : "hexstr", + "value" : "0x01fe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 36, + "column" : 42, + "source_fragment" : "510; ..." + } + } + ] + }, + { + "name" : "lookup_md_init21", + "id" : 75, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_vlan_id9"] + }, + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "vlan_id"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 21, + "column" : 27, + "source_fragment" : "= hdr.vlan_tag.vlan_id; ..." + } + } + ] + }, + { + "name" : "lookup_md_init15", + "id" : 76, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_eth_dst6"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 15, + "column" : 23, + "source_fragment" : "= hdr.ethernet.dst_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_eth_src7"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 16, + "column" : 23, + "source_fragment" : "= hdr.ethernet.src_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_eth_type8"] + }, + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 17, + "column" : 24, + "source_fragment" : "= hdr.eth_type.value; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_vlan_id9"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 19, + "column" : 23, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "lookup_md_init38", + "id" : 77, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_tcp19", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 38, + "column" : 32, + "source_fragment" : "= hdr.inner_tcp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_tcp19", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 39, + "column" : 32, + "source_fragment" : "= hdr.inner_tcp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init41", + "id" : 78, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_udp20", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 41, + "column" : 32, + "source_fragment" : "= hdr.inner_udp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_udp20", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 42, + "column" : 32, + "source_fragment" : "= hdr.inner_udp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init44", + "id" : 79, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_icmp21", "icmp_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 44, + "column" : 33, + "source_fragment" : "= hdr.inner_icmp.icmp_type; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_icmp21", "icmp_code"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 45, + "column" : 33, + "source_fragment" : "= hdr.inner_icmp.icmp_code; ..." + } + } + ] + }, + { + "name" : "lookup_md_init33", + "id" : 80, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 33, + "column" : 27, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 34, + "column" : 28, + "source_fragment" : "= hdr.inner_ipv4.src_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 35, + "column" : 28, + "source_fragment" : "= hdr.inner_ipv4.dst_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 36, + "column" : 28, + "source_fragment" : "= hdr.inner_ipv4.protocol; ..." + } + } + ] + }, + { + "name" : "lookup_md_init53", + "id" : 81, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_tcp9", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 53, + "column" : 32, + "source_fragment" : "= hdr.tcp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_tcp9", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 54, + "column" : 32, + "source_fragment" : "= hdr.tcp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init56", + "id" : 82, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_udp10", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 56, + "column" : 32, + "source_fragment" : "= hdr.udp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 57, + "column" : 32, + "source_fragment" : "= hdr.udp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init59", + "id" : 83, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"] + }, + { + "type" : "field", + "value" : ["_ingress_icmp11", "icmp_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 59, + "column" : 33, + "source_fragment" : "= hdr.icmp.icmp_type; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"] + }, + { + "type" : "field", + "value" : ["_ingress_icmp11", "icmp_code"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 60, + "column" : 33, + "source_fragment" : "= hdr.icmp.icmp_code; ..." + } + } + ] + }, + { + "name" : "lookup_md_init48", + "id" : 84, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 48, + "column" : 27, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 49, + "column" : 28, + "source_fragment" : "= hdr.ipv4.src_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 50, + "column" : 28, + "source_fragment" : "= hdr.ipv4.dst_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 51, + "column" : 28, + "source_fragment" : "= hdr.ipv4.protocol; ..." + } + } + ] + }, + { + "name" : "lookup_md_init24", + "id" : 85, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 24, + "column" : 23, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 25, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 26, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 27, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 28, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 29, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 30, + "column" : 25, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 31, + "column" : 25, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "upf409", + "id" : 86, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_is_uplink"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 409, + "column" : 20, + "source_fragment" : "is_uplink = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 410, + "column" : 20, + "source_fragment" : "app_ipv4_addr = fabric_md.lkp.ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 411, + "column" : 20, + "source_fragment" : "app_l4_port = fabric_md.lkp.l4_dport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 412, + "column" : 20, + "source_fragment" : "app_ip_proto = fabric_md.lkp.ip_proto; ..." + } + } + ] + }, + { + "name" : "upf418", + "id" : 87, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 418, + "column" : 20, + "source_fragment" : "app_ipv4_addr = fabric_md.lkp.ipv4_src; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 419, + "column" : 20, + "source_fragment" : "app_l4_port = fabric_md.lkp.l4_sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 420, + "column" : 20, + "source_fragment" : "app_ip_proto = fabric_md.lkp.ip_proto; ..." + } + } + ] + }, + { + "name" : "upf424", + "id" : 88, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 424, + "column" : 20, + "source_fragment" : "app_ipv4_addr = fabric_md.lkp.ipv4_src; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 425, + "column" : 20, + "source_fragment" : "app_l4_port = fabric_md.lkp.l4_sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 426, + "column" : 20, + "source_fragment" : "app_ip_proto = fabric_md.lkp.ip_proto; ..." + } + } + ] + }, + { + "name" : "upf443", + "id" : 89, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_egress_upf_ctr18"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 443, + "column" : 16, + "source_fragment" : "fabric_md.bridged.upf.skip_egress_upf_ctr = true" + } + } + ] + }, + { + "name" : "upf448", + "id" : 90, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_14"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 448, + "column" : 44, + "source_fragment" : "(bit<32>) session_meter_idx_internal" + } + }, + { + "op" : "execute_meter", + "parameters" : [ + { + "type" : "meter_array", + "value" : "FabricIngress.upf.session_meter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_14"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 448, + "column" : 16, + "source_fragment" : "session_meter.execute_meter((bit<32>) session_meter_idx_internal, fabric_md.upf_meter_color)" + } + } + ] + }, + { + "name" : "upf445", + "id" : 91, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_15"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 445, + "column" : 36, + "source_fragment" : "(bit<32>) app_meter_idx_internal" + } + }, + { + "op" : "execute_meter", + "parameters" : [ + { + "type" : "meter_array", + "value" : "FabricIngress.upf.app_meter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_15"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 445, + "column" : 12, + "source_fragment" : "app_meter.execute_meter((bit<32>) app_meter_idx_internal, fabric_md.upf_meter_color)" + } + } + ] + }, + { + "name" : "upf461", + "id" : 92, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_16"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 461, + "column" : 43, + "source_fragment" : "(bit<32>)fabric_md.bridged.upf.upf_ctr_id" + } + }, + { + "op" : "count", + "parameters" : [ + { + "type" : "counter_array", + "value" : "FabricIngress.upf.terminations_counter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_16"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 461, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + } + } + ] + }, + { + "name" : "upf25", + "id" : 93, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_is_uplink"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 25, + "column" : 4, + "source_fragment" : "bool is_uplink = false;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 26, + "column" : 4, + "source_fragment" : "bool term_hit = false;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 27, + "column" : 4, + "source_fragment" : "bool sess_hit = false;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 28, + "column" : 4, + "source_fragment" : "bit<32> app_ipv4_addr = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 29, + "column" : 4, + "source_fragment" : "l4_port_t app_l4_port = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 30, + "column" : 4, + "source_fragment" : "bit<8> app_ip_proto = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_internal_app_id"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 55, + "column" : 30, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 32, + "column" : 4, + "source_fragment" : "ue_session_id_t ue_session_id = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 72, + "column" : 54, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 73, + "column" : 46, + "source_fragment" : "0; ..." + } + } + ] + }, + { + "name" : "filtering100", + "id" : 94, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 100, + "column" : 31, + "source_fragment" : "(bit<32>)fabric_md.bridged.base.fwd_type" + } + }, + { + "op" : "count", + "parameters" : [ + { + "type" : "counter_array", + "value" : "FabricIngress.filtering.fwd_type_counter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_17"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 100, + "column" : 8, + "source_fragment" : "fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type)" + } + } + ] + }, + { + "name" : "hasher28", + "id" : 95, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_18"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_tun_peer_id13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 32, + "column" : 17, + "source_fragment" : "fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_19"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_teid19"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 32, + "column" : 52, + "source_fragment" : "fabric_md.bridged" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 28, + "column" : 12, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "hasher39", + "id" : 96, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_20"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 43, + "column" : 17, + "source_fragment" : "hdr.ipv4.src_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_21"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 43, + "column" : 36, + "source_fragment" : "hdr.ipv4.dst_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_22"] + }, + { + "type" : "field", + "value" : ["_ingress_gtpu12", "teid"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 43, + "column" : 55, + "source_fragment" : "hdr.gtpu.teid" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc_0" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 39, + "column" : 12, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "hasher50", + "id" : 97, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 50, + "column" : 32, + "source_fragment" : "= fabric_md.bridged.base.inner_hash; ..." + } + } + ] + }, + { + "name" : "hasher66", + "id" : 98, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_inner_hash1"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 66, + "column" : 12, + "source_fragment" : "fabric_md.bridged.base.inner_hash = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_23"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 71, + "column" : 17, + "source_fragment" : "hdr.ethernet.dst_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_24"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 71, + "column" : 40, + "source_fragment" : "hdr.ethernet.src_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_25"] + }, + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 71, + "column" : 63, + "source_fragment" : "hdr.eth_type.value" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc_1" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 67, + "column" : 12, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "hasher17", + "id" : 99, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_26"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_27"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_28"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_29"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_30"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_inner_hash1"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc_2" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "slicing174", + "id" : 100, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_31"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 174, + "column" : 41, + "source_fragment" : "(bit<32>) fabric_md.bridged.base.slice_tc" + } + }, + { + "op" : "execute_meter", + "parameters" : [ + { + "type" : "meter_array", + "value" : "FabricIngress.qos.slice_tc_meter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_31"] + }, + { + "type" : "field", + "value" : ["scalars", "qos_packet_color"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "slice_tc_meter.execute_meter((bit<32>) fabric_md.bridged.base.slice_tc, packet_color)" + } + } + ] + }, + { + "name" : "slicing177", + "id" : 101, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "qos_packet_color"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 25, + "column" : 10, + "source_fragment" : "2 ..." + } + } + ] + }, + { + "name" : "int112", + "id" : 102, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_egress_port25"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 112, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.egress_port = standard_md.egress_spec" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_queue_id24"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 113, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.queue_id = 0" + } + } + ] + }, + { + "name" : "fabric_v1model110", + "id" : 103, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 110, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + } + } + ] + }, + { + "name" : "fabric_v1model106", + "id" : 104, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_bridged36" + }, + { + "type" : "header", + "value" : "_ingress_bridged4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 106, + "column" : 8, + "source_fragment" : "fabric_md.egress.bridged = fabric_md" + } + } + ] + }, + { + "name" : "nop", + "id" : 105, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 106, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 107, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 108, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 109, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 110, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 111, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.stats.count", + "id" : 112, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.pkt_io_egress.set_switch_info", + "id" : 113, + "runtime_data" : [ + { + "name" : "cpu_port", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_cpu_port37"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 36, + "column" : 27, + "source_fragment" : "= (PortId_t)cpu_port; ..." + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.pop_mpls_if_present", + "id" : 114, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_mpls6" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.mpls.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ip_eth_type10"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 200, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.bridged" + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.set_mpls", + "id" : 115, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_mpls6" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.mpls.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "label"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 206, + "column" : 8, + "source_fragment" : "hdr.mpls.label = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "tc"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.mpls.tc = 3w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "bos"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 208, + "column" : 8, + "source_fragment" : "hdr.mpls.bos = 1w1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_ttl8"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 209, + "column" : 8, + "source_fragment" : "hdr.mpls.ttl = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "hexstr", + "value" : "0x8847" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 112, + "column" : 31, + "source_fragment" : "0x8847; ..." + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.push_vlan", + "id" : 116, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 217, + "column" : 8, + "source_fragment" : "hdr.vlan_tag.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "eth_type"] + }, + { + "type" : "hexstr", + "value" : "0x8100" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 111, + "column" : 31, + "source_fragment" : "0x8100; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "vlan_id"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_vlan_id6"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 221, + "column" : 8, + "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_md.bridged" + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.pop_vlan", + "id" : 117, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 249, + "column" : 8, + "source_fragment" : "hdr.vlan_tag.setInvalid()" + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.drop", + "id" : 118, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 254, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x82" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 257, + "column" : 35, + "source_fragment" : "130, ..." + } + } + ] + }, + { + "name" : "FabricEgress.dscp_rewriter.rewrite", + "id" : 119, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.dscp_rewriter.clear", + "id" : 120, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "dscp_rewriter_tmp_dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "tmp_dscp = 0" + } + } + ] + }, + { + "name" : "FabricEgress.upf.load_tunnel_params", + "id" : 121, + "runtime_data" : [ + { + "name" : "tunnel_src_port", + "bitwidth" : 16 + }, + { + "name" : "tunnel_src_addr", + "bitwidth" : 32 + }, + { + "name" : "tunnel_dst_addr", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 486, + "column" : 8, + "source_fragment" : "hdr.ipv4.src_addr = tunnel_src_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 487, + "column" : 8, + "source_fragment" : "hdr.ipv4.dst_addr = tunnel_dst_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "sport"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 488, + "column" : 8, + "source_fragment" : "hdr.udp.sport = tunnel_src_port" + } + } + ] + }, + { + "name" : "FabricEgress.upf.gtpu_only", + "id" : 122, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 551, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + }, + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 552, + "column" : 23, + "source_fragment" : "= hdr.ipv4; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 553, + "column" : 8, + "source_fragment" : "hdr.udp.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 554, + "column" : 8, + "source_fragment" : "hdr.gtpu.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 506, + "column" : 8, + "source_fragment" : "hdr.ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 507, + "column" : 8, + "source_fragment" : "hdr.ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 508, + "column" : 8, + "source_fragment" : "hdr.ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 509, + "column" : 8, + "source_fragment" : "hdr.ipv4.ecn = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x1513" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 511, + "column" : 8, + "source_fragment" : "hdr.ipv4.identification = 0x1513" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 512, + "column" : 8, + "source_fragment" : "hdr.ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 513, + "column" : 8, + "source_fragment" : "hdr.ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + }, + { + "type" : "hexstr", + "value" : "0x0868" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 86, + "column" : 30, + "source_fragment" : "2152; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "version"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 87, + "column" : 22, + "source_fragment" : "3w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "pt"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 89, + "column" : 37, + "source_fragment" : "1w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "spare"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 527, + "column" : 8, + "source_fragment" : "hdr.gtpu.spare = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "seq_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 529, + "column" : 8, + "source_fragment" : "hdr.gtpu.seq_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "npdu_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 530, + "column" : 8, + "source_fragment" : "hdr.gtpu.npdu_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msgtype"] + }, + { + "type" : "hexstr", + "value" : "0xff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 88, + "column" : 25, + "source_fragment" : "0xff; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "teid"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_teid19"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 533, + "column" : 8, + "source_fragment" : "hdr.gtpu.teid = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "seq_num"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 535, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.seq_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "n_pdu_num"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 536, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.n_pdu_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x85" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 91, + "column" : 33, + "source_fragment" : "0x85; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "len"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 94, + "column" : 32, + "source_fragment" : "8w1; // 1*4-octets ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 92, + "column" : 36, + "source_fragment" : "4w0; // Downlink ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "spare0"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 541, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.spare0 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "ppp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 542, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.ppp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "rqi"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 543, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.rqi = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 90, + "column" : 34, + "source_fragment" : "0x0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0024" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 563, + "column" : 8, + "source_fragment" : "hdr.ipv4.total_len = 20 + 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0010" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 565, + "column" : 8, + "source_fragment" : "hdr.udp.len = 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msglen"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 567, + "column" : 8, + "source_fragment" : "hdr.gtpu.msglen = hdr.inner_ipv4.total_len" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 81, + "column" : 16, + "source_fragment" : "0x1, ..." + } + } + ] + }, + { + "name" : "FabricEgress.upf.gtpu_with_psc", + "id" : 123, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 577, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 578, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 551, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + }, + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 552, + "column" : 23, + "source_fragment" : "= hdr.ipv4; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 553, + "column" : 8, + "source_fragment" : "hdr.udp.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 554, + "column" : 8, + "source_fragment" : "hdr.gtpu.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 506, + "column" : 8, + "source_fragment" : "hdr.ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 507, + "column" : 8, + "source_fragment" : "hdr.ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 508, + "column" : 8, + "source_fragment" : "hdr.ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 509, + "column" : 8, + "source_fragment" : "hdr.ipv4.ecn = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x1513" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 511, + "column" : 8, + "source_fragment" : "hdr.ipv4.identification = 0x1513" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 512, + "column" : 8, + "source_fragment" : "hdr.ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 513, + "column" : 8, + "source_fragment" : "hdr.ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + }, + { + "type" : "hexstr", + "value" : "0x0868" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 86, + "column" : 30, + "source_fragment" : "2152; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "version"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 87, + "column" : 22, + "source_fragment" : "3w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "pt"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 89, + "column" : 37, + "source_fragment" : "1w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "spare"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 527, + "column" : 8, + "source_fragment" : "hdr.gtpu.spare = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "seq_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 529, + "column" : 8, + "source_fragment" : "hdr.gtpu.seq_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "npdu_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 530, + "column" : 8, + "source_fragment" : "hdr.gtpu.npdu_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msgtype"] + }, + { + "type" : "hexstr", + "value" : "0xff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 88, + "column" : 25, + "source_fragment" : "0xff; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "teid"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_teid19"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 533, + "column" : 8, + "source_fragment" : "hdr.gtpu.teid = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "seq_num"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 535, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.seq_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "n_pdu_num"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 536, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.n_pdu_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x85" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 91, + "column" : 33, + "source_fragment" : "0x85; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "len"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 94, + "column" : 32, + "source_fragment" : "8w1; // 1*4-octets ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 92, + "column" : 36, + "source_fragment" : "4w0; // Downlink ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "spare0"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 541, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.spare0 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "ppp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 542, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.ppp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "rqi"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 543, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.rqi = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 90, + "column" : 34, + "source_fragment" : "0x0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x002c" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 580, + "column" : 8, + "source_fragment" : "hdr.ipv4.total_len = 20 + 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0018" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 583, + "column" : 8, + "source_fragment" : "hdr.udp.len = 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msglen"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0008" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 586, + "column" : 8, + "source_fragment" : "hdr.gtpu.msglen = 4 + 4 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "ex_flag"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 588, + "column" : 8, + "source_fragment" : "hdr.gtpu.ex_flag = 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "qfi"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_qfi15"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 589, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.qfi = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 82, + "column" : 20, + "source_fragment" : "0x2, ..." + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_ingress_drop", + "id" : 124, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_int_report_md39" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 79, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ip_eth_type"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "report_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 221, + "column" : 45, + "source_fragment" : "4; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "mirror_type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 169, + "column" : 23, + "source_fragment" : "4, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_encap_presence7"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 93, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.encap_presence = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "flow_hash"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 94, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.flow_hash = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 97, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 99, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_port3"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 101, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 102, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 103, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = 0" + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_ingress_drop", + "id" : 125, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_int_report_md39" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 79, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ip_eth_type"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "report_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 221, + "column" : 45, + "source_fragment" : "4; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "mirror_type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 169, + "column" : 23, + "source_fragment" : "4, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_encap_presence7"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 93, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.encap_presence = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "flow_hash"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 94, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.flow_hash = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 97, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 99, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_port3"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 101, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 102, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 103, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = 0" + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_report_mirror", + "id" : 126, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 110, + "column" : 8, + "source_fragment" : "fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 112, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 114, + "column" : 12, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 118, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 121, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 122, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_id"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 123, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 126, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "queue_occupancy"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_occupancy"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 127, + "column" : 8, + "source_fragment" : "hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "eg_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 128, + "column" : 8, + "source_fragment" : "hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp" + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_report_mirror", + "id" : 127, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 110, + "column" : 8, + "source_fragment" : "fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 112, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 114, + "column" : 12, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 118, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 121, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 122, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_id"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 123, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 126, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "queue_occupancy"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_occupancy"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 127, + "column" : 8, + "source_fragment" : "hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "eg_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 128, + "column" : 8, + "source_fragment" : "hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.check_quota", + "id" : 128, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.int_egress.reset_quota", + "id" : 129, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.int_egress.set_config", + "id" : 130, + "runtime_data" : [ + { + "name" : "hop_latency_mask", + "bitwidth" : 32 + }, + { + "name" : "timestamp_mask", + "bitwidth" : 48 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + "right" : { + "type" : "local", + "value" : 0 + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 179, + "column" : 8, + "source_fragment" : "fabric_md.int_md.hop_latency = fabric_md.int_md.hop_latency & hop_latency_mask" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + "right" : { + "type" : "local", + "value" : 1 + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 180, + "column" : 8, + "source_fragment" : "fabric_md.int_md.timestamp = fabric_md.int_md.timestamp & timestamp_mask" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_local_report_encap", + "id" : 131, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_32"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_32"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_33"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_33"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 218, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_local_report_encap_mpls", + "id" : 132, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "mon_label", + "bitwidth" : 20 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_34"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_34"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_35"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_35"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 4 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 218, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 126, + "column" : 39, + "source_fragment" : "0xBF05; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 226, + "column" : 8, + "source_fragment" : "hdr.report_mpls.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "tc"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 227, + "column" : 8, + "source_fragment" : "hdr.report_mpls.tc = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "bos"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 228, + "column" : 8, + "source_fragment" : "hdr.report_mpls.bos = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 149, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "label"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 230, + "column" : 8, + "source_fragment" : "hdr.report_mpls.label = mon_label" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_drop_report_encap", + "id" : 133, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_36"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_36"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_37"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_37"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 202, + "column" : 44, + "source_fragment" : "1; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 238, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 241, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 243, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason =" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_drop_report_encap_mpls", + "id" : 134, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "mon_label", + "bitwidth" : 20 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_38"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_38"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_39"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_39"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 4 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 202, + "column" : 44, + "source_fragment" : "1; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 238, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 241, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 243, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 126, + "column" : 39, + "source_fragment" : "0xBF05; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 251, + "column" : 8, + "source_fragment" : "hdr.report_mpls.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "tc"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 252, + "column" : 8, + "source_fragment" : "hdr.report_mpls.tc = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "bos"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 253, + "column" : 8, + "source_fragment" : "hdr.report_mpls.bos = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 149, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "label"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 256, + "column" : 8, + "source_fragment" : "hdr.report_mpls.label = mon_label" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.init_int_metadata", + "id" : 135, + "runtime_data" : [ + { + "name" : "report_type", + "bitwidth" : 3 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_mirror_session_id22"] + }, + { + "type" : "hexstr", + "value" : "0x01fa" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 208, + "column" : 43, + "source_fragment" : "0x1FA; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_fabric_md_int_report_md" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 293, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 179, + "column" : 17, + "source_fragment" : "1, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "bmd_type"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 167, + "column" : 20, + "source_fragment" : "2, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "mirror_type"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 179, + "column" : 17, + "source_fragment" : "1, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ig_port"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_port3"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 299, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.ig_port =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "eg_port"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "egress_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 300, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.eg_port = (PortId_t)standard_md.egress_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "queue_id"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_egress_qid"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 301, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.queue_id = egress_qid" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "queue_occupancy"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "deq_qdepth"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 302, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.queue_occupancy = standard_md.deq_qdepth" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ig_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 303, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "eg_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 304, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.eg_tstamp = standard_md.egress_global_timestamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ip_eth_type10"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 305, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.ip_eth_type =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "flow_hash"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 306, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.flow_hash =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 309, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.report_type = report_type" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.adjust_ip_udp_len", + "id" : 136, + "runtime_data" : [ + { + "name" : "adjust_ip", + "bitwidth" : 16 + }, + { + "name" : "adjust_udp", + "bitwidth" : 16 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_fabric_md_pkt_length"] + }, + "right" : { + "type" : "local", + "value" : 0 + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 342, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.ipv4.total_len = fabric_md.pkt_length + adjust_ip" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_fabric_md_pkt_length"] + }, + "right" : { + "type" : "local", + "value" : 1 + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 343, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.udp.len = fabric_md.pkt_length + adjust_udp" + } + } + ] + }, + { + "name" : "fabric_v1model136", + "id" : 137, + "runtime_data" : [], + "primitives" : [ + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 136, + "column" : 12, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "fabric_v1model133", + "id" : 138, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_cpu_port37"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 133, + "column" : 8, + "source_fragment" : "fabric_md.egress.cpu_port = 0" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator148", + "id" : 139, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 149, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.tcp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 150, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.udp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 151, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vxlan15" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 153, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.vxlan.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ethernet16" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 154, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_ethernet.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_eth_type17" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 155, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_eth_type.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 157, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 158, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 159, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_ext_psc.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator14", + "id" : 140, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_drop_reason23"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 144, + "column" : 12, + "source_fragment" : "fabric_md.egress.bridged.int_bmd.drop_reason = fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 145, + "column" : 12, + "source_fragment" : "fabric_md.egress.bridged.int_bmd.report_type = fabric_md" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + }, + { + "type" : "header", + "value" : "_egress_report_ethernet24" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + }, + { + "type" : "header", + "value" : "_egress_report_eth_type25" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + }, + { + "type" : "header", + "value" : "_egress_report_ipv427" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + }, + { + "type" : "header", + "value" : "_egress_report_udp28" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + }, + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + }, + { + "type" : "header", + "value" : "_egress_common_report_header30" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + }, + { + "type" : "header", + "value" : "_egress_local_report_header31" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + }, + { + "type" : "header", + "value" : "_egress_drop_report_header32" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_is_int_recirc45"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 134, + "column" : 32, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 140, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.vlan_tag.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator166", + "id" : 141, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x3" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator169", + "id" : 142, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator173", + "id" : 143, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ethernet24" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_eth_type25" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ipv427" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_udp28" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_common_report_header30" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_local_report_header31" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_drop_report_header32" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + } + ] + }, + { + "name" : "int_tna_parser_emulator148_0", + "id" : 144, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 149, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.tcp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 150, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.udp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 151, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vxlan15" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 153, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.vxlan.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ethernet16" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 154, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_ethernet.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_eth_type17" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 155, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_eth_type.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 157, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 158, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 159, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_ext_psc.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator14_0", + "id" : 145, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + }, + { + "type" : "header", + "value" : "_egress_report_ethernet24" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + }, + { + "type" : "header", + "value" : "_egress_report_eth_type25" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + }, + { + "type" : "header", + "value" : "_egress_report_ipv427" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + }, + { + "type" : "header", + "value" : "_egress_report_udp28" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + }, + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + }, + { + "type" : "header", + "value" : "_egress_common_report_header30" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + }, + { + "type" : "header", + "value" : "_egress_local_report_header31" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + }, + { + "type" : "header", + "value" : "_egress_drop_report_header32" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_is_int_recirc45"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 134, + "column" : 32, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 140, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.vlan_tag.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator166_0", + "id" : 146, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator169_0", + "id" : 147, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator173_0", + "id" : 148, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ethernet24" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_eth_type25" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ipv427" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_udp28" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_common_report_header30" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_local_report_header31" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_drop_report_header32" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + } + ] + }, + { + "name" : "packetio51", + "id" : 149, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_packet_in1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 51, + "column" : 12, + "source_fragment" : "hdr.packet_in.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_packet_in1", "ingress_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_ingress_port50"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 52, + "column" : 12, + "source_fragment" : "hdr.packet_in.ingress_port = preserved_ig_port; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_fake_ethernet2" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 53, + "column" : 12, + "source_fragment" : "hdr.fake_ethernet.setInvalid()" + } + }, + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 54, + "column" : 12, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "packetio60", + "id" : 150, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_pkt_length46"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "packet_length"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x0000ffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xfff2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 60, + "column" : 37, + "source_fragment" : "= (bit<16>)standard_md.packet_length - 14; ..." + } + } + ] + }, + { + "name" : "next283", + "id" : 151, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 285, + "column" : 21, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "next325", + "id" : 152, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 325, + "column" : 25, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x83" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 258, + "column" : 32, + "source_fragment" : "131, ..." + } + } + ] + }, + { + "name" : "next323", + "id" : 153, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 323, + "column" : 12, + "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1" + } + } + ] + }, + { + "name" : "next333", + "id" : 154, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 333, + "column" : 20, + "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1" + } + } + ] + }, + { + "name" : "next336", + "id" : 155, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 336, + "column" : 29, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x1a" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 247, + "column" : 30, + "source_fragment" : "26, ..." + } + } + ] + }, + { + "name" : "next343", + "id" : 156, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv68", "hop_limit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv68", "hop_limit"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 343, + "column" : 20, + "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1" + } + } + ] + }, + { + "name" : "next346", + "id" : 157, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 346, + "column" : 29, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x1a" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 247, + "column" : 30, + "source_fragment" : "26, ..." + } + } + ] + }, + { + "name" : "upf610", + "id" : 158, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 610, + "column" : 20, + "source_fragment" : "hdr.inner_udp.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + }, + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 611, + "column" : 34, + "source_fragment" : "= hdr.udp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 612, + "column" : 20, + "source_fragment" : "hdr.udp.setInvalid()" + } + } + ] + }, + { + "name" : "upf615", + "id" : 159, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 615, + "column" : 20, + "source_fragment" : "hdr.inner_tcp.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + }, + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 616, + "column" : 34, + "source_fragment" : "= hdr.tcp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 617, + "column" : 20, + "source_fragment" : "hdr.tcp.setInvalid()" + } + } + ] + }, + { + "name" : "upf620", + "id" : 160, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 620, + "column" : 20, + "source_fragment" : "hdr.inner_icmp.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + }, + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 621, + "column" : 35, + "source_fragment" : "= hdr.icmp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 622, + "column" : 20, + "source_fragment" : "hdr.icmp.setInvalid()" + } + } + ] + }, + { + "name" : "upf628", + "id" : 161, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_40"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_upf_ctr_id14"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 628, + "column" : 43, + "source_fragment" : "(bit<32>)fabric_md.bridged.upf.upf_ctr_id" + } + }, + { + "op" : "count", + "parameters" : [ + { + "type" : "counter_array", + "value" : "FabricEgress.upf.terminations_counter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_40"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 628, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + } + } + ] + }, + { + "name" : "int128", + "id" : 162, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_eth_type" + }, + { + "type" : "header", + "value" : "_egress_report_eth_type25" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + }, + { + "type" : "header", + "value" : "_egress_report_mpls26" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_ipv4" + }, + { + "type" : "header", + "value" : "_egress_report_ipv427" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_udp" + }, + { + "type" : "header", + "value" : "_egress_report_udp28" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_fixed_header" + }, + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_common_report_header" + }, + { + "type" : "header", + "value" : "_egress_common_report_header30" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + }, + { + "type" : "header", + "value" : "_egress_local_report_header31" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + }, + { + "type" : "header", + "value" : "_egress_drop_report_header32" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_eth_type" + }, + { + "type" : "header", + "value" : "_egress_eth_type35" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_fabric_md_bridged" + }, + { + "type" : "header", + "value" : "_egress_bridged36" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_fabric_md_int_report_md" + }, + { + "type" : "header", + "value" : "_egress_int_report_md39" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_hop_latency40"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_timestamp41"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "vlan_stripped"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_vlan_stripped42"] + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "queue_report"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_queue_report43"] + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_fabric_md_pkt_length"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_pkt_length46"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_egress_qid"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 135, + "column" : 4, + "source_fragment" : "QueueId_t egress_qid = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "-", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 365, + "column" : 8, + "source_fragment" : "fabric_md.int_md.hop_latency = standard_md.egress_global_timestamp[31:0] - fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 366, + "column" : 8, + "source_fragment" : "fabric_md.int_md.timestamp = standard_md.egress_global_timestamp" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "key_0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "-", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 166, + "column" : 12, + "source_fragment" : " fabric_md.int_md.hop_latency[31:16]: range @name(\\\"hop_latency_upper\\\");" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "key_1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "-", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 167, + "column" : 12, + "source_fragment" : " fabric_md.int_md.hop_latency[15:0]: range @name(\\\"hop_latency_lower\\\");" + } + } + ] + }, + { + "name" : "int383", + "id" : 163, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_41"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_mirror_session_id22"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 384, + "column" : 20, + "source_fragment" : "(bit<32>)fabric_md.bridged.int_bmd.mirror_session_id" + } + }, + { + "op" : "clone_egress_pkt_to_egress", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_41"] + }, + { + "type" : "hexstr", + "value" : "0x1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 383, + "column" : 16, + "source_fragment" : "clone_preserving_field_list(CloneType.E2E, ..." + } + } + ] + }, + { + "name" : "int373", + "id" : 164, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "hexstr", + "value" : "0x00" + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x7" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 373, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.hw_id = 4w0 ++ standard_md.egress_spec[8:7]" + } + } + ] + }, + { + "name" : "slicing217", + "id" : 165, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "field", + "value" : ["scalars", "dscp_rewriter_tmp_dscp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 217, + "column" : 16, + "source_fragment" : "hdr.ipv4.dscp = tmp_dscp" + } + } + ] + }, + { + "name" : "slicing189", + "id" : 166, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_bridged36" + }, + { + "type" : "header", + "value" : "int_egress_fabric_md_bridged" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_int_report_md39" + }, + { + "type" : "header", + "value" : "int_egress_fabric_md_int_report_md" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_hop_latency40"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_timestamp41"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_eth_type25" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_mpls26" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ipv427" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_udp28" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_common_report_header30" + }, + { + "type" : "header", + "value" : "int_egress_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_local_report_header31" + }, + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_drop_report_header32" + }, + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_eth_type35" + }, + { + "type" : "header", + "value" : "int_egress_hdr_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "dscp_rewriter_tmp_dscp"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_slice_tc12"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 189, + "column" : 4, + "source_fragment" : "bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc;" + } + } + ] + }, + { + "name" : "fabric_v1model170", + "id" : 167, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x5" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 170, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + } + } + ] + }, + { + "name" : "fabric_v1model174", + "id" : 168, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + } + } + ] + } + ], + "pipelines" : [ + { + "name" : "ingress", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 35, + "column" : 8, + "source_fragment" : "FabricIngress" + }, + "init_table" : "tbl_fabric_v1model61", + "tables" : [ + { + "name" : "tbl_fabric_v1model61", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "mark_to_drop(standard_md)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [73], + "actions" : ["fabric_v1model61"], + "base_default_next" : "node_3", + "next_tables" : { + "fabric_v1model61" : "node_3" + }, + "default_entry" : { + "action_id" : 73, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model64", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 64, + "column" : 12, + "source_fragment" : "exit" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [72], + "actions" : ["fabric_v1model64"], + "base_default_next" : "node_5", + "next_tables" : { + "fabric_v1model64" : "node_5" + }, + "default_entry" : { + "action_id" : 72, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model70", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 70, + "column" : 51, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [74], + "actions" : ["fabric_v1model70"], + "base_default_next" : "tbl_lookup_md_init15", + "next_tables" : { + "fabric_v1model70" : "tbl_lookup_md_init15" + }, + "default_entry" : { + "action_id" : 74, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init15", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 15, + "column" : 23, + "source_fragment" : "= hdr.ethernet.dst_addr; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [76], + "actions" : ["lookup_md_init15"], + "base_default_next" : "node_8", + "next_tables" : { + "lookup_md_init15" : "node_8" + }, + "default_entry" : { + "action_id" : 76, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init21", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 21, + "column" : 27, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [75], + "actions" : ["lookup_md_init21"], + "base_default_next" : "tbl_lookup_md_init24", + "next_tables" : { + "lookup_md_init21" : "tbl_lookup_md_init24" + }, + "default_entry" : { + "action_id" : 75, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init24", + "id" : 5, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 24, + "column" : 23, + "source_fragment" : "= false; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [85], + "actions" : ["lookup_md_init24"], + "base_default_next" : "node_11", + "next_tables" : { + "lookup_md_init24" : "node_11" + }, + "default_entry" : { + "action_id" : 85, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init33", + "id" : 6, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 33, + "column" : 27, + "source_fragment" : "= true; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [80], + "actions" : ["lookup_md_init33"], + "base_default_next" : "node_13", + "next_tables" : { + "lookup_md_init33" : "node_13" + }, + "default_entry" : { + "action_id" : 80, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init38", + "id" : 7, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 38, + "column" : 32, + "source_fragment" : "= hdr.inner_tcp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [77], + "actions" : ["lookup_md_init38"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init38" : "node_27" + }, + "default_entry" : { + "action_id" : 77, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init41", + "id" : 8, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 41, + "column" : 32, + "source_fragment" : "= hdr.inner_udp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [78], + "actions" : ["lookup_md_init41"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init41" : "node_27" + }, + "default_entry" : { + "action_id" : 78, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init44", + "id" : 9, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 44, + "column" : 33, + "source_fragment" : "= hdr.inner_icmp.icmp_type; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [79], + "actions" : ["lookup_md_init44"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init44" : "node_27" + }, + "default_entry" : { + "action_id" : 79, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init48", + "id" : 10, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 48, + "column" : 27, + "source_fragment" : "= true; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [84], + "actions" : ["lookup_md_init48"], + "base_default_next" : "node_21", + "next_tables" : { + "lookup_md_init48" : "node_21" + }, + "default_entry" : { + "action_id" : 84, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init53", + "id" : 11, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 53, + "column" : 32, + "source_fragment" : "= hdr.tcp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [81], + "actions" : ["lookup_md_init53"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init53" : "node_27" + }, + "default_entry" : { + "action_id" : 81, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init56", + "id" : 12, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 56, + "column" : 32, + "source_fragment" : "= hdr.udp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [82], + "actions" : ["lookup_md_init56"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init56" : "node_27" + }, + "default_entry" : { + "action_id" : 82, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init59", + "id" : 13, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 59, + "column" : 33, + "source_fragment" : "= hdr.icmp.icmp_type; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [83], + "actions" : ["lookup_md_init59"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init59" : "node_27" + }, + "default_entry" : { + "action_id" : 83, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_pkt_io_do_packet_out", + "id" : 14, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 25, + "column" : 12, + "source_fragment" : "do_packet_out()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [9], + "actions" : ["FabricIngress.pkt_io.do_packet_out"], + "base_default_next" : "FabricIngress.int_watchlist.watchlist", + "next_tables" : { + "FabricIngress.pkt_io.do_packet_out" : "FabricIngress.int_watchlist.watchlist" + }, + "default_entry" : { + "action_id" : 9, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.int_watchlist.watchlist", + "id" : 15, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 34, + "column" : 10, + "source_fragment" : "watchlist" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ipv4_valid", + "target" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + } + ], + "match_type" : "range", + "type" : "simple", + "max_size" : 64, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [68, 70, 69], + "actions" : ["FabricIngress.int_watchlist.mark_to_report", "FabricIngress.int_watchlist.no_report_collector", "FabricIngress.int_watchlist.no_report"], + "base_default_next" : "FabricIngress.stats.flows", + "next_tables" : { + "FabricIngress.int_watchlist.mark_to_report" : "FabricIngress.stats.flows", + "FabricIngress.int_watchlist.no_report_collector" : "FabricIngress.stats.flows", + "FabricIngress.int_watchlist.no_report" : "FabricIngress.stats.flows" + }, + "default_entry" : { + "action_id" : 69, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.stats.flows", + "id" : 16, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 21, + "column" : 10, + "source_fragment" : "flows" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [8], + "actions" : ["FabricIngress.stats.count"], + "base_default_next" : "FabricIngress.slice_tc_classifier.classifier", + "next_tables" : { + "FabricIngress.stats.count" : "FabricIngress.slice_tc_classifier.classifier" + }, + "default_entry" : { + "action_id" : 8, + "action_const" : true, + "action_data" : ["0x0"], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.slice_tc_classifier.classifier", + "id" : 17, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 44, + "column" : 10, + "source_fragment" : "classifier" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 512, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [37, 39, 38], + "actions" : ["FabricIngress.slice_tc_classifier.set_slice_id_tc", "FabricIngress.slice_tc_classifier.trust_dscp", "FabricIngress.slice_tc_classifier.no_classification"], + "base_default_next" : "FabricIngress.filtering.ingress_port_vlan", + "next_tables" : { + "FabricIngress.slice_tc_classifier.set_slice_id_tc" : "FabricIngress.filtering.ingress_port_vlan", + "FabricIngress.slice_tc_classifier.trust_dscp" : "FabricIngress.filtering.ingress_port_vlan", + "FabricIngress.slice_tc_classifier.no_classification" : "FabricIngress.filtering.ingress_port_vlan" + }, + "default_entry" : { + "action_id" : 38, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.filtering.ingress_port_vlan", + "id" : 18, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 42, + "column" : 10, + "source_fragment" : "ingress_port_vlan" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "vlan_is_valid", + "target" : ["_ingress_vlan_tag4", "$valid$"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "vlan_id", + "target" : ["_ingress_vlan_tag4", "vlan_id"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [10, 11, 12], + "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"], + "base_default_next" : "FabricIngress.filtering.fwd_classifier", + "next_tables" : { + "FabricIngress.filtering.deny" : "FabricIngress.filtering.fwd_classifier", + "FabricIngress.filtering.permit" : "FabricIngress.filtering.fwd_classifier", + "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier" + }, + "default_entry" : { + "action_id" : 10, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.filtering.fwd_classifier", + "id" : 19, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 80, + "column" : 10, + "source_fragment" : "fwd_classifier" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_dst", + "target" : ["_ingress_ethernet3", "dst_addr"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_type", + "target" : ["_ingress_eth_type5", "value"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "ip_eth_type", + "target" : ["_ingress_bridged4", "_base_ip_eth_type10"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [13], + "actions" : ["FabricIngress.filtering.set_forwarding_type"], + "base_default_next" : "tbl_filtering100", + "next_tables" : { + "FabricIngress.filtering.set_forwarding_type" : "tbl_filtering100" + }, + "default_entry" : { + "action_id" : 13, + "action_const" : true, + "action_data" : ["0x0"], + "action_entry_const" : true + } + }, + { + "name" : "tbl_filtering100", + "id" : 20, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 100, + "column" : 8, + "source_fragment" : "fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [94], + "actions" : ["filtering100"], + "base_default_next" : "node_35", + "next_tables" : { + "filtering100" : "node_35" + }, + "default_entry" : { + "action_id" : 94, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf25", + "id" : 21, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 25, + "column" : 4, + "source_fragment" : "bool is_uplink = false; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [93], + "actions" : ["upf25"], + "base_default_next" : "node_37", + "next_tables" : { + "upf25" : "node_37" + }, + "default_entry" : { + "action_id" : 93, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.interfaces", + "id" : 22, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 107, + "column" : 10, + "source_fragment" : "interfaces" + }, + "key" : [ + { + "match_type" : "lpm", + "name" : "ipv4_dst_addr", + "target" : ["_ingress_ipv47", "dst_addr"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "gtpu_is_valid", + "target" : ["_ingress_gtpu12", "$valid$"], + "mask" : null + } + ], + "match_type" : "lpm", + "type" : "simple", + "max_size" : 64, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [45, 46, 47, 48], + "actions" : ["FabricIngress.upf.iface_access", "FabricIngress.upf.iface_core", "FabricIngress.upf.iface_dbuf", "FabricIngress.upf.iface_miss"], + "base_default_next" : "FabricIngress.upf.applications", + "next_tables" : { + "FabricIngress.upf.iface_access" : "tbl_upf409", + "FabricIngress.upf.iface_core" : "tbl_upf418", + "FabricIngress.upf.iface_dbuf" : "tbl_upf424", + "FabricIngress.upf.iface_miss" : "FabricIngress.upf.applications" + }, + "default_entry" : { + "action_id" : 48, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf409", + "id" : 23, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 409, + "column" : 30, + "source_fragment" : "= true; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [86], + "actions" : ["upf409"], + "base_default_next" : "node_40", + "next_tables" : { + "upf409" : "node_40" + }, + "default_entry" : { + "action_id" : 86, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.uplink_sessions", + "id" : 24, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 213, + "column" : 10, + "source_fragment" : "uplink_sessions" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "tunnel_ipv4_dst", + "target" : ["_ingress_ipv47", "dst_addr"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "teid", + "target" : ["_ingress_gtpu12", "teid"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [56, 50, 49], + "actions" : ["FabricIngress.upf.set_uplink_session", "FabricIngress.upf.set_uplink_session_drop", "FabricIngress.upf.set_uplink_session_miss"], + "base_default_next" : "FabricIngress.upf.applications", + "next_tables" : { + "FabricIngress.upf.set_uplink_session" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_uplink_session_drop" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_uplink_session_miss" : "FabricIngress.upf.applications" + }, + "default_entry" : { + "action_id" : 49, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf418", + "id" : 25, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 418, + "column" : 34, + "source_fragment" : "= fabric_md.lkp.ipv4_src; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [87], + "actions" : ["upf418"], + "base_default_next" : "FabricIngress.upf.downlink_sessions", + "next_tables" : { + "upf418" : "FabricIngress.upf.downlink_sessions" + }, + "default_entry" : { + "action_id" : 87, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.downlink_sessions", + "id" : 26, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 198, + "column" : 10, + "source_fragment" : "downlink_sessions" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ue_addr", + "target" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [53, 54, 55, 52, 51], + "actions" : ["FabricIngress.upf.set_downlink_session", "FabricIngress.upf.set_downlink_session_buf", "FabricIngress.upf.set_downlink_session_buf_drop", "FabricIngress.upf.set_downlink_session_drop", "FabricIngress.upf.set_downlink_session_miss"], + "base_default_next" : "FabricIngress.upf.applications", + "next_tables" : { + "FabricIngress.upf.set_downlink_session" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_buf" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_buf_drop" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_drop" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_miss" : "FabricIngress.upf.applications" + }, + "default_entry" : { + "action_id" : 51, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf424", + "id" : 27, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 424, + "column" : 34, + "source_fragment" : "= fabric_md.lkp.ipv4_src; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [88], + "actions" : ["upf424"], + "base_default_next" : "FabricIngress.upf.downlink_sessions", + "next_tables" : { + "upf424" : "FabricIngress.upf.downlink_sessions" + }, + "default_entry" : { + "action_id" : 88, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.applications", + "id" : 28, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 337, + "column" : 10, + "source_fragment" : "applications" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "slice_id", + "target" : ["scalars", "userMetadata._ingress_upf_slice_id30"], + "mask" : null + }, + { + "match_type" : "lpm", + "name" : "app_ipv4_addr", + "target" : ["scalars", "upf_app_ipv4_addr"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "app_l4_port", + "target" : ["scalars", "upf_app_l4_port"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "app_ip_proto", + "target" : ["scalars", "upf_app_ip_proto"], + "mask" : null + } + ], + "match_type" : "range", + "type" : "simple", + "max_size" : 5, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [64, 5], + "actions" : ["FabricIngress.upf.set_app_id", "nop"], + "base_default_next" : "node_47", + "next_tables" : { + "FabricIngress.upf.set_app_id" : "node_47", + "nop" : "node_47" + }, + "default_entry" : { + "action_id" : 5, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.uplink_terminations", + "id" : 29, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 280, + "column" : 10, + "source_fragment" : "uplink_terminations" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ue_session_id", + "target" : ["scalars", "upf_ue_session_id"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "app_id", + "target" : ["scalars", "upf_internal_app_id"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [61, 59, 57], + "actions" : ["FabricIngress.upf.app_fwd", "FabricIngress.upf.uplink_drop", "FabricIngress.upf.uplink_drop_miss"], + "base_default_next" : "FabricIngress.upf.uplink_recirc_rules", + "next_tables" : { + "FabricIngress.upf.app_fwd" : "FabricIngress.upf.uplink_recirc_rules", + "FabricIngress.upf.uplink_drop" : "FabricIngress.upf.uplink_recirc_rules", + "FabricIngress.upf.uplink_drop_miss" : "FabricIngress.upf.uplink_recirc_rules" + }, + "default_entry" : { + "action_id" : 57, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.uplink_recirc_rules", + "id" : 30, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 387, + "column" : 10, + "source_fragment" : "uplink_recirc_rules" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 64, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [65, 66, 67], + "actions" : ["FabricIngress.upf.recirc_allow", "FabricIngress.upf.recirc_deny", "FabricIngress.upf.recirc_miss"], + "base_default_next" : "tbl_upf445", + "next_tables" : { + "FabricIngress.upf.recirc_allow" : "tbl_upf445", + "FabricIngress.upf.recirc_deny" : "tbl_upf445", + "FabricIngress.upf.recirc_miss" : "tbl_upf445" + }, + "default_entry" : { + "action_id" : 67, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.downlink_terminations", + "id" : 31, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 295, + "column" : 10, + "source_fragment" : "downlink_terminations" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ue_session_id", + "target" : ["scalars", "upf_ue_session_id"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "app_id", + "target" : ["scalars", "upf_internal_app_id"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [62, 60, 58], + "actions" : ["FabricIngress.upf.downlink_fwd_encap", "FabricIngress.upf.downlink_drop", "FabricIngress.upf.downlink_drop_miss"], + "base_default_next" : "tbl_upf445", + "next_tables" : { + "FabricIngress.upf.downlink_fwd_encap" : "tbl_upf445", + "FabricIngress.upf.downlink_drop" : "tbl_upf445", + "FabricIngress.upf.downlink_drop_miss" : "tbl_upf445" + }, + "default_entry" : { + "action_id" : 58, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf443", + "id" : 32, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 443, + "column" : 58, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [89], + "actions" : ["upf443"], + "base_default_next" : "tbl_upf445", + "next_tables" : { + "upf443" : "tbl_upf445" + }, + "default_entry" : { + "action_id" : 89, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf445", + "id" : 33, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 445, + "column" : 12, + "source_fragment" : "app_meter.execute_meter((bit<32>) app_meter_idx_internal, fabric_md.upf_meter_color)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [91], + "actions" : ["upf445"], + "base_default_next" : "node_54", + "next_tables" : { + "upf445" : "node_54" + }, + "default_entry" : { + "action_id" : 91, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf448", + "id" : 34, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 448, + "column" : 16, + "source_fragment" : "session_meter.execute_meter((bit<32>) session_meter_idx_internal, fabric_md.upf_meter_color)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [90], + "actions" : ["upf448"], + "base_default_next" : "FabricIngress.upf.ig_tunnel_peers", + "next_tables" : { + "upf448" : "FabricIngress.upf.ig_tunnel_peers" + }, + "default_entry" : { + "action_id" : 90, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.ig_tunnel_peers", + "id" : 35, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 317, + "column" : 10, + "source_fragment" : "ig_tunnel_peers" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "tun_peer_id", + "target" : ["_ingress_bridged4", "_upf_tun_peer_id13"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 256, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [63, 4], + "actions" : ["FabricIngress.upf.set_routing_ipv4_dst", "nop"], + "base_default_next" : "node_57", + "next_tables" : { + "FabricIngress.upf.set_routing_ipv4_dst" : "node_57", + "nop" : "node_57" + }, + "default_entry" : { + "action_id" : 4, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf461", + "id" : 36, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 461, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [92], + "actions" : ["upf461"], + "base_default_next" : "node_59", + "next_tables" : { + "upf461" : "node_59" + }, + "default_entry" : { + "action_id" : 92, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.forwarding.bridging", + "id" : 37, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 39, + "column" : 10, + "source_fragment" : "bridging" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "vlan_id", + "target" : ["_ingress_bridged4", "_base_vlan_id6"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_dst", + "target" : ["_ingress_ethernet3", "dst_addr"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [18, 14], + "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.set_next_id_bridging" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 14, + "action_const" : true, + "action_data" : ["0x59"], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.forwarding.mpls", + "id" : 38, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 74, + "column" : 10, + "source_fragment" : "mpls" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "mpls_label", + "target" : ["_ingress_bridged4", "_base_mpls_label2"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [19, 15], + "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 15, + "action_const" : true, + "action_data" : ["0x81"], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.forwarding.routing_v4", + "id" : 39, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 116, + "column" : 10, + "source_fragment" : "routing_v4" + }, + "key" : [ + { + "match_type" : "lpm", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"], + "mask" : null + } + ], + "match_type" : "lpm", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [20, 21, 22, 16], + "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "FabricIngress.forwarding.drop_routing_v4", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_hasher17", + "FabricIngress.forwarding.nop_routing_v4" : "tbl_hasher17", + "FabricIngress.forwarding.drop_routing_v4" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 16, + "action_const" : false, + "action_data" : ["0x1d"], + "action_entry_const" : false + } + }, + { + "name" : "FabricIngress.forwarding.routing_v6", + "id" : 40, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 155, + "column" : 10, + "source_fragment" : "routing_v6" + }, + "key" : [ + { + "match_type" : "lpm", + "name" : "ipv6_dst", + "target" : ["_ingress_ipv68", "dst_addr"], + "mask" : null + } + ], + "match_type" : "lpm", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [23, 24, 17], + "actions" : ["FabricIngress.forwarding.set_next_id_routing_v6", "FabricIngress.forwarding.drop_routing_v6", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.set_next_id_routing_v6" : "tbl_hasher17", + "FabricIngress.forwarding.drop_routing_v6" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 17, + "action_const" : false, + "action_data" : ["0x1d"], + "action_entry_const" : false + } + }, + { + "name" : "tbl_hasher17", + "id" : 41, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "hash( ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [99], + "actions" : ["hasher17"], + "base_default_next" : "node_69", + "next_tables" : { + "hasher17" : "node_69" + }, + "default_entry" : { + "action_id" : 99, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher28", + "id" : 42, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 28, + "column" : 12, + "source_fragment" : "hash( ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [95], + "actions" : ["hasher28"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher28" : "node_76" + }, + "default_entry" : { + "action_id" : 95, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher39", + "id" : 43, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 39, + "column" : 12, + "source_fragment" : "hash( ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [96], + "actions" : ["hasher39"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher39" : "node_76" + }, + "default_entry" : { + "action_id" : 96, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher50", + "id" : 44, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 50, + "column" : 32, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [97], + "actions" : ["hasher50"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher50" : "node_76" + }, + "default_entry" : { + "action_id" : 97, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher66", + "id" : 45, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 66, + "column" : 46, + "source_fragment" : "= 0; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [98], + "actions" : ["hasher66"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher66" : "node_76" + }, + "default_entry" : { + "action_id" : 98, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.pre_next.next_mpls", + "id" : 46, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 22, + "column" : 10, + "source_fragment" : "next_mpls" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [25, 0], + "actions" : ["FabricIngress.pre_next.set_mpls_label", "nop"], + "base_default_next" : "FabricIngress.pre_next.next_vlan", + "next_tables" : { + "FabricIngress.pre_next.set_mpls_label" : "FabricIngress.pre_next.next_vlan", + "nop" : "FabricIngress.pre_next.next_vlan" + }, + "default_entry" : { + "action_id" : 0, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.pre_next.next_vlan", + "id" : 47, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 54, + "column" : 10, + "source_fragment" : "next_vlan" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [26, 1], + "actions" : ["FabricIngress.pre_next.set_vlan", "nop"], + "base_default_next" : "FabricIngress.acl.acl", + "next_tables" : { + "FabricIngress.pre_next.set_vlan" : "FabricIngress.acl.acl", + "nop" : "FabricIngress.acl.acl" + }, + "default_entry" : { + "action_id" : 1, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.acl.acl", + "id" : 48, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 74, + "column" : 10, + "source_fragment" : "acl" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_dst", + "target" : ["_ingress_ethernet3", "dst_addr"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_src", + "target" : ["_ingress_ethernet3", "src_addr"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "vlan_id", + "target" : ["scalars", "userMetadata._ingress_lkp_vlan_id9"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_type", + "target" : ["scalars", "userMetadata._ingress_lkp_eth_type8"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "icmp_type", + "target" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "icmp_code", + "target" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ig_port_type", + "target" : ["scalars", "userMetadata._ingress_ig_port_type33"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [27, 29, 28, 30, 31, 32], + "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.copy_to_cpu", "FabricIngress.acl.drop", "FabricIngress.acl.set_output_port", "FabricIngress.acl.nop_acl"], + "base_default_next" : "node_80", + "next_tables" : { + "FabricIngress.acl.set_next_id_acl" : "node_80", + "FabricIngress.acl.punt_to_cpu" : "node_80", + "FabricIngress.acl.copy_to_cpu" : "node_80", + "FabricIngress.acl.drop" : "node_80", + "FabricIngress.acl.set_output_port" : "node_80", + "FabricIngress.acl.nop_acl" : "node_80" + }, + "default_entry" : { + "action_id" : 32, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.next.hashed", + "id" : 49, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 127, + "column" : 10, + "source_fragment" : "hashed" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "indirect_ws", + "action_profile" : "FabricIngress.next.hashed_profile", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [33, 34, 2], + "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "nop"], + "base_default_next" : "FabricIngress.next.multicast", + "next_tables" : { + "FabricIngress.next.output_hashed" : "FabricIngress.next.multicast", + "FabricIngress.next.routing_hashed" : "FabricIngress.next.multicast", + "nop" : "FabricIngress.next.multicast" + } + }, + { + "name" : "FabricIngress.next.multicast", + "id" : 50, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 161, + "column" : 10, + "source_fragment" : "multicast" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [35, 36], + "actions" : ["FabricIngress.next.set_mcast_group_id", "FabricIngress.next.reset_mcast_group_id"], + "base_default_next" : "FabricIngress.qos.set_slice_tc", + "next_tables" : { + "FabricIngress.next.set_mcast_group_id" : "FabricIngress.qos.set_slice_tc", + "FabricIngress.next.reset_mcast_group_id" : "FabricIngress.qos.set_slice_tc" + }, + "default_entry" : { + "action_id" : 36, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.qos.set_slice_tc", + "id" : 51, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 91, + "column" : 10, + "source_fragment" : "set_slice_tc" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "fabric_md.is_upf_hit", + "target" : ["scalars", "userMetadata._ingress_is_upf_hit29"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 2, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [40, 41, 7], + "actions" : ["FabricIngress.qos.use_upf", "FabricIngress.qos.use_default", "NoAction"], + "base_default_next" : "FabricIngress.qos.default_tc", + "next_tables" : { + "FabricIngress.qos.use_upf" : "FabricIngress.qos.default_tc", + "FabricIngress.qos.use_default" : "FabricIngress.qos.default_tc", + "NoAction" : "FabricIngress.qos.default_tc" + }, + "default_entry" : { + "action_id" : 7, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 96, + "column" : 12, + "source_fragment" : "true: use_upf" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + } + ], + "action_entry" : { + "action_id" : 40, + "action_data" : [] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 97, + "column" : 12, + "source_fragment" : "false: use_default" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x00" + } + ], + "action_entry" : { + "action_id" : 41, + "action_data" : [] + }, + "priority" : 2 + } + ] + }, + { + "name" : "FabricIngress.qos.default_tc", + "id" : 52, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 150, + "column" : 10, + "source_fragment" : "default_tc" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "slice_tc", + "target" : ["_ingress_bridged4", "_base_slice_tc12"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "tc_unknown", + "target" : ["scalars", "userMetadata._ingress_tc_unknown28"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 16, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [44, 3], + "actions" : ["FabricIngress.qos.set_default_tc", "nop"], + "base_default_next" : "node_85", + "next_tables" : { + "FabricIngress.qos.set_default_tc" : "node_85", + "nop" : "node_85" + }, + "default_entry" : { + "action_id" : 3, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_slicing174", + "id" : 53, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "slice_tc_meter.execute_meter((bit<32>) fabric_md.bridged.base.slice_tc, packet_color)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [100], + "actions" : ["slicing174"], + "base_default_next" : "FabricIngress.qos.queues", + "next_tables" : { + "slicing174" : "FabricIngress.qos.queues" + }, + "default_entry" : { + "action_id" : 100, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_slicing177", + "id" : 54, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 177, + "column" : 25, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [101], + "actions" : ["slicing177"], + "base_default_next" : "FabricIngress.qos.queues", + "next_tables" : { + "slicing177" : "FabricIngress.qos.queues" + }, + "default_entry" : { + "action_id" : 101, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.qos.queues", + "id" : 55, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 122, + "column" : 10, + "source_fragment" : "queues" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "slice_tc", + "target" : ["_ingress_bridged4", "_base_slice_tc12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "color", + "target" : ["scalars", "qos_packet_color"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 128, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [42, 43], + "actions" : ["FabricIngress.qos.set_queue", "FabricIngress.qos.meter_drop"], + "base_default_next" : "tbl_int112", + "next_tables" : { + "FabricIngress.qos.set_queue" : "tbl_int112", + "FabricIngress.qos.meter_drop" : "tbl_int112" + }, + "default_entry" : { + "action_id" : 42, + "action_const" : true, + "action_data" : ["0x0"], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int112", + "id" : 56, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 112, + "column" : 46, + "source_fragment" : "= standard_md.egress_spec; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [102], + "actions" : ["int112"], + "base_default_next" : "FabricIngress.int_ingress.drop_report", + "next_tables" : { + "int112" : "FabricIngress.int_ingress.drop_report" + }, + "default_entry" : { + "action_id" : 102, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.int_ingress.drop_report", + "id" : 57, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 86, + "column" : 10, + "source_fragment" : "drop_report" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "int_report_type", + "target" : ["_ingress_bridged4", "_int_bmd_report_type21"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "drop_ctl", + "target" : ["scalars", "userMetadata._drop_ctl2"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "punt_to_cpu", + "target" : ["scalars", "userMetadata._ingress_punt_to_cpu23"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "egress_port_set", + "target" : ["scalars", "userMetadata._ingress_egress_port_set22"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "mcast_group_id", + "target" : ["standard_metadata", "mcast_grp"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 3, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [71, 6], + "actions" : ["FabricIngress.int_ingress.report_drop", "nop"], + "base_default_next" : "tbl_fabric_v1model106", + "next_tables" : { + "FabricIngress.int_ingress.report_drop" : "tbl_fabric_v1model106", + "nop" : "tbl_fabric_v1model106" + }, + "default_entry" : { + "action_id" : 6, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 101, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 1, false, false, _): report_drop()" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "ternary", + "key" : "0x0000", + "mask" : "0x0000" + } + ], + "action_entry" : { + "action_id" : 71, + "action_data" : [] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 102, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 1, false, true, _): report_drop()" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "ternary", + "key" : "0x0000", + "mask" : "0x0000" + } + ], + "action_entry" : { + "action_id" : 71, + "action_data" : [] + }, + "priority" : 2 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 104, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 0, false, false, 0): report_drop()" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "ternary", + "key" : "0x0000", + "mask" : "0xffff" + } + ], + "action_entry" : { + "action_id" : 71, + "action_data" : [] + }, + "priority" : 3 + } + ] + }, + { + "name" : "tbl_fabric_v1model106", + "id" : 58, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 106, + "column" : 33, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [104], + "actions" : ["fabric_v1model106"], + "base_default_next" : "node_92", + "next_tables" : { + "fabric_v1model106" : "node_92" + }, + "default_entry" : { + "action_id" : 104, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model110", + "id" : 59, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 110, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [103], + "actions" : ["fabric_v1model110"], + "base_default_next" : null, + "next_tables" : { + "fabric_v1model110" : null + }, + "default_entry" : { + "action_id" : 103, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + } + ], + "action_profiles" : [ + { + "name" : "FabricIngress.next.hashed_profile", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 112, + "column" : 15, + "source_fragment" : "hashed_profile" + }, + "max_size" : 16, + "selector" : { + "algo" : "crc16", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + } + ] + } + } + ], + "conditionals" : [ + { + "name" : "node_3", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 62, + "column" : 12, + "source_fragment" : "standard_md.parser_error == error.PacketRejectedByParser" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "parser_error"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x8" + } + } + }, + "true_next" : "tbl_fabric_v1model64", + "false_next" : "node_5" + }, + { + "name" : "node_5", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 67, + "column" : 13, + "source_fragment" : "standard_md.instance_type == 4" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "instance_type"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000004" + } + } + }, + "true_next" : "tbl_fabric_v1model70", + "false_next" : "tbl_lookup_md_init15" + }, + { + "name" : "node_8", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 20, + "column" : 12, + "source_fragment" : "hdr.vlan_tag.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init21", + "false_next" : "tbl_lookup_md_init24" + }, + { + "name" : "node_11", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 32, + "column" : 12, + "source_fragment" : "hdr.inner_ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init33", + "false_next" : "node_19" + }, + { + "name" : "node_13", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 37, + "column" : 16, + "source_fragment" : "hdr.inner_tcp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_tcp19", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init38", + "false_next" : "node_15" + }, + { + "name" : "node_15", + "id" : 5, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 40, + "column" : 23, + "source_fragment" : "hdr.inner_udp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_udp20", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init41", + "false_next" : "node_17" + }, + { + "name" : "node_17", + "id" : 6, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 43, + "column" : 23, + "source_fragment" : "hdr.inner_icmp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_icmp21", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init44", + "false_next" : "node_27" + }, + { + "name" : "node_19", + "id" : 7, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 47, + "column" : 19, + "source_fragment" : "hdr.ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init48", + "false_next" : "node_27" + }, + { + "name" : "node_21", + "id" : 8, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 52, + "column" : 16, + "source_fragment" : "hdr.tcp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_tcp9", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init53", + "false_next" : "node_23" + }, + { + "name" : "node_23", + "id" : 9, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 55, + "column" : 23, + "source_fragment" : "hdr.udp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_udp10", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init56", + "false_next" : "node_25" + }, + { + "name" : "node_25", + "id" : 10, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 58, + "column" : 23, + "source_fragment" : "hdr.icmp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_icmp11", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init59", + "false_next" : "node_27" + }, + { + "name" : "node_27", + "id" : 11, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 24, + "column" : 12, + "source_fragment" : "hdr.packet_out.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_packet_out0", "$valid$"] + } + } + }, + "true_next" : "tbl_pkt_io_do_packet_out", + "false_next" : "FabricIngress.int_watchlist.watchlist" + }, + { + "name" : "node_35", + "id" : 12, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 84, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + } + } + }, + "false_next" : "tbl_upf25", + "true_next" : "node_59" + }, + { + "name" : "node_37", + "id" : 13, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 406, + "column" : 12, + "source_fragment" : "hdr.ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "true_next" : "FabricIngress.upf.interfaces", + "false_next" : "node_59" + }, + { + "name" : "node_40", + "id" : 14, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 413, + "column" : 24, + "source_fragment" : "fabric_md.bridged.base.encap_presence != EncapPresence.NONE" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "FabricIngress.upf.uplink_sessions", + "false_next" : "FabricIngress.upf.applications" + }, + { + "name" : "node_47", + "id" : 15, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 433, + "column" : 16, + "source_fragment" : "sess_hit" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + } + } + }, + "true_next" : "node_48", + "false_next" : "tbl_upf443" + }, + { + "name" : "node_48", + "id" : 16, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 434, + "column" : 20, + "source_fragment" : "is_uplink" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "upf_is_uplink"] + } + } + }, + "true_next" : "FabricIngress.upf.uplink_terminations", + "false_next" : "FabricIngress.upf.downlink_terminations" + }, + { + "name" : "node_54", + "id" : 17, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 446, + "column" : 16, + "source_fragment" : "fabric_md.upf_meter_color != MeterColor_t.RED" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + }, + "true_next" : "tbl_upf448", + "false_next" : "FabricIngress.upf.ig_tunnel_peers" + }, + { + "name" : "node_57", + "id" : 18, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 451, + "column" : 16, + "source_fragment" : "term_hit" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + } + } + }, + "true_next" : "tbl_upf461", + "false_next" : "node_59" + }, + { + "name" : "node_59", + "id" : 19, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 88, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + } + } + }, + "false_next" : "node_60", + "true_next" : "tbl_hasher17" + }, + { + "name" : "node_60", + "id" : 20, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 178, + "column" : 12, + "source_fragment" : "hdr.ethernet.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ethernet3", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.bridging", + "false_next" : "node_62" + }, + { + "name" : "node_62", + "id" : 21, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 181, + "column" : 19, + "source_fragment" : "hdr.mpls.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_mpls6", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.mpls", + "false_next" : "node_64" + }, + { + "name" : "node_64", + "id" : 22, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 184, + "column" : 19, + "source_fragment" : "fabric_md.lkp.is_ipv4 && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.routing_v4", + "false_next" : "node_66" + }, + { + "name" : "node_66", + "id" : 23, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 188, + "column" : 19, + "source_fragment" : "hdr.ipv6.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv68", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.routing_v6", + "false_next" : "tbl_hasher17" + }, + { + "name" : "node_69", + "id" : 24, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 27, + "column" : 12, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_needs_gtpu_encap16"] + } + } + }, + "true_next" : "tbl_hasher28", + "false_next" : "node_71" + }, + { + "name" : "node_71", + "id" : 25, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 38, + "column" : 12, + "source_fragment" : "hdr.gtpu.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_gtpu12", "$valid$"] + } + } + }, + "true_next" : "tbl_hasher39", + "false_next" : "node_73" + }, + { + "name" : "node_73", + "id" : 26, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + } + } + }, + "true_next" : "tbl_hasher50", + "false_next" : "tbl_hasher66" + }, + { + "name" : "node_76", + "id" : 27, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 92, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + } + } + }, + "false_next" : "FabricIngress.pre_next.next_mpls", + "true_next" : "FabricIngress.acl.acl" + }, + { + "name" : "node_80", + "id" : 28, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 96, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + } + } + }, + "false_next" : "FabricIngress.next.hashed", + "true_next" : "FabricIngress.qos.set_slice_tc" + }, + { + "name" : "node_85", + "id" : 29, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 173, + "column" : 12, + "source_fragment" : "fabric_md.upf_meter_color != MeterColor_t.RED" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + }, + "true_next" : "tbl_slicing174", + "false_next" : "tbl_slicing177" + }, + { + "name" : "node_92", + "id" : 30, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 109, + "column" : 12, + "source_fragment" : "fabric_md.drop_ctl == 1" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + }, + "false_next" : null, + "true_next" : "tbl_fabric_v1model110" + } + ] + }, + { + "name" : "egress", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 115, + "column" : 8, + "source_fragment" : "FabricEgress" + }, + "init_table" : "tbl_fabric_v1model133", + "tables" : [ + { + "name" : "tbl_fabric_v1model133", + "id" : 60, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 133, + "column" : 34, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [138], + "actions" : ["fabric_v1model133"], + "base_default_next" : "node_97", + "next_tables" : { + "fabric_v1model133" : "node_97" + }, + "default_entry" : { + "action_id" : 138, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model136", + "id" : 61, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 136, + "column" : 12, + "source_fragment" : "exit" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [137], + "actions" : ["fabric_v1model136"], + "base_default_next" : "node_99", + "next_tables" : { + "fabric_v1model136" : "node_99" + }, + "default_entry" : { + "action_id" : 137, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator14", + "id" : 62, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [140], + "actions" : ["int_tna_parser_emulator14"], + "base_default_next" : "node_101", + "next_tables" : { + "int_tna_parser_emulator14" : "node_101" + }, + "default_entry" : { + "action_id" : 140, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator148", + "id" : 63, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [139], + "actions" : ["int_tna_parser_emulator148"], + "base_default_next" : "node_103", + "next_tables" : { + "int_tna_parser_emulator148" : "node_103" + }, + "default_entry" : { + "action_id" : 139, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_ingress_drop", + "id" : 64, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 165, + "column" : 12, + "source_fragment" : "parse_int_ingress_drop()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [124], + "actions" : ["FabricEgress.parser_emulator.parse_int_ingress_drop"], + "base_default_next" : "tbl_int_tna_parser_emulator166", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_ingress_drop" : "tbl_int_tna_parser_emulator166" + }, + "default_entry" : { + "action_id" : 124, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator166", + "id" : 65, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [141], + "actions" : ["int_tna_parser_emulator166"], + "base_default_next" : "tbl_int_tna_parser_emulator173", + "next_tables" : { + "int_tna_parser_emulator166" : "tbl_int_tna_parser_emulator173" + }, + "default_entry" : { + "action_id" : 141, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_report_mirror", + "id" : 66, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 168, + "column" : 12, + "source_fragment" : "parse_int_report_mirror()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [126], + "actions" : ["FabricEgress.parser_emulator.parse_int_report_mirror"], + "base_default_next" : "tbl_int_tna_parser_emulator169", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_report_mirror" : "tbl_int_tna_parser_emulator169" + }, + "default_entry" : { + "action_id" : 126, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator169", + "id" : 67, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [142], + "actions" : ["int_tna_parser_emulator169"], + "base_default_next" : "tbl_int_tna_parser_emulator173", + "next_tables" : { + "int_tna_parser_emulator169" : "tbl_int_tna_parser_emulator173" + }, + "default_entry" : { + "action_id" : 142, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator173", + "id" : 68, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [143], + "actions" : ["int_tna_parser_emulator173"], + "base_default_next" : "node_109", + "next_tables" : { + "int_tna_parser_emulator173" : "node_109" + }, + "default_entry" : { + "action_id" : 143, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator14_0", + "id" : 69, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [145], + "actions" : ["int_tna_parser_emulator14_0"], + "base_default_next" : "node_111", + "next_tables" : { + "int_tna_parser_emulator14_0" : "node_111" + }, + "default_entry" : { + "action_id" : 145, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator148_0", + "id" : 70, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [144], + "actions" : ["int_tna_parser_emulator148_0"], + "base_default_next" : "node_113", + "next_tables" : { + "int_tna_parser_emulator148_0" : "node_113" + }, + "default_entry" : { + "action_id" : 144, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_ingress_drop_0", + "id" : 71, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 165, + "column" : 12, + "source_fragment" : "parse_int_ingress_drop()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [125], + "actions" : ["FabricEgress.parser_emulator.parse_int_ingress_drop"], + "base_default_next" : "tbl_int_tna_parser_emulator166_0", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_ingress_drop" : "tbl_int_tna_parser_emulator166_0" + }, + "default_entry" : { + "action_id" : 125, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator166_0", + "id" : 72, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [146], + "actions" : ["int_tna_parser_emulator166_0"], + "base_default_next" : "tbl_int_tna_parser_emulator173_0", + "next_tables" : { + "int_tna_parser_emulator166_0" : "tbl_int_tna_parser_emulator173_0" + }, + "default_entry" : { + "action_id" : 146, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_report_mirror_0", + "id" : 73, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 168, + "column" : 12, + "source_fragment" : "parse_int_report_mirror()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [127], + "actions" : ["FabricEgress.parser_emulator.parse_int_report_mirror"], + "base_default_next" : "tbl_int_tna_parser_emulator169_0", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_report_mirror" : "tbl_int_tna_parser_emulator169_0" + }, + "default_entry" : { + "action_id" : 127, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator169_0", + "id" : 74, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [147], + "actions" : ["int_tna_parser_emulator169_0"], + "base_default_next" : "tbl_int_tna_parser_emulator173_0", + "next_tables" : { + "int_tna_parser_emulator169_0" : "tbl_int_tna_parser_emulator173_0" + }, + "default_entry" : { + "action_id" : 147, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator173_0", + "id" : 75, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [148], + "actions" : ["int_tna_parser_emulator173_0"], + "base_default_next" : "FabricEgress.pkt_io_egress.switch_info", + "next_tables" : { + "int_tna_parser_emulator173_0" : "FabricEgress.pkt_io_egress.switch_info" + }, + "default_entry" : { + "action_id" : 148, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.pkt_io_egress.switch_info", + "id" : 76, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 39, + "column" : 10, + "source_fragment" : "switch_info" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [113, 105], + "actions" : ["FabricEgress.pkt_io_egress.set_switch_info", "nop"], + "base_default_next" : "node_120", + "next_tables" : { + "FabricEgress.pkt_io_egress.set_switch_info" : "node_120", + "nop" : "node_120" + }, + "default_entry" : { + "action_id" : 105, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "tbl_packetio51", + "id" : 77, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 51, + "column" : 12, + "source_fragment" : "hdr.packet_in.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [149], + "actions" : ["packetio51"], + "base_default_next" : "node_122", + "next_tables" : { + "packetio51" : "node_122" + }, + "default_entry" : { + "action_id" : 149, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_packetio60", + "id" : 78, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 60, + "column" : 37, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [150], + "actions" : ["packetio60"], + "base_default_next" : "node_124", + "next_tables" : { + "packetio60" : "node_124" + }, + "default_entry" : { + "action_id" : 150, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.stats.flows", + "id" : 79, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 53, + "column" : 10, + "source_fragment" : "flows" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "stats_flow_id", + "target" : ["_egress_bridged36", "_base_stats_flow_id11"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "eg_port", + "target" : ["standard_metadata", "egress_port"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [112], + "actions" : ["FabricEgress.stats.count"], + "base_default_next" : "node_126", + "next_tables" : { + "FabricEgress.stats.count" : "node_126" + }, + "default_entry" : { + "action_id" : 112, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next283", + "id" : 80, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 283, + "column" : 50, + "source_fragment" : "= INT_REPORT_TYPE_NO_REPORT; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [151], + "actions" : ["next283"], + "base_default_next" : "node_128", + "next_tables" : { + "next283" : "node_128" + }, + "default_entry" : { + "action_id" : 151, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_egress_next_pop_mpls_if_present", + "id" : 81, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 289, + "column" : 36, + "source_fragment" : "pop_mpls_if_present()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [114], + "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"], + "base_default_next" : "node_132", + "next_tables" : { + "FabricEgress.egress_next.pop_mpls_if_present" : "node_132" + }, + "default_entry" : { + "action_id" : 114, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_egress_next_set_mpls", + "id" : 82, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 291, + "column" : 12, + "source_fragment" : "set_mpls()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [115], + "actions" : ["FabricEgress.egress_next.set_mpls"], + "base_default_next" : "node_132", + "next_tables" : { + "FabricEgress.egress_next.set_mpls" : "node_132" + }, + "default_entry" : { + "action_id" : 115, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.egress_next.egress_vlan", + "id" : 83, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 264, + "column" : 10, + "source_fragment" : "egress_vlan" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "vlan_id", + "target" : ["_egress_bridged36", "_base_vlan_id6"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "eg_port", + "target" : ["standard_metadata", "egress_port"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [116, 117, 118], + "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"], + "base_default_next" : "node_134", + "next_tables" : { + "FabricEgress.egress_next.push_vlan" : "node_134", + "FabricEgress.egress_next.pop_vlan" : "node_134", + "FabricEgress.egress_next.drop" : "node_134" + }, + "default_entry" : { + "action_id" : 118, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next323", + "id" : 84, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 323, + "column" : 25, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [153], + "actions" : ["next323"], + "base_default_next" : "node_136", + "next_tables" : { + "next323" : "node_136" + }, + "default_entry" : { + "action_id" : 153, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next325", + "id" : 85, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 325, + "column" : 25, + "source_fragment" : "= 1; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [152], + "actions" : ["next325"], + "base_default_next" : "node_148", + "next_tables" : { + "next325" : "node_148" + }, + "default_entry" : { + "action_id" : 152, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next333", + "id" : 86, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 333, + "column" : 33, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [154], + "actions" : ["next333"], + "base_default_next" : "node_141", + "next_tables" : { + "next333" : "node_141" + }, + "default_entry" : { + "action_id" : 154, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next336", + "id" : 87, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 336, + "column" : 29, + "source_fragment" : "= 1; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [155], + "actions" : ["next336"], + "base_default_next" : "node_148", + "next_tables" : { + "next336" : "node_148" + }, + "default_entry" : { + "action_id" : 155, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next343", + "id" : 88, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 343, + "column" : 39, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [156], + "actions" : ["next343"], + "base_default_next" : "node_146", + "next_tables" : { + "next343" : "node_146" + }, + "default_entry" : { + "action_id" : 156, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next346", + "id" : 89, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 346, + "column" : 29, + "source_fragment" : "= 1; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [157], + "actions" : ["next346"], + "base_default_next" : "node_148", + "next_tables" : { + "next346" : "node_148" + }, + "default_entry" : { + "action_id" : 157, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf610", + "id" : 90, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 610, + "column" : 20, + "source_fragment" : "hdr.inner_udp.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [158], + "actions" : ["upf610"], + "base_default_next" : "node_152", + "next_tables" : { + "upf610" : "node_152" + }, + "default_entry" : { + "action_id" : 158, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf615", + "id" : 91, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 615, + "column" : 20, + "source_fragment" : "hdr.inner_tcp.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [159], + "actions" : ["upf615"], + "base_default_next" : "node_154", + "next_tables" : { + "upf615" : "node_154" + }, + "default_entry" : { + "action_id" : 159, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf620", + "id" : 92, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 620, + "column" : 20, + "source_fragment" : "hdr.inner_icmp.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [160], + "actions" : ["upf620"], + "base_default_next" : "FabricEgress.upf.gtpu_encap", + "next_tables" : { + "upf620" : "FabricEgress.upf.gtpu_encap" + }, + "default_entry" : { + "action_id" : 160, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.upf.gtpu_encap", + "id" : 93, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 597, + "column" : 10, + "source_fragment" : "gtpu_encap" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [122, 123], + "actions" : ["FabricEgress.upf.gtpu_only", "FabricEgress.upf.gtpu_with_psc"], + "base_default_next" : "FabricEgress.upf.eg_tunnel_peers", + "next_tables" : { + "FabricEgress.upf.gtpu_only" : "FabricEgress.upf.eg_tunnel_peers", + "FabricEgress.upf.gtpu_with_psc" : "FabricEgress.upf.eg_tunnel_peers" + }, + "default_entry" : { + "action_id" : 122, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "FabricEgress.upf.eg_tunnel_peers", + "id" : 94, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 491, + "column" : 10, + "source_fragment" : "eg_tunnel_peers" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "tun_peer_id", + "target" : ["_egress_bridged36", "_upf_tun_peer_id13"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 256, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [121, 107], + "actions" : ["FabricEgress.upf.load_tunnel_params", "nop"], + "base_default_next" : "node_158", + "next_tables" : { + "FabricEgress.upf.load_tunnel_params" : "node_158", + "nop" : "node_158" + }, + "default_entry" : { + "action_id" : 107, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf628", + "id" : 95, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 628, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [161], + "actions" : ["upf628"], + "base_default_next" : "tbl_int128", + "next_tables" : { + "upf628" : "tbl_int128" + }, + "default_entry" : { + "action_id" : 161, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int128", + "id" : 96, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [162], + "actions" : ["int128"], + "base_default_next" : "FabricEgress.int_egress.queue_latency_thresholds", + "next_tables" : { + "int128" : "FabricEgress.int_egress.queue_latency_thresholds" + }, + "default_entry" : { + "action_id" : 162, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.int_egress.queue_latency_thresholds", + "id" : 97, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 159, + "column" : 10, + "source_fragment" : "queue_latency_thresholds" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "egress_qid", + "target" : ["scalars", "int_egress_egress_qid"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "hop_latency_upper", + "target" : ["scalars", "key_0"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "hop_latency_lower", + "target" : ["scalars", "key_1"], + "mask" : null + } + ], + "match_type" : "range", + "type" : "simple", + "max_size" : 128, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [128, 129, 108], + "actions" : ["FabricEgress.int_egress.check_quota", "FabricEgress.int_egress.reset_quota", "nop"], + "base_default_next" : "FabricEgress.int_egress.config", + "next_tables" : { + "FabricEgress.int_egress.check_quota" : "FabricEgress.int_egress.config", + "FabricEgress.int_egress.reset_quota" : "FabricEgress.int_egress.config", + "nop" : "FabricEgress.int_egress.config" + }, + "default_entry" : { + "action_id" : 108, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "FabricEgress.int_egress.config", + "id" : 98, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 183, + "column" : 10, + "source_fragment" : "config" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [130], + "actions" : ["FabricEgress.int_egress.set_config"], + "base_default_next" : "tbl_int373", + "next_tables" : { + "FabricEgress.int_egress.set_config" : "tbl_int373" + }, + "default_entry" : { + "action_id" : 130, + "action_const" : false, + "action_data" : ["0xffffff00", "0xffffc0000000"], + "action_entry_const" : false + } + }, + { + "name" : "tbl_int373", + "id" : 99, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 373, + "column" : 38, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [164], + "actions" : ["int373"], + "base_default_next" : "node_164", + "next_tables" : { + "int373" : "node_164" + }, + "default_entry" : { + "action_id" : 164, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.int_egress.report", + "id" : 100, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 260, + "column" : 10, + "source_fragment" : "report" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "bmd_type", + "target" : ["int_egress_fabric_md_int_report_md", "bmd_type"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "mirror_type", + "target" : ["int_egress_fabric_md_int_report_md", "mirror_type"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "int_report_type", + "target" : ["int_egress_fabric_md_int_report_md", "report_type"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 6, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [131, 132, 133, 134, 109], + "actions" : ["FabricEgress.int_egress.do_local_report_encap", "FabricEgress.int_egress.do_local_report_encap_mpls", "FabricEgress.int_egress.do_drop_report_encap", "FabricEgress.int_egress.do_drop_report_encap_mpls", "nop"], + "base_default_next" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "next_tables" : { + "FabricEgress.int_egress.do_local_report_encap" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "FabricEgress.int_egress.do_local_report_encap_mpls" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "FabricEgress.int_egress.do_drop_report_encap" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "FabricEgress.int_egress.do_drop_report_encap_mpls" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "nop" : "FabricEgress.int_egress.adjust_int_report_hdr_length" + }, + "default_entry" : { + "action_id" : 109, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "FabricEgress.int_egress.int_metadata", + "id" : 101, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 315, + "column" : 10, + "source_fragment" : "int_metadata" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "int_report_type", + "target" : ["_egress_bridged36", "_int_bmd_report_type21"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "drop_ctl", + "target" : ["scalars", "userMetadata._drop_ctl2"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "queue_report", + "target" : ["scalars", "userMetadata._egress_int_md_queue_report43"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 2, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [135, 110], + "actions" : ["FabricEgress.int_egress.init_int_metadata", "nop"], + "base_default_next" : null, + "next_tables" : { + "__HIT__" : "tbl_int383", + "__MISS__" : "FabricEgress.int_egress.adjust_int_report_hdr_length" + }, + "default_entry" : { + "action_id" : 110, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 327, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 0, false): init_int_metadata(INT_REPORT_TYPE_FLOW)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + } + ], + "action_entry" : { + "action_id" : 135, + "action_data" : ["0x1"] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 329, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 1, false): init_int_metadata(INT_REPORT_TYPE_DROP)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + } + ], + "action_entry" : { + "action_id" : 135, + "action_data" : ["0x4"] + }, + "priority" : 2 + } + ] + }, + { + "name" : "tbl_int383", + "id" : 102, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 383, + "column" : 16, + "source_fragment" : "clone_preserving_field_list(CloneType.E2E, ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [163], + "actions" : ["int383"], + "base_default_next" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "next_tables" : { + "int383" : "FabricEgress.int_egress.adjust_int_report_hdr_length" + }, + "default_entry" : { + "action_id" : 163, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "id" : 103, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 347, + "column" : 10, + "source_fragment" : "adjust_int_report_hdr_length" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "is_int_wip", + "target" : ["int_egress_fabric_md_bridged", "_int_bmd_wip_type26"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 2, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [111, 136], + "actions" : ["nop", "FabricEgress.int_egress.adjust_ip_udp_len"], + "base_default_next" : "tbl_slicing189", + "next_tables" : { + "nop" : "tbl_slicing189", + "FabricEgress.int_egress.adjust_ip_udp_len" : "tbl_slicing189" + }, + "default_entry" : { + "action_id" : 111, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 358, + "column" : 12, + "source_fragment" : "INT_IS_WIP: adjust_ip_udp_len(INT_WIP_ADJUST_IP_BYTES, INT_WIP_ADJUST_UDP_BYTES)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + } + ], + "action_entry" : { + "action_id" : 136, + "action_data" : ["0xfff2", "0xffde"] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 359, + "column" : 12, + "source_fragment" : "INT_IS_WIP_WITH_MPLS: adjust_ip_udp_len(INT_WIP_ADJUST_IP_MPLS_BYTES, INT_WIP_ADJUST_UDP_MPLS_BYTES)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x02" + } + ], + "action_entry" : { + "action_id" : 136, + "action_data" : ["0xffee", "0xffda"] + }, + "priority" : 2 + } + ] + }, + { + "name" : "tbl_slicing189", + "id" : 104, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 189, + "column" : 4, + "source_fragment" : "bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [166], + "actions" : ["slicing189"], + "base_default_next" : "FabricEgress.dscp_rewriter.rewriter", + "next_tables" : { + "slicing189" : "FabricEgress.dscp_rewriter.rewriter" + }, + "default_entry" : { + "action_id" : 166, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.dscp_rewriter.rewriter", + "id" : 105, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 201, + "column" : 10, + "source_fragment" : "rewriter" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "eg_port", + "target" : ["standard_metadata", "egress_port"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 512, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [119, 120, 106], + "actions" : ["FabricEgress.dscp_rewriter.rewrite", "FabricEgress.dscp_rewriter.clear", "nop"], + "base_default_next" : null, + "next_tables" : { + "__HIT__" : "node_171", + "__MISS__" : "node_173" + }, + "default_entry" : { + "action_id" : 106, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_slicing217", + "id" : 106, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 217, + "column" : 30, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [165], + "actions" : ["slicing217"], + "base_default_next" : "node_173", + "next_tables" : { + "slicing217" : "node_173" + }, + "default_entry" : { + "action_id" : 165, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model170", + "id" : 107, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 170, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [167], + "actions" : ["fabric_v1model170"], + "base_default_next" : "node_175", + "next_tables" : { + "fabric_v1model170" : "node_175" + }, + "default_entry" : { + "action_id" : 167, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model174", + "id" : 108, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [168], + "actions" : ["fabric_v1model174"], + "base_default_next" : null, + "next_tables" : { + "fabric_v1model174" : null + }, + "default_entry" : { + "action_id" : 168, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + } + ], + "action_profiles" : [], + "conditionals" : [ + { + "name" : "node_97", + "id" : 31, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 135, + "column" : 12, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._skip_egress0"] + } + } + }, + "true_next" : "tbl_fabric_v1model136", + "false_next" : "node_99" + }, + { + "name" : "node_99", + "id" : 32, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 140, + "column" : 13, + "source_fragment" : "standard_md.instance_type == 2" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "instance_type"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000002" + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator14", + "false_next" : "node_109" + }, + { + "name" : "node_101", + "id" : 33, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 145, + "column" : 11, + "source_fragment" : "hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_gtpu12", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_vxlan15", "$valid$"] + } + } + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator148", + "false_next" : "node_103" + }, + { + "name" : "node_103", + "id" : 34, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 164, + "column" : 12, + "source_fragment" : "(bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "true_next" : "tbl_parser_emulator_parse_int_ingress_drop", + "false_next" : "tbl_parser_emulator_parse_int_report_mirror" + }, + { + "name" : "node_109", + "id" : 35, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 150, + "column" : 11, + "source_fragment" : "(bit<8>)fabric_md.egress.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator14_0", + "false_next" : "FabricEgress.pkt_io_egress.switch_info" + }, + { + "name" : "node_111", + "id" : 36, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 145, + "column" : 11, + "source_fragment" : "hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_gtpu12", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_vxlan15", "$valid$"] + } + } + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator148_0", + "false_next" : "node_113" + }, + { + "name" : "node_113", + "id" : 37, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 164, + "column" : 12, + "source_fragment" : "(bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "true_next" : "tbl_parser_emulator_parse_int_ingress_drop_0", + "false_next" : "tbl_parser_emulator_parse_int_report_mirror_0" + }, + { + "name" : "node_120", + "id" : 38, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 50, + "column" : 12, + "source_fragment" : "standard_md.egress_port == fabric_md.cpu_port" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_port"] + }, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_cpu_port37"] + } + } + }, + "true_next" : "tbl_packetio51", + "false_next" : "node_122" + }, + { + "name" : "node_122", + "id" : 39, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 58, + "column" : 12, + "source_fragment" : "hdr.fake_ethernet.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_fake_ethernet2", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_fake_ethernet2", "ether_type"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xbf03" + } + } + } + } + }, + "true_next" : "tbl_packetio60", + "false_next" : "node_124" + }, + { + "name" : "node_124", + "id" : 40, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 67, + "column" : 12, + "source_fragment" : "bmd_type == BridgedMdType_t.INGRESS_TO_EGRESS" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + }, + "true_next" : "FabricEgress.stats.flows", + "false_next" : "node_126" + }, + { + "name" : "node_126", + "id" : 41, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 280, + "column" : 12, + "source_fragment" : "fabric_md.bridged.base.is_multicast ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_is_multicast4"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_port3"] + }, + "right" : { + "type" : "field", + "value" : ["standard_metadata", "egress_port"] + } + } + } + } + }, + "true_next" : "tbl_next283", + "false_next" : "node_128" + }, + { + "name" : "node_128", + "id" : 42, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 288, + "column" : 12, + "source_fragment" : "fabric_md.bridged.base.mpls_label == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x000000" + } + } + }, + "true_next" : "node_129", + "false_next" : "tbl_egress_next_set_mpls" + }, + { + "name" : "node_129", + "id" : 43, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 289, + "column" : 16, + "source_fragment" : "hdr.mpls.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_mpls6", "$valid$"] + } + } + }, + "true_next" : "tbl_egress_next_pop_mpls_if_present", + "false_next" : "node_132" + }, + { + "name" : "node_132", + "id" : 44, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 159, + "column" : 39, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_is_int_recirc45"] + } + } + }, + "false_next" : "FabricEgress.egress_next.egress_vlan", + "true_next" : "node_134" + }, + { + "name" : "node_134", + "id" : 45, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 322, + "column" : 12, + "source_fragment" : "hdr.mpls.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_mpls6", "$valid$"] + } + } + }, + "true_next" : "tbl_next323", + "false_next" : "node_138" + }, + { + "name" : "node_136", + "id" : 46, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 324, + "column" : 16, + "source_fragment" : "hdr.mpls.ttl == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "tbl_next325", + "false_next" : "node_148" + }, + { + "name" : "node_138", + "id" : 47, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 331, + "column" : 16, + "source_fragment" : "hdr.ipv4.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + } + } + }, + "true_next" : "node_139", + "false_next" : "node_143" + }, + { + "name" : "node_139", + "id" : 48, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 319, + "column" : 28, + "source_fragment" : "(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP) || ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + } + } + }, + "false_next" : "tbl_next333", + "true_next" : "node_141" + }, + { + "name" : "node_141", + "id" : 49, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 335, + "column" : 20, + "source_fragment" : "hdr.ipv4.ttl == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "tbl_next336", + "false_next" : "node_148" + }, + { + "name" : "node_143", + "id" : 50, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 341, + "column" : 23, + "source_fragment" : "hdr.ipv6.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv68", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + } + } + }, + "true_next" : "node_144", + "false_next" : "node_148" + }, + { + "name" : "node_144", + "id" : 51, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 319, + "column" : 28, + "source_fragment" : "(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP) || ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + } + } + }, + "false_next" : "tbl_next343", + "true_next" : "node_146" + }, + { + "name" : "node_146", + "id" : 52, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 345, + "column" : 20, + "source_fragment" : "hdr.ipv6.hop_limit == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv68", "hop_limit"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "tbl_next346", + "false_next" : "node_148" + }, + { + "name" : "node_148", + "id" : 53, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 607, + "column" : 13, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_upf17"] + } + } + }, + "false_next" : "node_149", + "true_next" : "tbl_int128" + }, + { + "name" : "node_149", + "id" : 54, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 608, + "column" : 16, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_needs_gtpu_encap16"] + } + } + }, + "true_next" : "node_150", + "false_next" : "node_158" + }, + { + "name" : "node_150", + "id" : 55, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 609, + "column" : 20, + "source_fragment" : "hdr.udp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_udp10", "$valid$"] + } + } + }, + "true_next" : "tbl_upf610", + "false_next" : "node_152" + }, + { + "name" : "node_152", + "id" : 56, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 614, + "column" : 20, + "source_fragment" : "hdr.tcp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_tcp9", "$valid$"] + } + } + }, + "true_next" : "tbl_upf615", + "false_next" : "node_154" + }, + { + "name" : "node_154", + "id" : 57, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 619, + "column" : 20, + "source_fragment" : "hdr.icmp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_icmp11", "$valid$"] + } + } + }, + "true_next" : "tbl_upf620", + "false_next" : "FabricEgress.upf.gtpu_encap" + }, + { + "name" : "node_158", + "id" : 58, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 627, + "column" : 17, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_egress_upf_ctr18"] + } + } + }, + "false_next" : "tbl_upf628", + "true_next" : "tbl_int128" + }, + { + "name" : "node_164", + "id" : 59, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 375, + "column" : 12, + "source_fragment" : "fabric_md.int_report_md.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "$valid$"] + } + } + }, + "true_next" : "FabricEgress.int_egress.report", + "false_next" : "FabricEgress.int_egress.int_metadata" + }, + { + "name" : "node_171", + "id" : 60, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 216, + "column" : 16, + "source_fragment" : "hdr.ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "true_next" : "tbl_slicing217", + "false_next" : "node_173" + }, + { + "name" : "node_173", + "id" : 61, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 168, + "column" : 12, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._do_upf_uplink_recirc1"] + } + } + }, + "true_next" : "tbl_fabric_v1model170", + "false_next" : "node_175" + }, + { + "name" : "node_175", + "id" : 62, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 173, + "column" : 12, + "source_fragment" : "fabric_md.drop_ctl == 1" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + }, + "false_next" : null, + "true_next" : "tbl_fabric_v1model174" + } + ] + } + ], + "checksums" : [ + { + "name" : "cksum", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 55, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "target" : ["_ingress_ipv47", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_3", + "verify" : false, + "update" : true, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + } + }, + { + "name" : "cksum_0", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "target" : ["_ingress_inner_ipv418", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_4", + "verify" : false, + "update" : true, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "$valid$"] + } + } + } + }, + { + "name" : "cksum_1", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 92, + "column" : 8, + "source_fragment" : "update_checksum(hdr.egress.report_ipv4.isValid(), ..." + }, + "target" : ["_egress_report_ipv427", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_5", + "verify" : false, + "update" : true, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_report_ipv427", "$valid$"] + } + } + } + }, + { + "name" : "cksum_2", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 13, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "target" : ["_ingress_ipv47", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_6", + "verify" : true, + "update" : false, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + } + }, + { + "name" : "cksum_3", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "target" : ["_ingress_inner_ipv418", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_7", + "verify" : true, + "update" : false, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "$valid$"] + } + } + } + } + ], + "force_arith" : [], + "extern_instances" : [], + "field_aliases" : [ + [ + "queueing_metadata.enq_timestamp", + ["standard_metadata", "enq_timestamp"] + ], + [ + "queueing_metadata.enq_qdepth", + ["standard_metadata", "enq_qdepth"] + ], + [ + "queueing_metadata.deq_timedelta", + ["standard_metadata", "deq_timedelta"] + ], + [ + "queueing_metadata.deq_qdepth", + ["standard_metadata", "deq_qdepth"] + ], + [ + "intrinsic_metadata.ingress_global_timestamp", + ["standard_metadata", "ingress_global_timestamp"] + ], + [ + "intrinsic_metadata.egress_global_timestamp", + ["standard_metadata", "egress_global_timestamp"] + ], + [ + "intrinsic_metadata.mcast_grp", + ["standard_metadata", "mcast_grp"] + ], + [ + "intrinsic_metadata.egress_rid", + ["standard_metadata", "egress_rid"] + ], + [ + "intrinsic_metadata.priority", + ["standard_metadata", "priority"] + ] + ], + "program" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "__meta__" : { + "version" : [2, 23], + "compiler" : "https://github.com/p4lang/p4c" + } +} \ No newline at end of file diff --git a/src/tests/p4-sd-fabric-svc-connectivity/p4src/p4info.txt b/src/tests/p4-sd-fabric-svc-connectivity/p4src/p4info.txt new file mode 100644 index 0000000000000000000000000000000000000000..d502367c0c2acb101b7ea4c4df11837b0d8c3271 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/p4src/p4info.txt @@ -0,0 +1,2482 @@ +pkg_info { + arch: "v1model" +} +tables { + preamble { + id: 41243186 + name: "FabricIngress.stats.flows" + alias: "FabricIngress.stats.flows" + } + match_fields { + id: 1 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 4 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 21929788 + } + const_default_action_id: 21929788 + direct_resource_ids: 333776332 + size: 1024 +} +tables { + preamble { + id: 43310977 + name: "FabricIngress.filtering.ingress_port_vlan" + alias: "ingress_port_vlan" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + match_fields { + id: 2 + name: "vlan_is_valid" + bitwidth: 1 + match_type: EXACT + } + match_fields { + id: 3 + name: "vlan_id" + bitwidth: 12 + match_type: TERNARY + } + action_refs { + id: 17164167 + } + action_refs { + id: 24158268 + } + action_refs { + id: 24266015 + } + const_default_action_id: 17164167 + direct_resource_ids: 326221069 + size: 1024 +} +tables { + preamble { + id: 49718154 + name: "FabricIngress.filtering.fwd_classifier" + alias: "fwd_classifier" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 3 + name: "eth_type" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_eth_type" + bitwidth: 16 + match_type: EXACT + } + action_refs { + id: 25032921 + } + const_default_action_id: 25032921 + direct_resource_ids: 335473470 + size: 1024 +} +tables { + preamble { + id: 43623757 + name: "FabricIngress.forwarding.bridging" + alias: "bridging" + } + match_fields { + id: 1 + name: "vlan_id" + bitwidth: 12 + match_type: EXACT + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + action_refs { + id: 21791748 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29734112 + direct_resource_ids: 330959985 + size: 1024 +} +tables { + preamble { + id: 37768578 + name: "FabricIngress.forwarding.mpls" + alias: "mpls" + } + match_fields { + id: 1 + name: "mpls_label" + bitwidth: 20 + match_type: EXACT + } + action_refs { + id: 30066030 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29734112 + direct_resource_ids: 318961579 + size: 1024 +} +tables { + preamble { + id: 41754650 + name: "FabricIngress.forwarding.routing_v4" + alias: "routing_v4" + } + match_fields { + id: 1 + name: "ipv4_dst" + bitwidth: 32 + match_type: LPM + } + action_refs { + id: 19792090 + } + action_refs { + id: 29124955 + } + action_refs { + id: 17639597 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 333425635 + size: 1024 +} +tables { + preamble { + id: 49342721 + name: "FabricIngress.forwarding.routing_v6" + alias: "routing_v6" + } + match_fields { + id: 1 + name: "ipv6_dst" + bitwidth: 128 + match_type: LPM + } + action_refs { + id: 21856023 + } + action_refs { + id: 24646532 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 324042090 + size: 1024 +} +tables { + preamble { + id: 36626242 + name: "FabricIngress.pre_next.next_mpls" + alias: "next_mpls" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 22765924 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + direct_resource_ids: 330020245 + size: 1024 +} +tables { + preamble { + id: 48011802 + name: "FabricIngress.pre_next.next_vlan" + alias: "next_vlan" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 33475378 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + direct_resource_ids: 333692067 + size: 1024 +} +tables { + preamble { + id: 44104738 + name: "FabricIngress.acl.acl" + alias: "acl" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: TERNARY + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 3 + name: "eth_src" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 4 + name: "vlan_id" + bitwidth: 12 + match_type: TERNARY + } + match_fields { + id: 5 + name: "eth_type" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 7 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 8 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 9 + name: "icmp_type" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 10 + name: "icmp_code" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 11 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 12 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 13 + name: "ig_port_type" + bitwidth: 2 + match_type: TERNARY + } + action_refs { + id: 23623126 + } + action_refs { + id: 23579892 + } + action_refs { + id: 21161133 + } + action_refs { + id: 23570973 + } + action_refs { + id: 24507494 + } + action_refs { + id: 29607214 + } + const_default_action_id: 29607214 + direct_resource_ids: 319194241 + size: 1024 +} +tables { + preamble { + id: 47960972 + name: "FabricIngress.next.hashed" + alias: "hashed" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 27301117 + } + action_refs { + id: 20985706 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + implementation_id: 289544276 + direct_resource_ids: 322798228 + size: 1024 +} +tables { + preamble { + id: 40619180 + name: "FabricIngress.next.multicast" + alias: "multicast" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 21629581 + } + action_refs { + id: 23637707 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 23637707 + direct_resource_ids: 319194968 + size: 1024 +} +tables { + preamble { + id: 34606298 + name: "FabricIngress.slice_tc_classifier.classifier" + alias: "classifier" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + action_refs { + id: 23786376 + } + action_refs { + id: 25983516 + } + action_refs { + id: 30111108 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30111108 + direct_resource_ids: 334706097 + size: 512 +} +tables { + preamble { + id: 36435258 + name: "FabricIngress.qos.queues" + alias: "queues" + } + match_fields { + id: 1 + name: "slice_tc" + bitwidth: 6 + match_type: EXACT + } + match_fields { + id: 2 + name: "color" + bitwidth: 2 + match_type: TERNARY + } + action_refs { + id: 32116918 + } + action_refs { + id: 28214351 + } + const_default_action_id: 32116918 + direct_resource_ids: 327743278 + size: 128 +} +tables { + preamble { + id: 43965782 + name: "FabricIngress.qos.default_tc" + alias: "default_tc" + } + match_fields { + id: 1 + name: "slice_tc" + bitwidth: 6 + match_type: TERNARY + } + match_fields { + id: 2 + name: "tc_unknown" + bitwidth: 1 + match_type: EXACT + } + action_refs { + id: 23587909 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 16 +} +tables { + preamble { + id: 41155994 + name: "FabricIngress.upf.interfaces" + alias: "interfaces" + } + match_fields { + id: 1 + name: "ipv4_dst_addr" + bitwidth: 32 + match_type: LPM + } + match_fields { + id: 2 + name: "gtpu_is_valid" + bitwidth: 1 + match_type: EXACT + } + action_refs { + id: 30131500 + } + action_refs { + id: 19786139 + } + action_refs { + id: 19466514 + } + action_refs { + id: 30204657 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30204657 + size: 64 +} +tables { + preamble { + id: 37952203 + name: "FabricIngress.upf.downlink_sessions" + alias: "downlink_sessions" + } + match_fields { + id: 1 + name: "ue_addr" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 16984383 + } + action_refs { + id: 31195396 + } + action_refs { + id: 21581660 + } + action_refs { + id: 24509779 + } + action_refs { + id: 32013192 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 32013192 + size: 100000 +} +tables { + preamble { + id: 45463032 + name: "FabricIngress.upf.uplink_sessions" + alias: "uplink_sessions" + } + match_fields { + id: 1 + name: "tunnel_ipv4_dst" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "teid" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 31219743 + } + action_refs { + id: 24328070 + } + action_refs { + id: 20368148 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 20368148 + size: 100000 +} +tables { + preamble { + id: 50169666 + name: "FabricIngress.upf.uplink_terminations" + alias: "uplink_terminations" + } + match_fields { + id: 1 + name: "ue_session_id" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 25805419 + } + action_refs { + id: 28764209 + } + action_refs { + id: 20624836 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 20624836 + size: 100000 +} +tables { + preamble { + id: 35221941 + name: "FabricIngress.upf.downlink_terminations" + alias: "downlink_terminations" + } + match_fields { + id: 1 + name: "ue_session_id" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 23536134 + } + action_refs { + id: 30742995 + } + action_refs { + id: 26608757 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 26608757 + size: 100000 +} +tables { + preamble { + id: 48831175 + name: "FabricIngress.upf.ig_tunnel_peers" + alias: "ig_tunnel_peers" + } + match_fields { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 26011763 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 256 +} +tables { + preamble { + id: 46184415 + name: "FabricIngress.upf.applications" + alias: "applications" + } + match_fields { + id: 1 + name: "slice_id" + bitwidth: 4 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_ipv4_addr" + bitwidth: 32 + match_type: LPM + } + match_fields { + id: 3 + name: "app_l4_port" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 4 + name: "app_ip_proto" + bitwidth: 8 + match_type: TERNARY + } + action_refs { + id: 26631629 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 5 +} +tables { + preamble { + id: 34400315 + name: "FabricIngress.upf.uplink_recirc_rules" + alias: "uplink_recirc_rules" + } + match_fields { + id: 1 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + action_refs { + id: 28119063 + } + action_refs { + id: 19222227 + } + action_refs { + id: 29186084 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29186084 + direct_resource_ids: 335275671 + size: 64 +} +tables { + preamble { + id: 40748488 + name: "FabricIngress.int_watchlist.watchlist" + alias: "watchlist" + } + match_fields { + id: 1 + name: "ipv4_valid" + bitwidth: 1 + match_type: EXACT + } + match_fields { + id: 2 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_sport" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 6 + name: "l4_dport" + bitwidth: 16 + match_type: RANGE + } + action_refs { + id: 25078550 + } + action_refs { + id: 20118842 + } + action_refs { + id: 28396787 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28396787 + direct_resource_ids: 328581521 + size: 64 +} +tables { + preamble { + id: 43851059 + name: "FabricEgress.stats.flows" + alias: "FabricEgress.stats.flows" + } + match_fields { + id: 1 + name: "stats_flow_id" + bitwidth: 10 + match_type: EXACT + } + match_fields { + id: 2 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 26838724 + } + const_default_action_id: 26838724 + direct_resource_ids: 334508337 + size: 1024 +} +tables { + preamble { + id: 35217901 + name: "FabricEgress.pkt_io_egress.switch_info" + alias: "switch_info" + } + action_refs { + id: 32804382 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 1 +} +tables { + preamble { + id: 49262446 + name: "FabricEgress.egress_next.egress_vlan" + alias: "egress_vlan" + } + match_fields { + id: 1 + name: "vlan_id" + bitwidth: 12 + match_type: EXACT + } + match_fields { + id: 2 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 30307755 + } + action_refs { + id: 17183246 + } + action_refs { + id: 30812542 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30812542 + direct_resource_ids: 318892680 + size: 1024 +} +tables { + preamble { + id: 49970092 + name: "FabricEgress.dscp_rewriter.rewriter" + alias: "rewriter" + } + match_fields { + id: 1 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 27951287 + } + action_refs { + id: 24120545 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 512 +} +tables { + preamble { + id: 37756041 + name: "FabricEgress.upf.eg_tunnel_peers" + alias: "eg_tunnel_peers" + } + match_fields { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 28490145 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 256 +} +tables { + preamble { + id: 35202849 + name: "FabricEgress.upf.gtpu_encap" + alias: "gtpu_encap" + } + action_refs { + id: 18154440 + } + action_refs { + id: 25872588 + } + size: 1 +} +tables { + preamble { + id: 36860953 + name: "FabricEgress.int_egress.queue_latency_thresholds" + alias: "queue_latency_thresholds" + } + match_fields { + id: 1 + name: "egress_qid" + bitwidth: 5 + match_type: EXACT + } + match_fields { + id: 2 + name: "hop_latency_upper" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 3 + name: "hop_latency_lower" + bitwidth: 16 + match_type: RANGE + } + action_refs { + id: 22415037 + } + action_refs { + id: 19702294 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 128 +} +tables { + preamble { + id: 40475827 + name: "FabricEgress.int_egress.config" + alias: "config" + } + action_refs { + id: 22425991 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 1 +} +tables { + preamble { + id: 46071383 + name: "FabricEgress.int_egress.report" + alias: "report" + } + match_fields { + id: 1 + name: "bmd_type" + bitwidth: 8 + match_type: EXACT + } + match_fields { + id: 2 + name: "mirror_type" + bitwidth: 3 + match_type: EXACT + } + match_fields { + id: 3 + name: "int_report_type" + bitwidth: 3 + match_type: EXACT + } + action_refs { + id: 30783845 + } + action_refs { + id: 22769901 + } + action_refs { + id: 32486459 + } + action_refs { + id: 25343592 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 325056546 + size: 6 +} +actions { + preamble { + id: 28485346 + name: "nop" + alias: "nop" + } +} +actions { + preamble { + id: 21257015 + name: "NoAction" + alias: "NoAction" + annotations: "@noWarn(\"unused\")" + } +} +actions { + preamble { + id: 21929788 + name: "FabricIngress.stats.count" + alias: "FabricIngress.stats.count" + } + params { + id: 1 + name: "flow_id" + bitwidth: 10 + } +} +actions { + preamble { + id: 17164167 + name: "FabricIngress.filtering.deny" + alias: "deny" + } +} +actions { + preamble { + id: 24158268 + name: "FabricIngress.filtering.permit" + alias: "permit" + } + params { + id: 1 + name: "port_type" + bitwidth: 2 + } +} +actions { + preamble { + id: 24266015 + name: "FabricIngress.filtering.permit_with_internal_vlan" + alias: "permit_with_internal_vlan" + } + params { + id: 1 + name: "vlan_id" + bitwidth: 12 + } + params { + id: 2 + name: "port_type" + bitwidth: 2 + } +} +actions { + preamble { + id: 25032921 + name: "FabricIngress.filtering.set_forwarding_type" + alias: "set_forwarding_type" + } + params { + id: 1 + name: "fwd_type" + bitwidth: 3 + } +} +actions { + preamble { + id: 29734112 + name: "FabricIngress.forwarding.set_int_drop_reason" + alias: "set_int_drop_reason" + } + params { + id: 1 + name: "drop_reason" + bitwidth: 8 + } +} +actions { + preamble { + id: 21791748 + name: "FabricIngress.forwarding.set_next_id_bridging" + alias: "set_next_id_bridging" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 30066030 + name: "FabricIngress.forwarding.pop_mpls_and_next" + alias: "pop_mpls_and_next" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 19792090 + name: "FabricIngress.forwarding.set_next_id_routing_v4" + alias: "set_next_id_routing_v4" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 29124955 + name: "FabricIngress.forwarding.nop_routing_v4" + alias: "nop_routing_v4" + } +} +actions { + preamble { + id: 17639597 + name: "FabricIngress.forwarding.drop_routing_v4" + alias: "drop_routing_v4" + } +} +actions { + preamble { + id: 21856023 + name: "FabricIngress.forwarding.set_next_id_routing_v6" + alias: "set_next_id_routing_v6" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 24646532 + name: "FabricIngress.forwarding.drop_routing_v6" + alias: "drop_routing_v6" + } +} +actions { + preamble { + id: 22765924 + name: "FabricIngress.pre_next.set_mpls_label" + alias: "set_mpls_label" + } + params { + id: 1 + name: "label" + bitwidth: 20 + } +} +actions { + preamble { + id: 33475378 + name: "FabricIngress.pre_next.set_vlan" + alias: "set_vlan" + } + params { + id: 1 + name: "vlan_id" + bitwidth: 12 + } +} +actions { + preamble { + id: 23623126 + name: "FabricIngress.acl.set_next_id_acl" + alias: "set_next_id_acl" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 21161133 + name: "FabricIngress.acl.copy_to_cpu" + alias: "copy_to_cpu" + } +} +actions { + preamble { + id: 23579892 + name: "FabricIngress.acl.punt_to_cpu" + alias: "punt_to_cpu" + } +} +actions { + preamble { + id: 23570973 + name: "FabricIngress.acl.drop" + alias: "acl.drop" + } +} +actions { + preamble { + id: 24507494 + name: "FabricIngress.acl.set_output_port" + alias: "set_output_port" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } +} +actions { + preamble { + id: 29607214 + name: "FabricIngress.acl.nop_acl" + alias: "nop_acl" + } +} +actions { + preamble { + id: 27301117 + name: "FabricIngress.next.output_hashed" + alias: "output_hashed" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } +} +actions { + preamble { + id: 20985706 + name: "FabricIngress.next.routing_hashed" + alias: "routing_hashed" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + params { + id: 2 + name: "smac" + bitwidth: 48 + } + params { + id: 3 + name: "dmac" + bitwidth: 48 + } +} +actions { + preamble { + id: 21629581 + name: "FabricIngress.next.set_mcast_group_id" + alias: "set_mcast_group_id" + } + params { + id: 1 + name: "group_id" + bitwidth: 16 + } +} +actions { + preamble { + id: 23637707 + name: "FabricIngress.next.reset_mcast_group_id" + alias: "reset_mcast_group_id" + } +} +actions { + preamble { + id: 23786376 + name: "FabricIngress.slice_tc_classifier.set_slice_id_tc" + alias: "set_slice_id_tc" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } +} +actions { + preamble { + id: 30111108 + name: "FabricIngress.slice_tc_classifier.no_classification" + alias: "no_classification" + } +} +actions { + preamble { + id: 25983516 + name: "FabricIngress.slice_tc_classifier.trust_dscp" + alias: "trust_dscp" + } +} +actions { + preamble { + id: 32116918 + name: "FabricIngress.qos.set_queue" + alias: "set_queue" + } + params { + id: 1 + name: "qid" + bitwidth: 5 + } +} +actions { + preamble { + id: 28214351 + name: "FabricIngress.qos.meter_drop" + alias: "meter_drop" + } +} +actions { + preamble { + id: 23587909 + name: "FabricIngress.qos.set_default_tc" + alias: "set_default_tc" + } + params { + id: 1 + name: "tc" + bitwidth: 2 + } +} +actions { + preamble { + id: 30131500 + name: "FabricIngress.upf.iface_access" + alias: "iface_access" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } +} +actions { + preamble { + id: 19786139 + name: "FabricIngress.upf.iface_core" + alias: "iface_core" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } +} +actions { + preamble { + id: 19466514 + name: "FabricIngress.upf.iface_dbuf" + alias: "iface_dbuf" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } +} +actions { + preamble { + id: 30204657 + name: "FabricIngress.upf.iface_miss" + alias: "iface_miss" + } +} +actions { + preamble { + id: 20368148 + name: "FabricIngress.upf.set_uplink_session_miss" + alias: "set_uplink_session_miss" + } +} +actions { + preamble { + id: 24328070 + name: "FabricIngress.upf.set_uplink_session_drop" + alias: "set_uplink_session_drop" + } +} +actions { + preamble { + id: 32013192 + name: "FabricIngress.upf.set_downlink_session_miss" + alias: "set_downlink_session_miss" + } +} +actions { + preamble { + id: 24509779 + name: "FabricIngress.upf.set_downlink_session_drop" + alias: "set_downlink_session_drop" + } +} +actions { + preamble { + id: 16984383 + name: "FabricIngress.upf.set_downlink_session" + alias: "set_downlink_session" + } + params { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + } + params { + id: 2 + name: "session_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 31195396 + name: "FabricIngress.upf.set_downlink_session_buf" + alias: "set_downlink_session_buf" + } + params { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + } + params { + id: 2 + name: "session_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 21581660 + name: "FabricIngress.upf.set_downlink_session_buf_drop" + alias: "set_downlink_session_buf_drop" + } +} +actions { + preamble { + id: 31219743 + name: "FabricIngress.upf.set_uplink_session" + alias: "set_uplink_session" + } + params { + id: 1 + name: "session_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 20624836 + name: "FabricIngress.upf.uplink_drop_miss" + alias: "uplink_drop_miss" + } +} +actions { + preamble { + id: 26608757 + name: "FabricIngress.upf.downlink_drop_miss" + alias: "downlink_drop_miss" + } +} +actions { + preamble { + id: 28764209 + name: "FabricIngress.upf.uplink_drop" + alias: "uplink_drop" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } +} +actions { + preamble { + id: 30742995 + name: "FabricIngress.upf.downlink_drop" + alias: "downlink_drop" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } +} +actions { + preamble { + id: 25805419 + name: "FabricIngress.upf.app_fwd" + alias: "app_fwd" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } + params { + id: 3 + name: "app_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 23536134 + name: "FabricIngress.upf.downlink_fwd_encap" + alias: "downlink_fwd_encap" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } + params { + id: 3 + name: "teid" + bitwidth: 32 + } + params { + id: 4 + name: "qfi" + bitwidth: 6 + } + params { + id: 5 + name: "app_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 26011763 + name: "FabricIngress.upf.set_routing_ipv4_dst" + alias: "set_routing_ipv4_dst" + } + params { + id: 1 + name: "tun_dst_addr" + bitwidth: 32 + } +} +actions { + preamble { + id: 26631629 + name: "FabricIngress.upf.set_app_id" + alias: "set_app_id" + } + params { + id: 1 + name: "app_id" + bitwidth: 8 + } +} +actions { + preamble { + id: 28119063 + name: "FabricIngress.upf.recirc_allow" + alias: "recirc_allow" + } +} +actions { + preamble { + id: 19222227 + name: "FabricIngress.upf.recirc_deny" + alias: "recirc_deny" + } +} +actions { + preamble { + id: 29186084 + name: "FabricIngress.upf.recirc_miss" + alias: "recirc_miss" + } +} +actions { + preamble { + id: 25078550 + name: "FabricIngress.int_watchlist.mark_to_report" + alias: "mark_to_report" + } +} +actions { + preamble { + id: 28396787 + name: "FabricIngress.int_watchlist.no_report" + alias: "no_report" + } +} +actions { + preamble { + id: 20118842 + name: "FabricIngress.int_watchlist.no_report_collector" + alias: "no_report_collector" + } +} +actions { + preamble { + id: 26838724 + name: "FabricEgress.stats.count" + alias: "FabricEgress.stats.count" + } +} +actions { + preamble { + id: 32804382 + name: "FabricEgress.pkt_io_egress.set_switch_info" + alias: "set_switch_info" + } + params { + id: 1 + name: "cpu_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } +} +actions { + preamble { + id: 30307755 + name: "FabricEgress.egress_next.push_vlan" + alias: "push_vlan" + } +} +actions { + preamble { + id: 17183246 + name: "FabricEgress.egress_next.pop_vlan" + alias: "pop_vlan" + } +} +actions { + preamble { + id: 30812542 + name: "FabricEgress.egress_next.drop" + alias: "egress_next.drop" + } +} +actions { + preamble { + id: 27951287 + name: "FabricEgress.dscp_rewriter.rewrite" + alias: "rewrite" + } +} +actions { + preamble { + id: 24120545 + name: "FabricEgress.dscp_rewriter.clear" + alias: "clear" + } +} +actions { + preamble { + id: 28490145 + name: "FabricEgress.upf.load_tunnel_params" + alias: "load_tunnel_params" + } + params { + id: 1 + name: "tunnel_src_port" + bitwidth: 16 + } + params { + id: 2 + name: "tunnel_src_addr" + bitwidth: 32 + } + params { + id: 3 + name: "tunnel_dst_addr" + bitwidth: 32 + } +} +actions { + preamble { + id: 18154440 + name: "FabricEgress.upf.gtpu_only" + alias: "gtpu_only" + } +} +actions { + preamble { + id: 25872588 + name: "FabricEgress.upf.gtpu_with_psc" + alias: "gtpu_with_psc" + } +} +actions { + preamble { + id: 22415037 + name: "FabricEgress.int_egress.check_quota" + alias: "check_quota" + } +} +actions { + preamble { + id: 19702294 + name: "FabricEgress.int_egress.reset_quota" + alias: "reset_quota" + } +} +actions { + preamble { + id: 22425991 + name: "FabricEgress.int_egress.set_config" + alias: "set_config" + } + params { + id: 1 + name: "hop_latency_mask" + bitwidth: 32 + } + params { + id: 2 + name: "timestamp_mask" + bitwidth: 48 + } +} +actions { + preamble { + id: 30783845 + name: "FabricEgress.int_egress.do_local_report_encap" + alias: "do_local_report_encap" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "switch_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 22769901 + name: "FabricEgress.int_egress.do_local_report_encap_mpls" + alias: "do_local_report_encap_mpls" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "mon_label" + bitwidth: 20 + } + params { + id: 5 + name: "switch_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 32486459 + name: "FabricEgress.int_egress.do_drop_report_encap" + alias: "do_drop_report_encap" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "switch_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 25343592 + name: "FabricEgress.int_egress.do_drop_report_encap_mpls" + alias: "do_drop_report_encap_mpls" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "mon_label" + bitwidth: 20 + } + params { + id: 5 + name: "switch_id" + bitwidth: 32 + } +} +action_profiles { + preamble { + id: 289544276 + name: "FabricIngress.next.hashed_profile" + alias: "hashed_profile" + } + table_ids: 47960972 + with_selector: true + size: 16 + max_group_size: 16 +} +counters { + preamble { + id: 309010261 + name: "FabricIngress.filtering.fwd_type_counter" + alias: "fwd_type_counter" + } + spec { + unit: BOTH + } + size: 8 +} +counters { + preamble { + id: 316677328 + name: "FabricIngress.upf.terminations_counter" + alias: "FabricIngress.upf.terminations_counter" + } + spec { + unit: BOTH + } + size: 4096 +} +counters { + preamble { + id: 314209362 + name: "FabricEgress.upf.terminations_counter" + alias: "FabricEgress.upf.terminations_counter" + } + spec { + unit: BOTH + } + size: 4096 +} +direct_counters { + preamble { + id: 333776332 + name: "FabricIngress.stats.flow_counter" + alias: "FabricIngress.stats.flow_counter" + } + spec { + unit: BOTH + } + direct_table_id: 41243186 +} +direct_counters { + preamble { + id: 326221069 + name: "FabricIngress.filtering.ingress_port_vlan_counter" + alias: "ingress_port_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43310977 +} +direct_counters { + preamble { + id: 335473470 + name: "FabricIngress.filtering.fwd_classifier_counter" + alias: "fwd_classifier_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49718154 +} +direct_counters { + preamble { + id: 330959985 + name: "FabricIngress.forwarding.bridging_counter" + alias: "bridging_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43623757 +} +direct_counters { + preamble { + id: 318961579 + name: "FabricIngress.forwarding.mpls_counter" + alias: "mpls_counter" + } + spec { + unit: BOTH + } + direct_table_id: 37768578 +} +direct_counters { + preamble { + id: 333425635 + name: "FabricIngress.forwarding.routing_v4_counter" + alias: "routing_v4_counter" + } + spec { + unit: BOTH + } + direct_table_id: 41754650 +} +direct_counters { + preamble { + id: 324042090 + name: "FabricIngress.forwarding.routing_v6_counter" + alias: "routing_v6_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49342721 +} +direct_counters { + preamble { + id: 330020245 + name: "FabricIngress.pre_next.next_mpls_counter" + alias: "next_mpls_counter" + } + spec { + unit: BOTH + } + direct_table_id: 36626242 +} +direct_counters { + preamble { + id: 333692067 + name: "FabricIngress.pre_next.next_vlan_counter" + alias: "next_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 48011802 +} +direct_counters { + preamble { + id: 319194241 + name: "FabricIngress.acl.acl_counter" + alias: "acl_counter" + } + spec { + unit: BOTH + } + direct_table_id: 44104738 +} +direct_counters { + preamble { + id: 322798228 + name: "FabricIngress.next.hashed_counter" + alias: "hashed_counter" + } + spec { + unit: BOTH + } + direct_table_id: 47960972 +} +direct_counters { + preamble { + id: 319194968 + name: "FabricIngress.next.multicast_counter" + alias: "multicast_counter" + } + spec { + unit: BOTH + } + direct_table_id: 40619180 +} +direct_counters { + preamble { + id: 334706097 + name: "FabricIngress.slice_tc_classifier.classifier_stats" + alias: "classifier_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 34606298 +} +direct_counters { + preamble { + id: 327743278 + name: "FabricIngress.qos.queues_stats" + alias: "queues_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 36435258 +} +direct_counters { + preamble { + id: 335275671 + name: "FabricIngress.upf.recirc_stats" + alias: "recirc_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 34400315 +} +direct_counters { + preamble { + id: 328581521 + name: "FabricIngress.int_watchlist.watchlist_counter" + alias: "watchlist_counter" + } + spec { + unit: BOTH + } + direct_table_id: 40748488 +} +direct_counters { + preamble { + id: 334508337 + name: "FabricEgress.stats.flow_counter" + alias: "FabricEgress.stats.flow_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43851059 +} +direct_counters { + preamble { + id: 318892680 + name: "FabricEgress.egress_next.egress_vlan_counter" + alias: "egress_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49262446 +} +direct_counters { + preamble { + id: 325056546 + name: "FabricEgress.int_egress.report_counter" + alias: "report_counter" + } + spec { + unit: BOTH + } + direct_table_id: 46071383 +} +meters { + preamble { + id: 348573637 + name: "FabricIngress.qos.slice_tc_meter" + alias: "slice_tc_meter" + } + spec { + unit: BYTES + } + size: 64 +} +meters { + preamble { + id: 345152250 + name: "FabricIngress.upf.session_meter" + alias: "session_meter" + } + spec { + unit: BYTES + } + size: 20000 +} +meters { + preamble { + id: 343216442 + name: "FabricIngress.upf.app_meter" + alias: "app_meter" + } + spec { + unit: BYTES + } + size: 20000 +} +controller_packet_metadata { + preamble { + id: 81826293 + name: "packet_in" + alias: "packet_in" + annotations: "@controller_header(\"packet_in\")" + } + metadata { + id: 1 + name: "ingress_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + metadata { + id: 2 + name: "_pad0" + bitwidth: 7 + } +} +controller_packet_metadata { + preamble { + id: 76689799 + name: "packet_out" + alias: "packet_out" + annotations: "@controller_header(\"packet_out\")" + } + metadata { + id: 1 + name: "pad0" + annotations: "@padding" + bitwidth: 7 + } + metadata { + id: 2 + name: "egress_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + metadata { + id: 3 + name: "pad1" + annotations: "@padding" + bitwidth: 3 + } + metadata { + id: 4 + name: "queue_id" + bitwidth: 5 + } + metadata { + id: 5 + name: "pad2" + annotations: "@padding" + bitwidth: 5 + } + metadata { + id: 6 + name: "cpu_loopback_mode" + bitwidth: 2 + } + metadata { + id: 7 + name: "do_forwarding" + bitwidth: 1 + } + metadata { + id: 8 + name: "pad3" + annotations: "@padding" + bitwidth: 16 + } + metadata { + id: 9 + name: "pad4" + annotations: "@padding" + bitwidth: 48 + } + metadata { + id: 10 + name: "ether_type" + bitwidth: 16 + } +} +registers { + preamble { + id: 376533241 + name: "FabricEgress.int_egress.seq_number" + alias: "seq_number" + annotations: "@hidden" + } + type_spec { + bitstring { + bit { + bitwidth: 32 + } + } + } + size: 1024 +} +type_info { + serializable_enums { + key: "BridgedMdType_t" + value { + underlying_type { + bitwidth: 8 + } + members { + name: "INVALID" + value: "\000" + } + members { + name: "INGRESS_TO_EGRESS" + value: "\001" + } + members { + name: "EGRESS_MIRROR" + value: "\002" + } + members { + name: "INGRESS_MIRROR" + value: "\003" + } + members { + name: "INT_INGRESS_DROP" + value: "\004" + } + members { + name: "DEFLECTED" + value: "\005" + } + } + } + serializable_enums { + key: "CpuLoopbackMode_t" + value { + underlying_type { + bitwidth: 2 + } + members { + name: "DISABLED" + value: "\000" + } + members { + name: "DIRECT" + value: "\001" + } + members { + name: "INGRESS" + value: "\002" + } + } + } + serializable_enums { + key: "FabricMirrorType_t" + value { + underlying_type { + bitwidth: 3 + } + members { + name: "INVALID" + value: "\000" + } + members { + name: "INT_REPORT" + value: "\001" + } + members { + name: "PACKET_IN" + value: "\002" + } + } + } + serializable_enums { + key: "PortType_t" + value { + underlying_type { + bitwidth: 2 + } + members { + name: "UNKNOWN" + value: "\000" + } + members { + name: "EDGE" + value: "\001" + } + members { + name: "INFRA" + value: "\002" + } + members { + name: "INTERNAL" + value: "\003" + } + } + } + new_types { + key: "FabricPortId_t" + value { + original_type { + bitstring { + bit { + bitwidth: 9 + } + } + } + } + } +} diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_grafana_dashboard.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_grafana_dashboard.sh new file mode 100644 index 0000000000000000000000000000000000000000..f537e5a463b6ee97ebbaa4c0b201a33956259beb --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_grafana_dashboard.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# ----------------------------------- +# CONFIGURATION +# ----------------------------------- + +GRAFANA_URL="http://localhost:80/grafana" # Your Grafana URL +GRAFANA_USERNAME="admin" +GRAFANA_PASSWORD="admin" + +DATASOURCE_NAME="Prometheus" +DASHBOARD_FILE="/home/ubuntu/tfs-ctrl/src/tests/p4-sd-fabric-svc-connectivity/descriptors/grafana-latency.json" # Path to your dashboard JSON + +# ----------------------------------- +# READ DASHBOARD JSON +# ----------------------------------- +if [ ! -f "$DASHBOARD_FILE" ]; then + echo "[ERROR] Dashboard file not found: $DASHBOARD_FILE" + exit 1 +fi + +DASHBOARD_JSON=$(cat "$DASHBOARD_FILE") + +# --------------------------------------- +# 1. Get the datasource UID +# --------------------------------------- + +PROM_UID=$(curl -s \ + -u "${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}" \ + "${GRAFANA_URL}/api/datasources/name/${DATASOURCE_NAME}" \ + | jq -r '.uid') + +if [ -z "$PROM_UID" ] || [ "$PROM_UID" == "null" ]; then + echo "ERROR: Could not retrieve datasource UID. Check datasource name/auth." + exit 1 +fi + +echo "Found datasource UID: $PROM_UID" + +# --------------------------------------- +# 2. Inject the UID into dashboard JSON +# --------------------------------------- + +DASHBOARD_JSON=$(jq --arg uid "$PROM_UID" ' + walk( + if type == "object" and has("datasource") then + .datasource |= + (if type == "object" then .uid = $uid else $uid end) + else . + end + ) +' "$DASHBOARD_FILE") + +# --------------------------------------- +# 3. Wrap in Grafana API import format +# --------------------------------------- + +read -r -d '' IMPORT_JSON << EOF +{ + "dashboard": ${DASHBOARD_JSON}, + "overwrite": true, + "folderId": 0, + "message": "Imported via API" +} +EOF + +# ----------------------------------- +# 4. Import dashboard using API +# ----------------------------------- + +echo "Importing dashboard into Grafana..." + +curl -X POST "${GRAFANA_URL}/api/dashboards/db" \ + -H "Content-Type: application/json" \ + -u "${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}" \ + -d "${IMPORT_JSON}" + +echo +echo "Done" diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_grafana_datasources.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_grafana_datasources.sh new file mode 100644 index 0000000000000000000000000000000000000000..2e82eebe5d4187d0e0adc6f90d73e6bf95ea6ebb --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_grafana_datasources.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# --------------------------- +# CONFIGURATION +# --------------------------- + +TFS_IP="192.168.5.137" + +GRAFANA_URL="http://localhost:80/grafana" # Your Grafana URL +GRAFANA_USERNAME="admin" +GRAFANA_PASSWORD="admin" + +DATASOURCE_NAME="Prometheus" +PROMETHEUS_URL="http://${TFS_IP}:30090/" # URL of your Prometheus server + +# --------------------------- +# CREATE DATA SOURCE PAYLOAD +# --------------------------- + +read -r -d '' DATA_SOURCE_JSON << EOF +{ + "name": "${DATASOURCE_NAME}", + "type": "prometheus", + "access": "proxy", + "url": "${PROMETHEUS_URL}", + "basicAuth": false, + "isDefault": true, + "editable": true +} +EOF + +# --------------------------- +# SEND REQUEST (with username/password) +# --------------------------- + +echo "Creating Prometheus datasource in Grafana..." + +curl -X POST "${GRAFANA_URL}/api/datasources" \ + -H "Content-Type: application/json" \ + -u "${GRAFANA_USERNAME}:${GRAFANA_PASSWORD}" \ + -d "${DATA_SOURCE_JSON}" + +echo +echo "Done" diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_01_bootstrap.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_01_bootstrap.sh new file mode 100755 index 0000000000000000000000000000000000000000..3e7f22b90e529408778503f054bda739b13dbf2f --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_01_bootstrap.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +# make sure to source the following scripts: +# - my_deploy.sh +# - tfs_runtime_env_vars.sh + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_bootstrap.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_02_service_provision_int.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_02_service_provision_int.sh new file mode 100755 index 0000000000000000000000000000000000000000..6d33f8a9b28117194f7c1f4eaefcdb4fa0ec2e95 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_02_service_provision_int.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_int.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_03_service_provision_l2.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_03_service_provision_l2.sh new file mode 100755 index 0000000000000000000000000000000000000000..f5d4c814cd33f602969dde6e22e6dcbd177d5875 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_03_service_provision_l2.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l2.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_04_service_provision_l3.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_04_service_provision_l3.sh new file mode 100755 index 0000000000000000000000000000000000000000..1b27756809f06ceb0c6d3130b60c3494cc91cccd --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_04_service_provision_l3.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l3.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_05_service_provision_acl.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_05_service_provision_acl.sh new file mode 100755 index 0000000000000000000000000000000000000000..fc95c0d61f95f3fd6145f0bf5358f13572e6dc70 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_05_service_provision_acl.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_acl.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_06_service_deprovision_int.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_06_service_deprovision_int.sh new file mode 100755 index 0000000000000000000000000000000000000000..035353e196da2f935600dae88f0547924bb44e4b --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_06_service_deprovision_int.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_int.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_07_service_deprovision_l2.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_07_service_deprovision_l2.sh new file mode 100755 index 0000000000000000000000000000000000000000..fb60d0eba92ae0d56f2167d2f4099684ef58301d --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_07_service_deprovision_l2.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l2.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_08_service_deprovision_l3.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_08_service_deprovision_l3.sh new file mode 100755 index 0000000000000000000000000000000000000000..6c14c8ab9564f3787fc7a5c37d8d7c61b0178a22 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_08_service_deprovision_l3.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l3.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_09_service_deprovision_acl.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_09_service_deprovision_acl.sh new file mode 100755 index 0000000000000000000000000000000000000000..1e3bd5b09ebe7d6e078e073139d3f8951f5d13d0 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_09_service_deprovision_acl.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_acl.py diff --git a/src/tests/p4-fabric-tna/run_test_03a_service_provision_l2.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_10_cleanup.sh similarity index 77% rename from src/tests/p4-fabric-tna/run_test_03a_service_provision_l2.sh rename to src/tests/p4-sd-fabric-svc-connectivity/run_test_10_cleanup.sh index 618a3457f481a0cbe23888dd7e0d13e4f36dc68a..558bf7e322310c21fa9a6550ffb11714ca61bddf 100755 --- a/src/tests/p4-fabric-tna/run_test_03a_service_provision_l2.sh +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_10_cleanup.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,4 +14,4 @@ # limitations under the License. source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l2.py +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_cleanup.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/run_test_11_purge.sh b/src/tests/p4-sd-fabric-svc-connectivity/run_test_11_purge.sh new file mode 100755 index 0000000000000000000000000000000000000000..02e500f88a508650e91621c2df28a84da8a4b5f6 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/run_test_11_purge.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_purge.py diff --git a/src/tests/p4-sd-fabric-svc-connectivity/setup.sh b/src/tests/p4-sd-fabric-svc-connectivity/setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..5a1daf120010addbece095303d7a673934c9b822 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/setup.sh @@ -0,0 +1,22 @@ +#! /bin/bash +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + + +export POD_NAME=$(kubectl get pods -n=tfs | grep device | awk '{print $1}') + +kubectl exec ${POD_NAME} -n=tfs -c=server -- mkdir -p /root/p4 + +kubectl cp src/tests/p4-sd-fabric-svc-connectivity/p4src/p4info.txt tfs/${POD_NAME}:/root/p4 -c=server +kubectl cp src/tests/p4-sd-fabric-svc-connectivity/p4src/bmv2.json tfs/${POD_NAME}:/root/p4 -c=server diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_acl.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_acl.py similarity index 92% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_acl.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_acl.py index fa8f313976680dc3ffe8a1ed27f118903223f64b..e90ff1687ab8462dbd0add77514b08303fa73f65 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_acl.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_acl.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,15 +20,12 @@ from common.tools.object_factory.Service import json_service_id from context.client.ContextClient import ContextClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DEV_NB, - P4_DEV_NB, - ACL_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +ACL_RULES = 1 LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_int.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_int.py similarity index 92% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_int.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_int.py index fe73810c085082a5cb798bb761397d2fabe9a4f0..3709d808b73c13e6f7d45e9af7a03cd108fbfd9f 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_int.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_int.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,15 +20,12 @@ from common.tools.object_factory.Service import json_service_id from context.client.ContextClient import ContextClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DEV_NB, - P4_DEV_NB, - INT_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +INT_RULES = 19 LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l2.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l2.py similarity index 92% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l2.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l2.py index bd1d740b92460e218ee0006ed9ce5ec1751e257d..e97b84b3672a5d714180c51ba9f35918b949aba5 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l2.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l2.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,15 +20,12 @@ from common.tools.object_factory.Service import json_service_id from context.client.ContextClient import ContextClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DEV_NB, - P4_DEV_NB, - L2_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +L2_RULES = 12 LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l3.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l3.py similarity index 92% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l3.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l3.py index 7f669fbe3c56b3d04b52e0c7f640d09ab45c739a..0fc2a7363d32f6d8d8491d4e2f12f94a976500b2 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l3.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_deprovision_l3.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,15 +20,12 @@ from common.tools.object_factory.Service import json_service_id from context.client.ContextClient import ContextClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DEV_NB, - P4_DEV_NB, - L3_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +L3_RULES = 14 LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_acl.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_acl.py similarity index 84% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_acl.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_acl.py index d9da5d3814a006552254adf3cd28ed9588548d2a..e200253ed4e6c548513aa255935f74baf1760689 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_acl.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_acl.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,23 +13,30 @@ # limitations under the License. import logging -from common.proto.context_pb2 import ServiceStatusEnum, ServiceTypeEnum +import os +from common.proto.context_pb2 import ServiceTypeEnum from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, device_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DESC_FILE_SERVICE_P4_ACL, - DEV_NB, - P4_DEV_NB, - ACL_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +ACL_RULES = 1 + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_FILE_SERVICE_P4_ACL = os.path.join(TEST_PATH, 'service-p4-acl.json') +assert os.path.exists(DESC_FILE_SERVICE_P4_ACL), "Invalid path to the ACL service descriptor" LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_int.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_int.py similarity index 85% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_int.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_int.py index 13ae470c8cb447a55aa0ff75511253190c2c0419..a112e85d2680fd7e2b6335414ad06fc73229cb30 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_int.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_int.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os import logging from common.proto.context_pb2 import ServiceTypeEnum from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results @@ -20,16 +21,22 @@ from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, device_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DESC_FILE_SERVICE_P4_INT, - DEV_NB, - P4_DEV_NB, - INT_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +INT_RULES = 19 + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_FILE_SERVICE_P4_INT = os.path.join(TEST_PATH, 'service-p4-int.json') +assert os.path.exists(DESC_FILE_SERVICE_P4_INT), "Invalid path to the INT service descriptor" LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l2.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l2.py similarity index 82% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l2.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l2.py index 5de0d511f3fdc354e1b649254e24d84547122e7b..d80f246308ffc8f48bc1d1242a3eb1228c2eb8e4 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l2.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l2.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,23 +13,30 @@ # limitations under the License. import logging -from common.proto.context_pb2 import ServiceStatusEnum, ServiceTypeEnum +import os +from common.proto.context_pb2 import ServiceTypeEnum from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, device_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DESC_FILE_SERVICE_P4_L2_SIMPLE, - DEV_NB, - P4_DEV_NB, - L2_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +L2_RULES = 12 + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_FILE_SERVICE_P4_L2 = os.path.join(TEST_PATH, 'service-p4-l2.json') +assert os.path.exists(DESC_FILE_SERVICE_P4_L2), "Invalid path to the L2 service descriptor" LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) @@ -60,7 +67,7 @@ def test_service_creation_l2( # Load service descriptor_loader = DescriptorLoader( - descriptors_file=DESC_FILE_SERVICE_P4_L2_SIMPLE, + descriptors_file=DESC_FILE_SERVICE_P4_L2, context_client=context_client, device_client=device_client, service_client=service_client ) results = descriptor_loader.process() diff --git a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l3.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l3.py similarity index 84% rename from src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l3.py rename to src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l3.py index 2bd6731440ff439a0def44bf26e290ba516da69c..80e1547d9fe4b25f3b893e1440e2cefebeafc7f5 100644 --- a/src/tests/p4-fabric-tna/tests-service/test_functional_service_provision_l3.py +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-service/test_functional_service_provision_l3.py @@ -1,4 +1,4 @@ -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,23 +13,30 @@ # limitations under the License. import logging -from common.proto.context_pb2 import ServiceStatusEnum, ServiceTypeEnum +import os +from common.proto.context_pb2 import ServiceTypeEnum from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from tests.Fixtures import context_client, device_client, service_client # pylint: disable=unused-import -from tests.tools.test_tools_p4 import ( - ADMIN_CONTEXT_ID, - DESC_FILE_SERVICE_P4_L3, - DEV_NB, - P4_DEV_NB, - L3_RULES, - identify_number_of_p4_devices, - get_number_of_rules, - verify_active_service_type -) +from tests.tools.test_tools_p4 import * + +DEV_NB = 4 +P4_DEV_NB = 1 + +L3_RULES = 14 + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_FILE_SERVICE_P4_L3 = os.path.join(TEST_PATH, 'service-p4-l3.json') +assert os.path.exists(DESC_FILE_SERVICE_P4_L3), "Invalid path to the L3 service descriptor" LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) diff --git a/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_bootstrap.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_bootstrap.py new file mode 100644 index 0000000000000000000000000000000000000000..8807764e43b15557c31ff21d266a40f01fb44b9e --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_bootstrap.py @@ -0,0 +1,80 @@ +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging, os, time +from common.proto.context_pb2 import DeviceOperationalStatusEnum, Empty +from common.tools.descriptor.Loader import DescriptorLoader, \ + check_descriptor_load_results, validate_empty_scenario +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from tests.Fixtures import context_client, device_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_TOPOLOGY = os.path.join(TEST_PATH, 'topology.json') +assert os.path.exists(DESC_TOPOLOGY), "Invalid path to the topology descriptor" + +def test_scenario_bootstrap( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient # pylint: disable=redefined-outer-name +) -> None: + """ + This test assumes that the environment is in a clean state (empty) + before bootstrapping the P4 topology. + It loads the topology descriptor and verifies that no other services + or slices are created. + """ + validate_empty_scenario(context_client) + + descriptor_loader = DescriptorLoader( + descriptors_file=DESC_TOPOLOGY, context_client=context_client, device_client=device_client) + results = descriptor_loader.process() + check_descriptor_load_results(results, descriptor_loader) + descriptor_loader.validate() + + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 + +def test_scenario_devices_enabled( + context_client : ContextClient # pylint: disable=redefined-outer-name +) -> None: + """ + This test validates that the devices are enabled. + """ + DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED + + num_devices = -1 + num_devices_enabled, num_retry = 0, 0 + while (num_devices != num_devices_enabled) and (num_retry < 10): + time.sleep(1.0) + response = context_client.ListDevices(Empty()) + num_devices = len(response.devices) + num_devices_enabled = 0 + for device in response.devices: + if device.device_operational_status != DEVICE_OP_STATUS_ENABLED: continue + num_devices_enabled += 1 + LOGGER.info('Num Devices enabled: {:d}/{:d}'.format(num_devices_enabled, num_devices)) + num_retry += 1 + assert num_devices_enabled == num_devices diff --git a/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_cleanup.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_cleanup.py new file mode 100644 index 0000000000000000000000000000000000000000..12d5afac2129732999ea95ab6b5e3e146941daa8 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_cleanup.py @@ -0,0 +1,49 @@ +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging, os +from common.tools.descriptor.Loader import DescriptorLoader, validate_empty_scenario +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from tests.Fixtures import context_client, device_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_TOPOLOGY = os.path.join(TEST_PATH, 'topology.json') +assert os.path.exists(DESC_TOPOLOGY), "Invalid path to the topology descriptor" + +def test_scenario_cleanup( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient # pylint: disable=redefined-outer-name +) -> None: + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 + + # Unload topology and validate empty scenario + descriptor_loader = DescriptorLoader( + descriptors_file=DESC_TOPOLOGY, context_client=context_client, device_client=device_client) + descriptor_loader.validate() + descriptor_loader.unload() + validate_empty_scenario(context_client) diff --git a/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_purge.py b/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_purge.py new file mode 100644 index 0000000000000000000000000000000000000000..1d7f1523cd141a2dc2f807e56c360d81fef6cfc8 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-connectivity/tests-setup/test_functional_purge.py @@ -0,0 +1,83 @@ +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging +from common.proto.context_pb2 import ServiceId, DeviceId, LinkId, ServiceStatusEnum, ServiceTypeEnum +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Device import json_device_id +from common.tools.object_factory.Service import json_service_id +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from service.client.ServiceClient import ServiceClient +from tests.Fixtures import context_client, device_client, service_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +def test_clean_services( + context_client : ContextClient, # pylint: disable=redefined-outer-name + service_client : ServiceClient # pylint: disable=redefined-outer-name +) -> None: + response = context_client.ListServices(ADMIN_CONTEXT_ID) + LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response))) + + for service in response.services: + service_id = service.service_id + assert service_id + + service_uuid = service_id.service_uuid.uuid + context_uuid = service_id.context_id.context_uuid.uuid + assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE + + # Delete service + service_client.DeleteService(ServiceId(**json_service_id(service_uuid, json_context_id(context_uuid)))) + +def test_clean_links( + context_client : ContextClient, # pylint: disable=redefined-outer-name +) -> None: + response = context_client.ListLinks(ADMIN_CONTEXT_ID) + + for link in response.links: + link_id = link.link_id + + # Delete link + context_client.RemoveLink(LinkId(**link_id)) + +def test_clean_devices( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient # pylint: disable=redefined-outer-name +) -> None: + response = context_client.ListDevices(ADMIN_CONTEXT_ID) + LOGGER.warning('Devices[{:d}] = {:s}'.format(len(response.devices), grpc_message_to_json_string(response))) + + for device in response.devices: + device_uuid = device.device_id.device_uuid.uuid + device_json = json_device_id(device_uuid) + + # Delete device + device_client.DeleteDevice(DeviceId(**device_json)) + +def test_clean_context( + context_client : ContextClient # pylint: disable=redefined-outer-name +) -> None: + # Verify the scenario has no services/slices + response = context_client.ListTopologies(ADMIN_CONTEXT_ID) + + for topology in response.topologies: + topology_id = topology.topology_id + response = context_client.RemoveTopology(topology_id) + + response = context_client.RemoveContext(ADMIN_CONTEXT_ID) diff --git a/src/tests/p4-sd-fabric-svc-upf/README.md b/src/tests/p4-sd-fabric-svc-upf/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2a9eff3044a05e1f982f63e6edd08daac0446d2d --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/README.md @@ -0,0 +1,158 @@ +# Tests for TFS Ecosystem Days #7 - PoC#1 + +This directory contains the necessary scripts and configurations to run tests atop a Stratum-based P4 switch that acts as a 5G UPF. +The P4 data plane is based on ONF's SD-Fabric implementation, titled [fabric-tna](https://github.com/stratum/fabric-tna) + +## Prerequisites + +You need Python3, which should already be installed while preparing for a TFS build. +Additionally, `pytest` is also mandatory as it is used by our tests below. +Aliasing python with python3 will also help bridging issues between older and newer python versions. + +```shell +alias python='python3' +pip3 install pytest +pip3 install grpclib protobuf +pip3 install grpcio-tools +``` + +The versions used for this test are: + +- `protobuf` 3.20.3 +- `grpclib` 0.4.4 +- `grpcio` 1.47.5 +- `grpcio-tools` 1.47.5 + +After the installation of `grpclib`, protoc-gen-grpclib_python binary is in /home/$USER/.local/bin/ +First we copy it to /usr/local/bin/: + +```shell + sudo cp /home/$USER/.local/bin/protoc-gen-grpclib_python /usr/local/bin/ +``` + +Then, we include this path to the PYTHONPATH: + +```shell +export PYTHONPATH="${PYTHONPATH}:/usr/local/bin/protoc-gen-grpclib_python" +``` + +You need to build and deploy a software-based Stratum switch, before being able to use TFS to control it. +To do so, follow the instructions in the `./topology` folder. + +## Steps to setup and run a TFS program atop Stratum + +To conduct this test, follow the steps below. + +### Deploy TFS + +Go to the TFS parent folder. + +```shell +cd ~/tfs-ctrl/ +``` + +Edit `my_deploy.sh` to include the following TFS components and then source the file. + +```shell +nano my_deploy.sh +`export TFS_COMPONENTS="context device pathcomp service nbi webui"` +``` + +```shell +source my_deploy.sh && source tfs_runtime_env_vars.sh +``` + +Now deploy TFS: + +```shell +./deploy/all.sh +``` + +When deployed, execute the following command to ensure that the above components are all in place and in a running state: + +```shell +./deploy/show.sh +``` + +### Path setup + +Ensure that `PATH` variable contains the parent project directory, e.g., "home/$USER/tfs-ctrl". + +Ensure that `PYTHONPATH` variable contains the source code directory of TFS, e.g., "home/$USER/tfs-ctrl/src" + +## Topology setup + +Open `topology/README.md` and follow the instructions on how to install a Stratum switch in a Linux namespace. + +## P4 artifacts + +In the `./p4src/` directory there are compiled P4 artifacts of the pipeline that will be pushed to the P4 switch, along with the P4-runtime definitions. +The `./setup.sh` script copies from this directory. If you need to change the P4 program, make sure to put the compiled artifacts there. + +## Tests + +A set of tests is implemented, each focusing on different aspects of TFS. +For each of these tests, an auxiliary bash script allows to run it with less typing. + +| Bash Runner | Purpose | +| --------------------------------------------- | --------------------------------------------------------------------------- | +| setup.sh | Copy P4 artifacts into the SBI pod | +| run_test_01_bootstrap.sh | Connect TFS to the P4 switch | +| run_test_02_service_provision_upf.sh | Install UPF forwarding rules via a dedicated P4 UPF service handler | +| run_test_03_service_deprovision_upf.sh | Uninstall UPF forwarding rules via a dedicated P4 PF service handler | +| run_test_04_cleanup.sh | Clean-up context and topology and disconnect TFS from the P4 switch | + +Each of the tests above is described in detail below. + +### Step 0: Copy the necessary P4 artifacts into the TFS SBI service pod + +The setup script copies the necessary artifacts to the SBI service pod. +It should be run just once, after a fresh install of TFS. +If you `deploy/all.sh` again, you need to repeat this step. + +```shell +cd ~/tfs-ctrl/ +source my_deploy.sh && source tfs_runtime_env_vars.sh +bash src/tests/p4-sd-fabric-svc-upf/setup.sh +``` + +### Step 1: Bootstrap topology + +The bootstrap script registers the context, topology, links, and devices to TFS. + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-svc-upf/run_test_01_bootstrap.sh +``` + +### Step 2: Provision UPF via the Service API + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-svc-upf/run_test_02_service_provision_upf.sh +``` + +### Step 3: Deprovision UPF via the Service API + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-svc-upf/run_test_03_service_deprovision_upf.sh +``` + +### Step 4: Deprovision topology + +Delete all the objects (context, topology, links, devices) from TFS: + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-svc-upf/run_test_04_cleanup.sh +``` + +### Step 5: Purge context and topology (if needed) + +Alternatively, a purge test is implemented; this test removes services, links, devices, topology, and context in this order. + +```shell +cd ~/tfs-ctrl/ +bash src/tests/p4-sd-fabric-svc-upf/run_test_05_purge.sh +``` diff --git a/src/tests/p4-sd-fabric-svc-upf/__init__.py b/src/tests/p4-sd-fabric-svc-upf/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..023830645e0fcb60e3f8583674a954810af222f2 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/all.json b/src/tests/p4-sd-fabric-svc-upf/descriptors/all.json new file mode 100644 index 0000000000000000000000000000000000000000..cebb197a40f9351b84abab1e14f7b212ab01db0e --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/all.json @@ -0,0 +1,134 @@ +{ + "contexts": [ + {"context_id": {"context_uuid": {"uuid": "admin"}}} + ], + "topologies": [ + {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} + } + ], + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, + "name": "tfs-sdn-controller", + "device_type": "teraflowsdn", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "mgmt", "name": "mgmt", "type": "mgmt-int"}] + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "5gc"}}, + "device_type": "oran-cn", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "mgmt", "name": "mgmt", "type": "mgmt-int"}] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "5g-gNb"}}, + "device_type": "emu-packet-radio-router", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "eth1", "name": "eth1", "type": "copper"}] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, + "device_type": "p4-switch", + "device_drivers": ["DEVICEDRIVER_P4"], + "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", + "name": "sw1-5g-upf", + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "192.168.7.56"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "50001"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "id": 1, + "name": "sw1-5g-upf", + "vendor": "Open Networking Foundation", + "hw_ver": "BMv2 simple_switch", + "sw_ver": "Stratum", + "timeout": 60, + "p4bin": "/root/p4/bmv2.json", + "p4info": "/root/p4/p4info.txt", + "endpoints": [ + {"uuid": "sw1-1", "name": "1", "type": "port-dp-net-access"}, + {"uuid": "sw1-2", "name": "2", "type": "port-dp-net-core"}, + {"uuid": "sw1-3", "name": "3", "type": "port-cp-5gc"}, + {"uuid": "sw1-4", "name": "4", "type": "port-cp-sdn"} + ] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "data-network"}}, + "device_type": "network", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "eth1", "name": "eth1", "type": "copper"}] + }}} + ] + } + } + ], + "links": [ + { + "link_id": {"link_uuid": {"uuid": "5g-gNb/eth1==sw1-5g-upf/sw1-1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "5g-gNb"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-1==5g-gNb/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-1"}}, + {"device_id": {"device_uuid": {"uuid": "5g-gNb"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-2==data-network/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-2"}}, + {"device_id": {"device_uuid": {"uuid": "data-network"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "data-network/eth1==sw1-5g-upf/sw1-2"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "data-network"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-2"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-3==5gc/mgmt"}}, "link_type": "LINKTYPE_MANAGEMENT", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-3"}}, + {"device_id": {"device_uuid": {"uuid": "5gc"}}, "endpoint_uuid": {"uuid": "mgmt"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-4==tfs-sdn-controller/mgmt"}}, "link_type": "LINKTYPE_MANAGEMENT", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-4"}}, + {"device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, "endpoint_uuid": {"uuid": "mgmt"}} + ] + } + ] +} diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/context.json b/src/tests/p4-sd-fabric-svc-upf/descriptors/context.json new file mode 100644 index 0000000000000000000000000000000000000000..08e617ba5f9a2d1c839d1d17d1fcae9d9659f89e --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/context.json @@ -0,0 +1,5 @@ +{ + "contexts": [ + {"context_id": {"context_uuid": {"uuid": "admin"}}} + ] +} diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/devices.json b/src/tests/p4-sd-fabric-svc-upf/descriptors/devices.json new file mode 100644 index 0000000000000000000000000000000000000000..c537ead3c7418da7673581111ced38f8443952d2 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/devices.json @@ -0,0 +1,89 @@ +{ + "devices": [ + { + "device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, + "name": "tfs-sdn-controller", + "device_type": "teraflowsdn", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_operational_status": "DEVICEOPERATIONALSTATUS_UNDEFINED", + "device_config": {"config_rules": [ + {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "mgmt", "name": "mgmt", "type": "mgmt-int"}] + }}} + ]} + }, + { + "device_id": {"device_uuid": {"uuid": "5gc"}}, + "device_type": "oran-cn", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "mgmt", "name": "mgmt", "type": "mgmt-int"}] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "5g-gNb"}}, + "device_type": "emu-packet-radio-router", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "eth1", "name": "eth1", "type": "copper"}] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, + "device_type": "p4-switch", + "device_drivers": ["DEVICEDRIVER_P4"], + "device_operational_status": "DEVICEOPERATIONALSTATUS_DISABLED", + "name": "sw1-5g-upf", + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "192.168.7.56"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "50001"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "id": 1, + "name": "sw1-5g-upf", + "vendor": "Open Networking Foundation", + "hw_ver": "BMv2 simple_switch", + "sw_ver": "Stratum", + "timeout": 60, + "p4bin": "/root/p4/bmv2.json", + "p4info": "/root/p4/p4info.txt", + "endpoints": [ + {"uuid": "sw1-1", "name": "1", "type": "port-dp-net-access"}, + {"uuid": "sw1-2", "name": "2", "type": "port-dp-net-core"}, + {"uuid": "sw1-3", "name": "3", "type": "port-cp-5gc"}, + {"uuid": "sw1-4", "name": "4", "type": "port-cp-sdn"} + ] + }}} + ] + } + }, + { + "device_id": {"device_uuid": {"uuid": "data-network"}}, + "device_type": "network", + "device_drivers": ["DEVICEDRIVER_UNDEFINED"], + "device_config": { + "config_rules": [ + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, + {"action": "CONFIGACTION_SET", "custom": {"resource_key": "_connect/settings", "resource_value": { + "endpoints": [{"uuid": "eth1", "name": "eth1", "type": "copper"}] + }}} + ] + } + } + ] +} diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/links.json b/src/tests/p4-sd-fabric-svc-upf/descriptors/links.json new file mode 100644 index 0000000000000000000000000000000000000000..ea28f012b1169abad388bff5ca3cfa914aa62927 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/links.json @@ -0,0 +1,40 @@ +{ + "links": [ + { + "link_id": {"link_uuid": {"uuid": "5g-gNb/eth1==sw1-5g-upf/sw1-1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "5g-gNb"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-1==5g-gNb/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-1"}}, + {"device_id": {"device_uuid": {"uuid": "5g-gNb"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-2==data-network/eth1"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-2"}}, + {"device_id": {"device_uuid": {"uuid": "data-network"}}, "endpoint_uuid": {"uuid": "eth1"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "data-network/eth1==sw1-5g-upf/sw1-2"}}, "link_type": "LINKTYPE_COPPER", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "data-network"}}, "endpoint_uuid": {"uuid": "eth1"}}, + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-2"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-3==5gc/mgmt"}}, "link_type": "LINKTYPE_MANAGEMENT", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-3"}}, + {"device_id": {"device_uuid": {"uuid": "5gc"}}, "endpoint_uuid": {"uuid": "mgmt"}} + ] + }, + { + "link_id": {"link_uuid": {"uuid": "sw1-5g-upf/sw1-4==tfs-sdn-controller/mgmt"}}, "link_type": "LINKTYPE_MANAGEMENT", "link_endpoint_ids": [ + {"device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, "endpoint_uuid": {"uuid": "sw1-4"}}, + {"device_id": {"device_uuid": {"uuid": "tfs-sdn-controller"}}, "endpoint_uuid": {"uuid": "mgmt"}} + ] + } + ] +} diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/send_descriptors_service.sh b/src/tests/p4-sd-fabric-svc-upf/descriptors/send_descriptors_service.sh new file mode 100644 index 0000000000000000000000000000000000000000..97a7895defe3762cc09cbec48b490525633dc89a --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/send_descriptors_service.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +CREDENTIALS="admin:admin" +CONTEXT="admin" +TFS_IP="192.168.5.137" +HEADER="Content-Type: application/json" + +##### Raw HTTP requests to provision the UPF TFS service +# curl -X PUT --header "Content-Type: application/json" --data @service-upf.json --user "admin:admin" http://192.168.5.137/tfs-api/context/admin/service/p4-service-upf + +curl -X PUT --header "${HEADER}" --data @service-upf.json --user ${CREDENTIALS} http://${TFS_IP}/tfs-api/context/${CONTEXT}/service/p4-service-upf diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/send_descriptors_topo.sh b/src/tests/p4-sd-fabric-svc-upf/descriptors/send_descriptors_topo.sh new file mode 100644 index 0000000000000000000000000000000000000000..80fa2a24f40ad688d91850bce16bbca604942e86 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/send_descriptors_topo.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +CREDENTIALS="admin:admin" +CONTEXT="admin" +TFS_IP="192.168.5.137" +HEADER="Content-Type: application/json" + +###### Disclaimer: Currently TFS does not possess a single NBI endpoint where all context, topologies, devices, and links can be given at once. +# For this reason, you need to issue 4 different requests to 4 different NBI endpoints as follows. + +# curl -X POST --header "Content-Type: application/json" --data @context.json --user "admin:admin" http://192.168.5.137/tfs-api/contexts +# curl -X POST --header "Content-Type: application/json" --data @topologies.json --user "admin:admin" http://192.168.5.137/tfs-api/context/admin/topologies +# curl -X POST --header "Content-Type: application/json" --data @devices.json --user "admin:admin" http://192.168.5.137/tfs-api/devices +# curl -X POST --header "Content-Type: application/json" --data @links.json --user "admin:admin" http://192.168.5.137/tfs-api/links + +dispatch() { + echo "Onboarding topology" + curl -X POST --header "${HEADER}" --data @context.json --user ${CREDENTIALS} http://${TFS_IP}/tfs-api/contexts + curl -X POST --header "${HEADER}" --data @topologies.json --user ${CREDENTIALS} http://${TFS_IP}/tfs-api/context/${CONTEXT}/topologies + curl -X POST --header "${HEADER}" --data @devices.json --user ${CREDENTIALS} http://${TFS_IP}/tfs-api/devices + curl -X POST --header "${HEADER}" --data @links.json --user ${CREDENTIALS} http://${TFS_IP}/tfs-api/links +} + +dispatch + +exit 0 diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/service-upf-ui.json b/src/tests/p4-sd-fabric-svc-upf/descriptors/service-upf-ui.json new file mode 100644 index 0000000000000000000000000000000000000000..d031de781d1ad05be84fc1c27121279e4fc03d66 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/service-upf-ui.json @@ -0,0 +1,144 @@ +{ + "services": [ + { + "service_id": { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "service_uuid": {"uuid": "p4-service-upf"} + }, + "name": "p4-service-upf", + "service_type": "SERVICETYPE_UPF", + "service_endpoint_ids": [ + { + "device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, + "endpoint_uuid": {"uuid": "sw1-1"} + }, + { + "device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, + "endpoint_uuid": {"uuid": "sw1-2"} + } + ], + "service_config": { + "config_rules": [ + { + "action": "CONFIGACTION_SET", + "custom": { + "resource_key": "/settings", + "resource_value": { + "switch_info": [ + { + "sw1-5g-upf": { + "arch": "v1model", + "dpid": 1, + "port_list": [ + { + "port_id": 1, + "port_type": "host", + "vlan_id": 4094 + }, + { + "port_id": 2, + "port_type": "host", + "vlan_id": 4094 + } + ], + "fwd_list": [ + { + "port_id": 1, + "host_mac": "50:3e:aa:85:89:09", + "host_label": "N3 - 5G gNB" + }, + { + "port_id": 2, + "host_mac": "50:3e:aa:52:3e:38", + "host_label": "N3 - 5G UPF" + }, + { + "port_id": 1, + "host_mac": "18:a6:f7:0e:73:e5", + "host_label": "N6 - 5G UPF" + }, + { + "port_id": 2, + "host_mac": "50:3e:aa:96:ba:dd", + "host_label": "N6 - Data Network" + } + ], + "routing_list": [ + { + "port_id": 1, + "ipv4_dst": "10.10.2.2", + "ipv4_prefix_len": 32, + "mac_src": "18:a6:f7:0e:73:e5", + "mac_dst": "50:3e:aa:96:ba:dd" + }, + { + "port_id": 2, + "ipv4_dst": "12.1.1.0", + "ipv4_prefix_len": 24, + "mac_src": "50:3e:aa:52:3e:38", + "mac_dst": "50:3e:aa:85:89:09" + } + ], + "upf": { + "uplink_port": 1, + "uplink_ip": "10.10.1.1", + "uplink_mac": "50:3e:aa:52:3e:38", + + "downlink_port": 2, + "downlink_ip": "10.10.2.1", + "downlink_mac": "18:a6:f7:0e:73:e5", + + "slice_id": 0, + "teid": 1, + "app_id": 0, + "app_meter_id": 0, + "ctr_id": 401, + "tc_id": 3, + "tunnel_peer_id": 1 + }, + "gnb": { + "ip": "10.10.1.2", + "mac": "50:3e:aa:85:89:09" + }, + "ue_list": [ + { + "ue_id": "UE 1", + "ue_ip": "12.1.1.51", + "pdu_sessions": [ + { + "pdu_session_id": 0, + "dnn": "Data Network 1", + "pdu_session_type": "0x0800", + "gtpu_tunnel": { + "uplink": { + "src": "10.10.1.2", + "dst": "10.10.1.1" + }, + "downlink": { + "src": "10.10.1.1", + "dst": "10.10.1.2" + } + } + } + ], + "qos_flows": [ + { + "qfi": 0, + "5qi": 9, + "qos_type": "Non-GBR" + } + ] + } + ] + } + } + ] + } + } + } + ] + }, + "service_constraints": [] + } + ] +} diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/service-upf.json b/src/tests/p4-sd-fabric-svc-upf/descriptors/service-upf.json new file mode 100644 index 0000000000000000000000000000000000000000..e1437ca2f3861f03a4815e688b33d157a143a3b0 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/service-upf.json @@ -0,0 +1,140 @@ +{ + "service_id": { + "context_id": {"context_uuid": {"uuid": "admin"}}, + "service_uuid": {"uuid": "p4-service-upf"} + }, + "name": "p4-service-upf", + "service_type": "SERVICETYPE_UPF", + "service_endpoint_ids": [ + { + "device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, + "endpoint_uuid": {"uuid": "sw1-1"} + }, + { + "device_id": {"device_uuid": {"uuid": "sw1-5g-upf"}}, + "endpoint_uuid": {"uuid": "sw1-2"} + } + ], + "service_config": { + "config_rules": [ + { + "action": "CONFIGACTION_SET", + "custom": { + "resource_key": "/settings", + "resource_value": { + "switch_info": [ + { + "sw1-5g-upf": { + "arch": "v1model", + "dpid": 1, + "port_list": [ + { + "port_id": 1, + "port_type": "host", + "vlan_id": 4094 + }, + { + "port_id": 2, + "port_type": "host", + "vlan_id": 4094 + } + ], + "fwd_list": [ + { + "port_id": 1, + "host_mac": "50:3e:aa:85:89:09", + "host_label": "N3 - 5G gNB" + }, + { + "port_id": 2, + "host_mac": "50:3e:aa:52:3e:38", + "host_label": "N3 - 5G UPF" + }, + { + "port_id": 1, + "host_mac": "18:a6:f7:0e:73:e5", + "host_label": "N6 - 5G UPF" + }, + { + "port_id": 2, + "host_mac": "50:3e:aa:96:ba:dd", + "host_label": "N6 - Data Network" + } + ], + "routing_list": [ + { + "port_id": 1, + "ipv4_dst": "10.10.2.2", + "ipv4_prefix_len": 32, + "mac_src": "18:a6:f7:0e:73:e5", + "mac_dst": "50:3e:aa:96:ba:dd" + }, + { + "port_id": 2, + "ipv4_dst": "12.1.1.0", + "ipv4_prefix_len": 24, + "mac_src": "50:3e:aa:52:3e:38", + "mac_dst": "50:3e:aa:85:89:09" + } + ], + "upf": { + "uplink_port": 1, + "uplink_ip": "10.10.1.1", + "uplink_mac": "50:3e:aa:52:3e:38", + + "downlink_port": 2, + "downlink_ip": "10.10.2.1", + "downlink_mac": "18:a6:f7:0e:73:e5", + + "slice_id": 0, + "teid": 1, + "app_id": 0, + "app_meter_id": 0, + "ctr_id": 401, + "tc_id": 3, + "tunnel_peer_id": 1 + }, + "gnb": { + "ip": "10.10.1.2", + "mac": "50:3e:aa:85:89:09" + }, + "ue_list": [ + { + "ue_id": "UE 1", + "ue_ip": "12.1.1.51", + "pdu_sessions": [ + { + "pdu_session_id": 0, + "dnn": "Data Network 1", + "pdu_session_type": "0x0800", + "gtpu_tunnel": { + "uplink": { + "src": "10.10.1.2", + "dst": "10.10.1.1" + }, + "downlink": { + "src": "10.10.1.1", + "dst": "10.10.1.2" + } + } + } + ], + "qos_flows": [ + { + "qfi": 0, + "5qi": 9, + "qos_type": "Non-GBR" + } + ] + } + ] + } + } + ] + } + } + } + ] + }, + "service_constraints": [] +} diff --git a/src/tests/p4-sd-fabric-svc-upf/descriptors/topologies.json b/src/tests/p4-sd-fabric-svc-upf/descriptors/topologies.json new file mode 100644 index 0000000000000000000000000000000000000000..a38381fb7f5f17a21e36bab67d7622ec485eb600 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/descriptors/topologies.json @@ -0,0 +1,6 @@ +{ + "topologies": [ + {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} + } + ] +} diff --git a/src/tests/p4-sd-fabric-svc-upf/p4src/README.md b/src/tests/p4-sd-fabric-svc-upf/p4src/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e17d044fb6100c13e47f1dffb779f4800c59b9d3 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/p4src/README.md @@ -0,0 +1,24 @@ +# P4 Sources + +We employ the P4 sources from the [fabric-tna](https://github.com/stratum/fabric-tna/tree/main) project. + +To compile a relevant P4 target binary and P4 info file, do: + +```shell +git clone https://github.com/stratum/fabric-tna.git + +cd ./fabric-tna + +make fabric-upf-int-v1model +``` + +At this point, a relevant `build.sh` script is being run and a P4 program is being compiled. + +After a successful compilation, some artifacts (p4info.txt, bmv2.json) will be generated and placed into `build` sub-folder. + +```shell +ls build/fabric-int/bmv2 +_pp.p4 bmv2.json p4info.txt +``` + +These artefacts are now moved into this repository. diff --git a/src/tests/p4-sd-fabric-svc-upf/p4src/_pp.p4 b/src/tests/p4-sd-fabric-svc-upf/p4src/_pp.p4 new file mode 100644 index 0000000000000000000000000000000000000000..870509db7f530c7bf9070e4c24b5b546a2a3441d --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/p4src/_pp.p4 @@ -0,0 +1,2452 @@ +error { + PacketRejectedByParser +} +#include +#define V1MODEL_VERSION 20180101 +#include + +typedef bit<9> PortId_t; +typedef bit<16> MulticastGroupId_t; +typedef bit<5> QueueId_t; +typedef bit<10> MirrorId_t; +typedef bit<16> ReplicationId_t; +enum bit<2> MeterColor_t { + GREEN = 0, + YELLOW = 1, + RED = 2 +} + +typedef bit<1> BOOL; +typedef bit<8> FieldListIndex_t; +const PortId_t BMV2_DROP_PORT = 511; +const PortId_t FAKE_V1MODEL_RECIRC_PORT = 510; +const FieldListIndex_t PRESERVE_INT_MD = 241; +const FieldListIndex_t PRESERVE_INGRESS_PORT = 231; +const FieldListIndex_t NO_PRESERVATION = 0; +typedef bit<3> fwd_type_t; +typedef bit<32> next_id_t; +typedef bit<20> mpls_label_t; +typedef bit<48> mac_addr_t; +typedef bit<12> vlan_id_t; +typedef bit<32> ipv4_addr_t; +typedef bit<16> l4_port_t; +typedef bit<32> flow_hash_t; +typedef bit<4> slice_id_t; +typedef bit<2> tc_t; +typedef bit<(4 + 2)> slice_tc_t; +type bit<9> FabricPortId_t; +const bit<8> DEFAULT_APP_ID = 0; +const slice_id_t DEFAULT_SLICE_ID = 0; +const tc_t DEFAULT_TC = 0; +const QueueId_t QUEUE_ID_BEST_EFFORT = 0; +typedef bit<32> teid_t; +typedef bit<12> upf_ctr_idx_t; +typedef bit<8> tun_peer_id_t; +typedef bit<32> ue_session_id_t; +typedef bit<15> session_meter_idx_t; +typedef bit<15> app_meter_idx_t; +const session_meter_idx_t DEFAULT_SESSION_METER_IDX = 0; +const app_meter_idx_t DEFAULT_APP_METER_IDX = 0; +enum bit<2> EncapPresence { + NONE = 0x0, + GTPU_ONLY = 0x1, + GTPU_WITH_PSC = 0x2, + VXLAN = 0x3 +} + +const bit<16> GTPU_UDP_PORT = 2152; +const bit<3> GTP_V1 = 3w1; +const bit<8> GTPU_GPDU = 0xff; +const bit<1> GTP_PROTOCOL_TYPE_GTP = 1w1; +const bit<8> GTPU_NEXT_EXT_NONE = 0x0; +const bit<8> GTPU_NEXT_EXT_PSC = 0x85; +const bit<4> GTPU_EXT_PSC_TYPE_DL = 4w0; +const bit<4> GTPU_EXT_PSC_TYPE_UL = 4w1; +const bit<8> GTPU_EXT_PSC_LEN = 8w1; +enum bit<2> PortType_t { + UNKNOWN = 0x0, + EDGE = 0x1, + INFRA = 0x2, + INTERNAL = 0x3 +} + +const bit<16> ETHERTYPE_QINQ = 0x88a8; +const bit<16> ETHERTYPE_QINQ_NON_STD = 0x9100; +const bit<16> ETHERTYPE_VLAN = 0x8100; +const bit<16> ETHERTYPE_MPLS = 0x8847; +const bit<16> ETHERTYPE_MPLS_MULTICAST = 0x8848; +const bit<16> ETHERTYPE_IPV4 = 0x800; +const bit<16> ETHERTYPE_IPV6 = 0x86dd; +const bit<16> ETHERTYPE_ARP = 0x806; +const bit<16> ETHERTYPE_PPPOED = 0x8863; +const bit<16> ETHERTYPE_PPPOES = 0x8864; +const bit<16> ETHERTYPE_PACKET_OUT = 0xbf01; +const bit<16> ETHERTYPE_CPU_LOOPBACK_INGRESS = 0xbf02; +const bit<16> ETHERTYPE_CPU_LOOPBACK_EGRESS = 0xbf03; +const bit<16> ETHERTYPE_INT_WIP_IPV4 = 0xbf04; +const bit<16> ETHERTYPE_INT_WIP_MPLS = 0xbf05; +const bit<16> PPPOE_PROTOCOL_IP4 = 0x21; +const bit<16> PPPOE_PROTOCOL_IP6 = 0x57; +const bit<16> PPPOE_PROTOCOL_MPLS = 0x281; +const bit<8> PROTO_ICMP = 1; +const bit<8> PROTO_TCP = 6; +const bit<8> PROTO_UDP = 17; +const bit<8> PROTO_ICMPV6 = 58; +const bit<4> IPV4_MIN_IHL = 5; +const fwd_type_t FWD_BRIDGING = 0; +const fwd_type_t FWD_MPLS = 1; +const fwd_type_t FWD_IPV4_UNICAST = 2; +const fwd_type_t FWD_IPV4_MULTICAST = 3; +const fwd_type_t FWD_IPV6_UNICAST = 4; +const fwd_type_t FWD_IPV6_MULTICAST = 5; +const fwd_type_t FWD_UNKNOWN = 7; +const vlan_id_t DEFAULT_VLAN_ID = 12w4094; +const bit<8> DEFAULT_MPLS_TTL = 64; +const bit<8> DEFAULT_IPV4_TTL = 64; +const bit<16> VXLAN_UDP_PORT = 4789; +const bit<7> RECIRC_PORT_NUMBER = 7w68; +action nop() { + NoAction(); +} +enum bit<8> BridgedMdType_t { + INVALID = 0, + INGRESS_TO_EGRESS = 1, + EGRESS_MIRROR = 2, + INGRESS_MIRROR = 3, + INT_INGRESS_DROP = 4, + DEFLECTED = 5 +} + +enum bit<3> FabricMirrorType_t { + INVALID = 0, + INT_REPORT = 1, + PACKET_IN = 2 +} + +const MirrorId_t PACKET_IN_MIRROR_SESSION_ID = 0x1ff; +enum bit<2> CpuLoopbackMode_t { + DISABLED = 0, + DIRECT = 1, + INGRESS = 2 +} + +const bit<4> NPROTO_ETHERNET = 0; +const bit<4> NPROTO_TELEMETRY_DROP_HEADER = 1; +const bit<4> NPROTO_TELEMETRY_SWITCH_LOCAL_HEADER = 2; +const bit<16> REPORT_FIXED_HEADER_BYTES = 12; +const bit<16> DROP_REPORT_HEADER_BYTES = 12; +const bit<16> LOCAL_REPORT_HEADER_BYTES = 16; +const bit<8> INT_MIRROR_SESSION_BASE = 0x80; +const bit<10> V1MODEL_INT_MIRROR_SESSION = 0x1fa; +typedef bit<16> flow_report_filter_index_t; +typedef bit<16> drop_report_filter_index_t; +typedef bit<12> queue_report_filter_index_t; +typedef bit<16> queue_report_quota_t; +typedef bit<3> IntReportType_t; +const IntReportType_t INT_REPORT_TYPE_NO_REPORT = 0; +const IntReportType_t INT_REPORT_TYPE_DROP = 4; +const IntReportType_t INT_REPORT_TYPE_QUEUE = 2; +const IntReportType_t INT_REPORT_TYPE_FLOW = 1; +typedef bit<8> IntWipType_t; +const IntWipType_t INT_IS_NOT_WIP = 0; +const IntWipType_t INT_IS_WIP = 1; +const IntWipType_t INT_IS_WIP_WITH_MPLS = 2; +const bit<16> INT_WIP_ADJUST_IP_BYTES = 14 - 1 ^ 0xffff; +const bit<16> INT_WIP_ADJUST_UDP_BYTES = INT_WIP_ADJUST_IP_BYTES - 20; +const bit<16> INT_WIP_ADJUST_IP_MPLS_BYTES = INT_WIP_ADJUST_IP_BYTES - 4; +const bit<16> INT_WIP_ADJUST_UDP_MPLS_BYTES = INT_WIP_ADJUST_UDP_BYTES - 4; +enum bit<8> IntDropReason_t { + DROP_REASON_UNKNOWN = 0, + DROP_REASON_IP_TTL_ZERO = 26, + DROP_REASON_ROUTING_V4_MISS = 29, + DROP_REASON_ROUTING_V6_MISS = 29, + DROP_REASON_PORT_VLAN_MAPPING_MISS = 55, + DROP_REASON_TRAFFIC_MANAGER = 71, + DROP_REASON_ACL_DENY = 80, + DROP_REASON_BRIDGING_MISS = 89, + DROP_REASON_NEXT_ID_MISS = 128, + DROP_REASON_MPLS_MISS = 129, + DROP_REASON_EGRESS_NEXT_MISS = 130, + DROP_REASON_MPLS_TTL_ZERO = 131, + DROP_REASON_UPF_DL_SESSION_MISS = 132, + DROP_REASON_UPF_DL_SESSION_DROP = 133, + DROP_REASON_UPF_UL_SESSION_MISS = 134, + DROP_REASON_UPF_UL_SESSION_DROP = 135, + DROP_REASON_UPF_DL_SESSION_DROP_BUFF = 136, + DROP_REASON_UPF_DL_TERMINATION_MISS = 137, + DROP_REASON_UPF_DL_TERMINATION_DROP = 138, + DROP_REASON_UPF_UL_TERMINATION_MISS = 139, + DROP_REASON_UPF_UL_TERMINATION_DROP = 140, + DROP_REASON_UPF_UPLINK_RECIRC_DENY = 150, + DROP_REASON_INGRESS_QOS_METER = 160, + DROP_REASON_ROUTING_V4_DROP = 170, + DROP_REASON_ROUTING_V6_DROP = 171 +} + +@controller_header("packet_in") header packet_in_header_t { + FabricPortId_t ingress_port; + bit<7> _pad0; +} + +@controller_header("packet_out") header packet_out_header_t { + @padding + bit<7> pad0; + FabricPortId_t egress_port; + @padding + bit<3> pad1; + QueueId_t queue_id; + @padding + bit<5> pad2; + CpuLoopbackMode_t cpu_loopback_mode; + bit<1> do_forwarding; + @padding + bit<16> pad3; + @padding + bit<48> pad4; + bit<16> ether_type; +} + +header ethernet_t { + mac_addr_t dst_addr; + mac_addr_t src_addr; +} + +header eth_type_t { + bit<16> value; +} + +header vlan_tag_t { + bit<16> eth_type; + bit<3> pri; + bit<1> cfi; + vlan_id_t vlan_id; +} + +header mpls_t { + mpls_label_t label; + bit<3> tc; + bit<1> bos; + bit<8> ttl; +} + +header pppoe_t { + bit<4> version; + bit<4> type_id; + bit<8> code; + bit<16> session_id; + bit<16> length; + bit<16> protocol; +} + +header ipv4_t { + bit<4> version; + bit<4> ihl; + bit<6> dscp; + bit<2> ecn; + bit<16> total_len; + bit<16> identification; + bit<3> flags; + bit<13> frag_offset; + bit<8> ttl; + bit<8> protocol; + bit<16> hdr_checksum; + bit<32> src_addr; + bit<32> dst_addr; +} + +header ipv6_t { + bit<4> version; + bit<8> traffic_class; + bit<20> flow_label; + bit<16> payload_len; + bit<8> next_hdr; + bit<8> hop_limit; + bit<128> src_addr; + bit<128> dst_addr; +} + +header tcp_t { + bit<16> sport; + bit<16> dport; +} + +@pa_container_size("egress" , "hdr.outer_udp.sport" , 16) @pa_container_size("egress" , "hdr.outer_udp.dport" , 16) header udp_t { + bit<16> sport; + bit<16> dport; + bit<16> len; + bit<16> checksum; +} + +header icmp_t { + bit<8> icmp_type; + bit<8> icmp_code; +} + +header vxlan_t { + bit<8> flags; + bit<24> reserved; + bit<24> vni; + bit<8> reserved_2; +} + +header gtpu_t { + bit<3> version; + bit<1> pt; + bit<1> spare; + bit<1> ex_flag; + bit<1> seq_flag; + bit<1> npdu_flag; + bit<8> msgtype; + bit<16> msglen; + teid_t teid; +} + +header gtpu_options_t { + bit<16> seq_num; + bit<8> n_pdu_num; + bit<8> next_ext; +} + +header gtpu_ext_psc_t { + bit<8> len; + bit<4> type; + bit<4> spare0; + bit<1> ppp; + bit<1> rqi; + bit<6> qfi; + bit<8> next_ext; +} + +@flexible struct upf_bridged_metadata_t { + tun_peer_id_t tun_peer_id; + upf_ctr_idx_t upf_ctr_id; + bit<6> qfi; + bool needs_gtpu_encap; + bool skip_upf; + bool skip_egress_upf_ctr; + teid_t teid; + bit<4> _pad; +} + +@pa_no_overlay("egress" , "hdr.report_fixed_header.rsvd") header report_fixed_header_t { + bit<4> ver; + bit<4> nproto; + bit<3> dqf; + bit<15> rsvd; + bit<6> hw_id; + bit<32> seq_no; + bit<32> ig_tstamp; +} + +@pa_container_size("egress" , "hdr.common_report_header.queue_id" , 8) @pa_container_size("egress" , "hdr.common_report_header.ig_port" , 16) @pa_container_size("egress" , "hdr.common_report_header.eg_port" , 16) @pa_no_overlay("egress" , "hdr.common_report_header.queue_id") @pa_no_overlay("egress" , "hdr.common_report_header.eg_port") header common_report_header_t { + bit<32> switch_id; + bit<7> pad1; + bit<9> ig_port; + bit<7> pad2; + bit<9> eg_port; + bit<3> pad3; + bit<5> queue_id; +} + +header drop_report_header_t { + bit<8> drop_reason; + @padding + bit<16> pad; +} + +header local_report_header_t { + bit<5> pad1; + bit<19> queue_occupancy; + bit<32> eg_tstamp; +} + +@pa_no_overlay("egress" , "fabric_md.int_report_md.bmd_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.mirror_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.ig_port") @pa_no_overlay("egress" , "fabric_md.int_report_md.eg_port") @pa_no_overlay("egress" , "fabric_md.int_report_md.queue_id") @pa_no_overlay("egress" , "fabric_md.int_report_md.queue_occupancy") @pa_no_overlay("egress" , "fabric_md.int_report_md.ig_tstamp") @pa_no_overlay("egress" , "fabric_md.int_report_md.eg_tstamp") @pa_no_overlay("egress" , "fabric_md.int_report_md.drop_reason") @pa_no_overlay("egress" , "fabric_md.int_report_md.ip_eth_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.report_type") @pa_no_overlay("egress" , "fabric_md.int_report_md.flow_hash") @pa_no_overlay("egress" , "fabric_md.int_report_md.encap_presence") header int_report_metadata_t { + BridgedMdType_t bmd_type; + @padding + bit<5> _pad0; + FabricMirrorType_t mirror_type; + @padding + bit<7> _pad1; + bit<9> ig_port; + @padding + bit<7> _pad2; + bit<9> eg_port; + @padding + bit<3> _pad3; + bit<5> queue_id; + @padding + bit<5> _pad4; + bit<19> queue_occupancy; + bit<32> ig_tstamp; + bit<32> eg_tstamp; + bit<8> drop_reason; + bit<16> ip_eth_type; + @padding + bit<6> _pad5; + EncapPresence encap_presence; + bit<3> report_type; + @padding + bit<5> _pad6; + flow_hash_t flow_hash; +} + +@flexible struct int_bridged_metadata_t { + bit<3> report_type; + MirrorId_t mirror_session_id; + IntDropReason_t drop_reason; + QueueId_t queue_id; + PortId_t egress_port; + IntWipType_t wip_type; +} + +struct int_metadata_t { + bit<32> hop_latency; + bit<48> timestamp; + bool vlan_stripped; + bool queue_report; +} + +@flexible struct bridged_metadata_base_t { + flow_hash_t inner_hash; + mpls_label_t mpls_label; + PortId_t ig_port; + bool is_multicast; + fwd_type_t fwd_type; + vlan_id_t vlan_id; + EncapPresence encap_presence; + bit<8> mpls_ttl; + bit<48> ig_tstamp; + bit<16> ip_eth_type; + bit<10> stats_flow_id; + slice_tc_t slice_tc; +} + +header bridged_metadata_t { + BridgedMdType_t bmd_type; + bridged_metadata_base_t base; + upf_bridged_metadata_t upf; + int_bridged_metadata_t int_bmd; + bit<1> _pad0; + bit<7> _pad1; + bit<5> _pad2; +} + +struct lookup_metadata_t { + mac_addr_t eth_dst; + mac_addr_t eth_src; + bit<16> eth_type; + vlan_id_t vlan_id; + bool is_ipv4; + bit<32> ipv4_src; + bit<32> ipv4_dst; + bit<8> ip_proto; + l4_port_t l4_sport; + l4_port_t l4_dport; + bit<8> icmp_type; + bit<8> icmp_code; +} + +struct common_mirror_metadata_t { + MirrorId_t mirror_session_id; + BridgedMdType_t bmd_type; +} + +@pa_auto_init_metadata struct fabric_ingress_metadata_t { + bridged_metadata_t bridged; + flow_hash_t ecmp_hash; + lookup_metadata_t lkp; + bit<32> routing_ipv4_dst; + bool skip_forwarding; + bool skip_next; + next_id_t next_id; + bool egress_port_set; + bool punt_to_cpu; + bool ipv4_checksum_err; + bool inner_ipv4_checksum_err; + slice_id_t slice_id; + tc_t tc; + bool tc_unknown; + bool is_upf_hit; + slice_id_t upf_slice_id; + tc_t upf_tc; + MeterColor_t upf_meter_color; + PortType_t ig_port_type; + common_mirror_metadata_t mirror; +} + +header common_egress_metadata_t { + BridgedMdType_t bmd_type; + @padding + bit<5> _pad; + FabricMirrorType_t mirror_type; +} + +header packet_in_mirror_metadata_t { + BridgedMdType_t bmd_type; + @padding + bit<5> _pad0; + FabricMirrorType_t mirror_type; + @padding + bit<7> _pad1; + PortId_t ingress_port; +} + +@pa_auto_init_metadata struct fabric_egress_metadata_t { + bridged_metadata_t bridged; + PortId_t cpu_port; + bool inner_ipv4_checksum_err; + int_report_metadata_t int_report_md; + int_metadata_t int_md; + bit<16> int_ipv4_len; + bool is_int_recirc; + bit<16> pkt_length; +} + +header fake_ethernet_t { + @padding + bit<48> _pad0; + @padding + bit<48> _pad1; + bit<16> ether_type; +} + +struct ingress_headers_t { + packet_out_header_t packet_out; + packet_in_header_t packet_in; + fake_ethernet_t fake_ethernet; + ethernet_t ethernet; + vlan_tag_t vlan_tag; + eth_type_t eth_type; + mpls_t mpls; + ipv4_t ipv4; + ipv6_t ipv6; + tcp_t tcp; + udp_t udp; + icmp_t icmp; + gtpu_t gtpu; + gtpu_options_t gtpu_options; + gtpu_ext_psc_t gtpu_ext_psc; + vxlan_t vxlan; + ethernet_t inner_ethernet; + eth_type_t inner_eth_type; + ipv4_t inner_ipv4; + tcp_t inner_tcp; + udp_t inner_udp; + icmp_t inner_icmp; +} + +struct egress_headers_t { + packet_in_header_t packet_in; + fake_ethernet_t fake_ethernet; + ethernet_t report_ethernet; + eth_type_t report_eth_type; + mpls_t report_mpls; + ipv4_t report_ipv4; + udp_t report_udp; + report_fixed_header_t report_fixed_header; + common_report_header_t common_report_header; + local_report_header_t local_report_header; + drop_report_header_t drop_report_header; + ethernet_t ethernet; + vlan_tag_t vlan_tag; + eth_type_t eth_type; + mpls_t mpls; + ipv4_t outer_ipv4; + udp_t outer_udp; + gtpu_t outer_gtpu; + gtpu_options_t outer_gtpu_options; + gtpu_ext_psc_t outer_gtpu_ext_psc; + ipv4_t ipv4; + ipv6_t ipv6; + udp_t udp; +} + +struct fabric_v1model_metadata_t { + bool skip_egress; + bool do_upf_uplink_recirc; + bit<1> drop_ctl; + IntReportType_t int_mirror_type; + fabric_ingress_metadata_t ingress; + fabric_egress_metadata_t egress; + @field_list(PRESERVE_INT_MD) + IntReportType_t recirc_preserved_report_type; + @field_list(PRESERVE_INT_MD) + FabricPortId_t recirc_preserved_egress_port; + @field_list(PRESERVE_INT_MD) + IntDropReason_t recirc_preserved_drop_reason; + @field_list(PRESERVE_INGRESS_PORT) + FabricPortId_t recirc_preserved_ingress_port; +} + +struct v1model_header_t { + ingress_headers_t ingress; + egress_headers_t egress; +} + +parser FabricParser(packet_in packet, out v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md, inout standard_metadata_t standard_md) { + state start { + fabric_md.egress.pkt_length = (bit<16>)standard_md.packet_length; + fabric_md.ingress.bridged.setValid(); + fabric_md.ingress.bridged.bmd_type = BridgedMdType_t.INGRESS_TO_EGRESS; + fabric_md.ingress.bridged.base.ig_port = standard_md.ingress_port; + fabric_md.recirc_preserved_ingress_port = (FabricPortId_t)standard_md.ingress_port; + fabric_md.ingress.bridged.base.ig_tstamp = standard_md.ingress_global_timestamp; + fabric_md.ingress.egress_port_set = false; + fabric_md.ingress.punt_to_cpu = false; + fabric_md.ingress.bridged.base.ip_eth_type = 0; + fabric_md.ingress.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UNKNOWN; + fabric_md.ingress.bridged.int_bmd.wip_type = INT_IS_NOT_WIP; + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.NONE; + fabric_md.ingress.upf_meter_color = MeterColor_t.GREEN; + transition check_ethernet; + } + state check_ethernet { + fake_ethernet_t tmp = packet.lookahead(); + transition select(tmp.ether_type) { + ETHERTYPE_CPU_LOOPBACK_INGRESS: parse_fake_ethernet; + ETHERTYPE_CPU_LOOPBACK_EGRESS: parse_fake_ethernet_and_accept; + ETHERTYPE_PACKET_OUT: check_packet_out; + ETHERTYPE_INT_WIP_IPV4: parse_int_wip_ipv4; + ETHERTYPE_INT_WIP_MPLS: parse_int_wip_mpls; + default: parse_ethernet; + } + } + state check_packet_out { + packet_out_header_t tmp = packet.lookahead(); + transition select(tmp.do_forwarding) { + 0: parse_packet_out_and_accept; + default: strip_packet_out; + } + } + state parse_int_wip_ipv4 { + hdr.ingress.ethernet.setValid(); + hdr.ingress.eth_type.setValid(); + hdr.ingress.eth_type.value = ETHERTYPE_IPV4; + fabric_md.ingress.bridged.int_bmd.wip_type = INT_IS_WIP; + fabric_md.ingress.bridged.base.mpls_label = 0; + fabric_md.ingress.bridged.base.mpls_ttl = DEFAULT_MPLS_TTL + 1; + packet.advance(14 * 8); + transition parse_ipv4; + } + state parse_int_wip_mpls { + hdr.ingress.ethernet.setValid(); + hdr.ingress.eth_type.setValid(); + hdr.ingress.eth_type.value = ETHERTYPE_MPLS; + fabric_md.ingress.bridged.int_bmd.wip_type = INT_IS_WIP_WITH_MPLS; + packet.advance(14 * 8); + transition parse_mpls; + } + state parse_packet_out_and_accept { + packet.extract(hdr.ingress.packet_out); + transition accept; + } + state strip_packet_out { + packet.advance(14 * 8); + transition parse_ethernet; + } + state parse_fake_ethernet { + packet.extract(hdr.ingress.fake_ethernet); + fake_ethernet_t tmp = packet.lookahead(); + transition select(tmp.ether_type) { + ETHERTYPE_INT_WIP_IPV4: parse_int_wip_ipv4; + ETHERTYPE_INT_WIP_MPLS: parse_int_wip_mpls; + default: parse_ethernet; + } + } + state parse_fake_ethernet_and_accept { + packet.extract(hdr.ingress.fake_ethernet); + transition accept; + } + state parse_ethernet { + packet.extract(hdr.ingress.ethernet); + transition select(packet.lookahead>()) { + ETHERTYPE_QINQ: parse_vlan_tag; + ETHERTYPE_VLAN &&& 0xefff: parse_vlan_tag; + default: parse_untagged; + } + } + state parse_vlan_tag { + packet.extract(hdr.ingress.vlan_tag); + fabric_md.ingress.bridged.base.vlan_id = hdr.ingress.vlan_tag.vlan_id; + transition select(packet.lookahead>()) { + default: parse_eth_type; + } + } + state parse_untagged { + fabric_md.ingress.bridged.base.vlan_id = DEFAULT_VLAN_ID; + transition parse_eth_type; + } + state parse_eth_type { + packet.extract(hdr.ingress.eth_type); + transition select(hdr.ingress.eth_type.value) { + ETHERTYPE_MPLS: parse_mpls; + ETHERTYPE_IPV4: parse_non_mpls; + ETHERTYPE_IPV6: parse_non_mpls; + default: accept; + } + } + state parse_mpls { + packet.extract(hdr.ingress.mpls); + fabric_md.ingress.bridged.base.mpls_label = hdr.ingress.mpls.label; + fabric_md.ingress.bridged.base.mpls_ttl = hdr.ingress.mpls.ttl; + transition select(packet.lookahead>()) { + 4: parse_ipv4; + 6: parse_ipv6; + default: reject_packet; + } + } + state reject_packet { + verify(false, error.PacketRejectedByParser); + transition accept; + } + state parse_non_mpls { + fabric_md.ingress.bridged.base.mpls_label = 0; + fabric_md.ingress.bridged.base.mpls_ttl = DEFAULT_MPLS_TTL + 1; + transition select(hdr.ingress.eth_type.value) { + ETHERTYPE_IPV4: parse_ipv4; + ETHERTYPE_IPV6: parse_ipv6; + default: accept; + } + } + state parse_ipv4 { + packet.extract(hdr.ingress.ipv4); + fabric_md.ingress.routing_ipv4_dst = hdr.ingress.ipv4.dst_addr; + fabric_md.ingress.bridged.base.ip_eth_type = ETHERTYPE_IPV4; + transition select(hdr.ingress.ipv4.protocol) { + PROTO_TCP: parse_tcp; + PROTO_UDP: parse_udp; + PROTO_ICMP: parse_icmp; + default: accept; + } + } + state parse_ipv6 { + packet.extract(hdr.ingress.ipv6); + fabric_md.ingress.bridged.base.ip_eth_type = ETHERTYPE_IPV6; + transition select(hdr.ingress.ipv6.next_hdr) { + PROTO_TCP: parse_tcp; + PROTO_UDP: parse_udp; + PROTO_ICMPV6: parse_icmp; + default: accept; + } + } + state parse_icmp { + packet.extract(hdr.ingress.icmp); + transition accept; + } + state parse_tcp { + packet.extract(hdr.ingress.tcp); + transition accept; + } + state parse_udp { + packet.extract(hdr.ingress.udp); + gtpu_t gtpu = packet.lookahead(); + transition select(hdr.ingress.udp.dport, gtpu.version, gtpu.msgtype) { + (GTPU_UDP_PORT, GTP_V1, GTPU_GPDU): parse_gtpu; + (VXLAN_UDP_PORT, default, default): parse_vxlan; + default: accept; + } + } + state parse_gtpu { + packet.extract(hdr.ingress.gtpu); + transition select(hdr.ingress.gtpu.ex_flag, hdr.ingress.gtpu.seq_flag, hdr.ingress.gtpu.npdu_flag) { + (0, 0, 0): set_gtpu_only; + default: parse_gtpu_options; + } + } + state set_gtpu_only { + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.GTPU_ONLY; + transition parse_inner_ipv4; + } + state parse_gtpu_options { + packet.extract(hdr.ingress.gtpu_options); + bit<8> gtpu_ext_len = packet.lookahead>(); + transition select(hdr.ingress.gtpu_options.next_ext, gtpu_ext_len) { + (GTPU_NEXT_EXT_PSC, GTPU_EXT_PSC_LEN): parse_gtpu_ext_psc; + default: accept; + } + } + state parse_gtpu_ext_psc { + packet.extract(hdr.ingress.gtpu_ext_psc); + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.GTPU_WITH_PSC; + transition select(hdr.ingress.gtpu_ext_psc.next_ext) { + GTPU_NEXT_EXT_NONE: parse_inner_ipv4; + default: accept; + } + } + state parse_vxlan { + packet.extract(hdr.ingress.vxlan); + fabric_md.ingress.bridged.base.encap_presence = EncapPresence.VXLAN; + transition parse_inner_ethernet; + } + state parse_inner_ethernet { + packet.extract(hdr.ingress.inner_ethernet); + packet.extract(hdr.ingress.inner_eth_type); + transition select(hdr.ingress.inner_eth_type.value) { + ETHERTYPE_IPV4: parse_inner_ipv4; + default: accept; + } + } + state parse_inner_ipv4 { + packet.extract(hdr.ingress.inner_ipv4); + transition select(hdr.ingress.inner_ipv4.protocol) { + PROTO_TCP: parse_inner_tcp; + PROTO_UDP: parse_inner_udp; + PROTO_ICMP: parse_inner_icmp; + default: accept; + } + } + state parse_inner_tcp { + packet.extract(hdr.ingress.inner_tcp); + transition accept; + } + state parse_inner_udp { + packet.extract(hdr.ingress.inner_udp); + transition accept; + } + state parse_inner_icmp { + packet.extract(hdr.ingress.inner_icmp); + transition accept; + } +} + +control FabricDeparser(packet_out packet, in v1model_header_t hdr) { + apply { + packet.emit(hdr.ingress.fake_ethernet); + packet.emit(hdr.ingress.packet_in); + packet.emit(hdr.egress.report_ethernet); + packet.emit(hdr.egress.report_eth_type); + packet.emit(hdr.egress.report_mpls); + packet.emit(hdr.egress.report_ipv4); + packet.emit(hdr.egress.report_udp); + packet.emit(hdr.egress.report_fixed_header); + packet.emit(hdr.egress.common_report_header); + packet.emit(hdr.egress.local_report_header); + packet.emit(hdr.egress.drop_report_header); + packet.emit(hdr.ingress.ethernet); + packet.emit(hdr.ingress.vlan_tag); + packet.emit(hdr.ingress.eth_type); + packet.emit(hdr.ingress.mpls); + packet.emit(hdr.ingress.ipv4); + packet.emit(hdr.ingress.ipv6); + packet.emit(hdr.ingress.tcp); + packet.emit(hdr.ingress.udp); + packet.emit(hdr.ingress.icmp); + packet.emit(hdr.ingress.gtpu); + packet.emit(hdr.ingress.gtpu_options); + packet.emit(hdr.ingress.gtpu_ext_psc); + packet.emit(hdr.ingress.vxlan); + packet.emit(hdr.ingress.inner_ethernet); + packet.emit(hdr.ingress.inner_eth_type); + packet.emit(hdr.ingress.inner_ipv4); + packet.emit(hdr.ingress.inner_tcp); + packet.emit(hdr.ingress.inner_udp); + packet.emit(hdr.ingress.inner_icmp); + } +} + +control Acl(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout FabricPortId_t recirc_preserved_egress_port, inout bit<1> drop_ctl) { + direct_counter(CounterType.packets_and_bytes) acl_counter; + action set_next_id_acl(next_id_t next_id) { + fabric_md.next_id = next_id; + acl_counter.count(); + fabric_md.skip_next = false; + drop_ctl = 0; + } + action copy_to_cpu() { + clone_preserving_field_list(CloneType.I2E, (bit<32>)PACKET_IN_MIRROR_SESSION_ID, PRESERVE_INGRESS_PORT); + acl_counter.count(); + } + action punt_to_cpu() { + copy_to_cpu(); + fabric_md.skip_next = true; + fabric_md.punt_to_cpu = true; + drop_ctl = 1; + } + action drop() { + drop_ctl = 1; + fabric_md.skip_next = true; + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_ACL_DENY; + acl_counter.count(); + } + action set_output_port(FabricPortId_t port_num) { + standard_md.egress_spec = (PortId_t)port_num; + recirc_preserved_egress_port = port_num; + fabric_md.egress_port_set = true; + fabric_md.skip_next = true; + drop_ctl = 0; + acl_counter.count(); + } + action nop_acl() { + acl_counter.count(); + } + table acl { + key = { + fabric_md.bridged.base.ig_port: ternary @name("ig_port") ; + fabric_md.lkp.eth_dst : ternary @name("eth_dst") ; + fabric_md.lkp.eth_src : ternary @name("eth_src") ; + fabric_md.lkp.vlan_id : ternary @name("vlan_id") ; + fabric_md.lkp.eth_type : ternary @name("eth_type") ; + fabric_md.lkp.ipv4_src : ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst : ternary @name("ipv4_dst") ; + fabric_md.lkp.ip_proto : ternary @name("ip_proto") ; + fabric_md.lkp.icmp_type : ternary @name("icmp_type") ; + fabric_md.lkp.icmp_code : ternary @name("icmp_code") ; + fabric_md.lkp.l4_sport : ternary @name("l4_sport") ; + fabric_md.lkp.l4_dport : ternary @name("l4_dport") ; + fabric_md.ig_port_type : ternary @name("ig_port_type") ; + } + actions = { + set_next_id_acl; + punt_to_cpu; + copy_to_cpu; + drop; + set_output_port; + nop_acl; + } + const default_action = nop_acl(); + size = 1024; + counters = acl_counter; + } + apply { + acl.apply(); + } +} + +control Next(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout FabricPortId_t recirc_preserved_egress_port) { + @hidden action output(FabricPortId_t port_num) { + standard_md.egress_spec = (PortId_t)port_num; + recirc_preserved_egress_port = port_num; + fabric_md.egress_port_set = true; + } + @hidden action rewrite_smac(mac_addr_t smac) { + hdr.ethernet.src_addr = smac; + } + @hidden action rewrite_dmac(mac_addr_t dmac) { + hdr.ethernet.dst_addr = dmac; + } + @hidden action routing(FabricPortId_t port_num, mac_addr_t smac, mac_addr_t dmac) { + rewrite_smac(smac); + rewrite_dmac(dmac); + output(port_num); + } + @max_group_size(32w16) action_selector(HashAlgorithm.crc16, 32w16, 32w16) hashed_profile; + direct_counter(CounterType.packets_and_bytes) hashed_counter; + action output_hashed(FabricPortId_t port_num) { + output(port_num); + hashed_counter.count(); + } + action routing_hashed(FabricPortId_t port_num, mac_addr_t smac, mac_addr_t dmac) { + routing(port_num, smac, dmac); + hashed_counter.count(); + } + table hashed { + key = { + fabric_md.next_id : exact @name("next_id") ; + fabric_md.ecmp_hash: selector; + } + actions = { + output_hashed; + routing_hashed; + @defaultonly nop; + } + implementation = hashed_profile; + counters = hashed_counter; + const default_action = nop(); + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) multicast_counter; + action set_mcast_group_id(MulticastGroupId_t group_id) { + standard_md.mcast_grp = group_id; + fabric_md.bridged.base.is_multicast = true; + multicast_counter.count(); + } + action reset_mcast_group_id() { + standard_md.mcast_grp = 0; + fabric_md.bridged.base.is_multicast = false; + } + table multicast { + key = { + fabric_md.next_id: exact @name("next_id") ; + } + actions = { + set_mcast_group_id; + @defaultonly reset_mcast_group_id; + } + counters = multicast_counter; + const default_action = reset_mcast_group_id(); + size = 1024; + } + apply { + hashed.apply(); + multicast.apply(); + } +} + +control EgressNextControl(inout ingress_headers_t hdr, inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout IntDropReason_t recirc_preserved_drop_reason, inout bit<1> drop_ctl) { + @hidden action pop_mpls_if_present() { + hdr.mpls.setInvalid(); + hdr.eth_type.value = fabric_md.bridged.base.ip_eth_type; + } + @hidden action set_mpls() { + hdr.mpls.setValid(); + hdr.mpls.label = fabric_md.bridged.base.mpls_label; + hdr.mpls.tc = 3w0; + hdr.mpls.bos = 1w1; + hdr.mpls.ttl = fabric_md.bridged.base.mpls_ttl; + hdr.eth_type.value = ETHERTYPE_MPLS; + } + @hidden action push_outer_vlan() { + hdr.vlan_tag.setValid(); + hdr.vlan_tag.eth_type = ETHERTYPE_VLAN; + hdr.vlan_tag.vlan_id = fabric_md.bridged.base.vlan_id; + } + direct_counter(CounterType.packets_and_bytes) egress_vlan_counter; + action push_vlan() { + push_outer_vlan(); + egress_vlan_counter.count(); + } + action pop_vlan() { + hdr.vlan_tag.setInvalid(); + egress_vlan_counter.count(); + } + action drop() { + drop_ctl = 1; + egress_vlan_counter.count(); + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_EGRESS_NEXT_MISS; + } + table egress_vlan { + key = { + fabric_md.bridged.base.vlan_id: exact @name("vlan_id") ; + standard_md.egress_port : exact @name("eg_port") ; + } + actions = { + push_vlan; + pop_vlan; + @defaultonly drop; + } + const default_action = drop(); + counters = egress_vlan_counter; + size = 1024; + } + apply { + if (fabric_md.bridged.base.is_multicast && fabric_md.bridged.base.ig_port == standard_md.egress_port) { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_NO_REPORT; + drop_ctl = 1; + } + if (fabric_md.bridged.base.mpls_label == 0) { + if (hdr.mpls.isValid()) { + pop_mpls_if_present(); + } + } else { + set_mpls(); + } + if (!fabric_md.is_int_recirc) { + egress_vlan.apply(); + } + bool regular_packet = true; + regular_packet = !(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP || fabric_md.bridged.bmd_type == BridgedMdType_t.EGRESS_MIRROR); + if (hdr.mpls.isValid()) { + hdr.mpls.ttl = hdr.mpls.ttl - 1; + if (hdr.mpls.ttl == 0) { + drop_ctl = 1; + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_MPLS_TTL_ZERO; + } + } else { + if (hdr.ipv4.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING) { + if (regular_packet) { + hdr.ipv4.ttl = hdr.ipv4.ttl - 1; + } + if (hdr.ipv4.ttl == 0) { + drop_ctl = 1; + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_IP_TTL_ZERO; + } + } else if (hdr.ipv6.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING) { + if (regular_packet) { + hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1; + } + if (hdr.ipv6.hop_limit == 0) { + drop_ctl = 1; + recirc_preserved_drop_reason = IntDropReason_t.DROP_REASON_IP_TTL_ZERO; + } + } + } + } +} + +const bit<10> UNSET_FLOW_ID = 0; +control StatsIngress(in lookup_metadata_t lkp, in PortId_t ig_port, out bit<10> stats_flow_id) { + direct_counter(CounterType.packets_and_bytes) flow_counter; + action count(bit<10> flow_id) { + stats_flow_id = flow_id; + flow_counter.count(); + } + table flows { + key = { + lkp.ipv4_src: ternary @name("ipv4_src") ; + lkp.ipv4_dst: ternary @name("ipv4_dst") ; + lkp.ip_proto: ternary @name("ip_proto") ; + lkp.l4_sport: ternary @name("l4_sport") ; + lkp.l4_dport: ternary @name("l4_dport") ; + ig_port : exact @name("ig_port") ; + } + actions = { + count; + } + const default_action = count(UNSET_FLOW_ID); + const size = 1 << 10; + counters = flow_counter; + } + apply { + flows.apply(); + } +} + +control StatsEgress(in bit<10> stats_flow_id, in PortId_t eg_port, in BridgedMdType_t bmd_type) { + direct_counter(CounterType.packets_and_bytes) flow_counter; + action count() { + flow_counter.count(); + } + table flows { + key = { + stats_flow_id: exact @name("stats_flow_id") ; + eg_port : exact @name("eg_port") ; + } + actions = { + count; + } + const default_action = count; + const size = 1 << 10; + counters = flow_counter; + } + apply { + if (bmd_type == BridgedMdType_t.INGRESS_TO_EGRESS) { + flows.apply(); + } + } +} + +control Hasher(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md) { + flow_hash_t max = 0xffffffff; + flow_hash_t base = 0; + apply { + hash(fabric_md.bridged.base.inner_hash, HashAlgorithm.crc32, base, { fabric_md.lkp.ipv4_src, fabric_md.lkp.ipv4_dst, fabric_md.lkp.ip_proto, fabric_md.lkp.l4_sport, fabric_md.lkp.l4_dport }, max); + if (fabric_md.bridged.upf.needs_gtpu_encap) { + hash(fabric_md.ecmp_hash, HashAlgorithm.crc32, base, { fabric_md.bridged.upf.tun_peer_id, fabric_md.bridged.upf.teid }, max); + } else if (hdr.gtpu.isValid()) { + hash(fabric_md.ecmp_hash, HashAlgorithm.crc32, base, { hdr.ipv4.src_addr, hdr.ipv4.dst_addr, hdr.gtpu.teid }, max); + } else if (fabric_md.lkp.is_ipv4) { + fabric_md.ecmp_hash = fabric_md.bridged.base.inner_hash; + } else { + fabric_md.bridged.base.inner_hash = 0; + hash(fabric_md.ecmp_hash, HashAlgorithm.crc32, base, { hdr.ethernet.dst_addr, hdr.ethernet.src_addr, hdr.eth_type.value }, max); + } + } +} + +control IngressSliceTcClassifier(inout ingress_headers_t hdr, inout standard_metadata_t standard_md, inout fabric_ingress_metadata_t fabric_md) { + direct_counter(CounterType.packets) classifier_stats; + action set_slice_id_tc(slice_id_t slice_id, tc_t tc) { + fabric_md.slice_id = slice_id; + fabric_md.tc = tc; + fabric_md.tc_unknown = false; + classifier_stats.count(); + } + action no_classification() { + set_slice_id_tc(DEFAULT_SLICE_ID, DEFAULT_TC); + fabric_md.tc_unknown = true; + } + action trust_dscp() { + fabric_md.slice_id = hdr.ipv4.dscp[4 + 2 - 1:2]; + fabric_md.tc = hdr.ipv4.dscp[2 - 1:0]; + fabric_md.tc_unknown = false; + classifier_stats.count(); + } + table classifier { + key = { + fabric_md.bridged.base.ig_port: ternary @name("ig_port") ; + fabric_md.lkp.ipv4_src : ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst : ternary @name("ipv4_dst") ; + fabric_md.lkp.ip_proto : ternary @name("ip_proto") ; + fabric_md.lkp.l4_sport : ternary @name("l4_sport") ; + fabric_md.lkp.l4_dport : ternary @name("l4_dport") ; + } + actions = { + set_slice_id_tc; + trust_dscp; + @defaultonly no_classification; + } + const default_action = no_classification(); + counters = classifier_stats; + size = 512; + } + apply { + classifier.apply(); + } +} + +control IngressQos(inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bit<1> drop_ctl) { + bit<2> packet_color = 2w0; + @hidden action use_upf() { + fabric_md.bridged.base.slice_tc = fabric_md.upf_slice_id ++ fabric_md.upf_tc; + } + @hidden action use_default() { + fabric_md.bridged.base.slice_tc = fabric_md.slice_id ++ fabric_md.tc; + } + @hidden table set_slice_tc { + key = { + fabric_md.is_upf_hit: exact; + } + actions = { + use_upf; + use_default; + } + const size = 2; + const entries = { + true : use_upf; + false : use_default; + } + } + meter(1 << 4 + 2, MeterType.bytes) slice_tc_meter; + direct_counter(CounterType.packets) queues_stats; + action set_queue(QueueId_t qid) { + queues_stats.count(); + } + action meter_drop() { + drop_ctl = 1; + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_INGRESS_QOS_METER; + queues_stats.count(); + } + table queues { + key = { + fabric_md.bridged.base.slice_tc: exact @name("slice_tc") ; + packet_color : ternary @name("color") ; + } + actions = { + set_queue; + meter_drop; + } + const default_action = set_queue(QUEUE_ID_BEST_EFFORT); + counters = queues_stats; + size = 1 << 4 + 2 + 1; + } + action set_default_tc(tc_t tc) { + fabric_md.bridged.base.slice_tc = fabric_md.bridged.base.slice_tc[4 + 2 - 1:2] ++ tc; + } + table default_tc { + key = { + fabric_md.bridged.base.slice_tc: ternary @name("slice_tc") ; + fabric_md.tc_unknown : exact @name("tc_unknown") ; + } + actions = { + set_default_tc; + @defaultonly nop; + } + const default_action = nop; + size = 1 << 4; + } + apply { + set_slice_tc.apply(); + default_tc.apply(); + if (fabric_md.upf_meter_color != MeterColor_t.RED) { + slice_tc_meter.execute_meter((bit<32>)fabric_md.bridged.base.slice_tc, packet_color); + } else { + packet_color = MeterColor_t.RED; + } + queues.apply(); + } +} + +control EgressDscpRewriter(inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout ingress_headers_t hdr) { + bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc; + action rewrite() { + } + action clear() { + tmp_dscp = 0; + } + table rewriter { + key = { + standard_md.egress_port: exact @name("eg_port") ; + } + actions = { + rewrite; + clear; + @defaultonly nop; + } + const default_action = nop; + size = 512; + } + apply { + if (rewriter.apply().hit) { + if (hdr.ipv4.isValid()) { + hdr.ipv4.dscp = tmp_dscp; + } + } + } +} + +control FabricVerifyChecksum(inout v1model_header_t hdr, inout fabric_v1model_metadata_t meta) { + apply { + verify_checksum(hdr.ingress.ipv4.isValid(), { hdr.ingress.ipv4.version, hdr.ingress.ipv4.ihl, hdr.ingress.ipv4.dscp, hdr.ingress.ipv4.ecn, hdr.ingress.ipv4.total_len, hdr.ingress.ipv4.identification, hdr.ingress.ipv4.flags, hdr.ingress.ipv4.frag_offset, hdr.ingress.ipv4.ttl, hdr.ingress.ipv4.protocol, hdr.ingress.ipv4.src_addr, hdr.ingress.ipv4.dst_addr }, hdr.ingress.ipv4.hdr_checksum, HashAlgorithm.csum16); + verify_checksum(hdr.ingress.inner_ipv4.isValid(), { hdr.ingress.inner_ipv4.version, hdr.ingress.inner_ipv4.ihl, hdr.ingress.inner_ipv4.dscp, hdr.ingress.inner_ipv4.ecn, hdr.ingress.inner_ipv4.total_len, hdr.ingress.inner_ipv4.identification, hdr.ingress.inner_ipv4.flags, hdr.ingress.inner_ipv4.frag_offset, hdr.ingress.inner_ipv4.ttl, hdr.ingress.inner_ipv4.protocol, hdr.ingress.inner_ipv4.src_addr, hdr.ingress.inner_ipv4.dst_addr }, hdr.ingress.inner_ipv4.hdr_checksum, HashAlgorithm.csum16); + } +} + +control FabricComputeChecksum(inout v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md) { + apply { + update_checksum(hdr.ingress.ipv4.isValid(), { hdr.ingress.ipv4.version, hdr.ingress.ipv4.ihl, hdr.ingress.ipv4.dscp, hdr.ingress.ipv4.ecn, hdr.ingress.ipv4.total_len, hdr.ingress.ipv4.identification, hdr.ingress.ipv4.flags, hdr.ingress.ipv4.frag_offset, hdr.ingress.ipv4.ttl, hdr.ingress.ipv4.protocol, hdr.ingress.ipv4.src_addr, hdr.ingress.ipv4.dst_addr }, hdr.ingress.ipv4.hdr_checksum, HashAlgorithm.csum16); + update_checksum(hdr.ingress.inner_ipv4.isValid(), { hdr.ingress.inner_ipv4.version, hdr.ingress.inner_ipv4.ihl, hdr.ingress.inner_ipv4.dscp, hdr.ingress.inner_ipv4.ecn, hdr.ingress.inner_ipv4.total_len, hdr.ingress.inner_ipv4.identification, hdr.ingress.inner_ipv4.flags, hdr.ingress.inner_ipv4.frag_offset, hdr.ingress.inner_ipv4.ttl, hdr.ingress.inner_ipv4.protocol, hdr.ingress.inner_ipv4.src_addr, hdr.ingress.inner_ipv4.dst_addr }, hdr.ingress.inner_ipv4.hdr_checksum, HashAlgorithm.csum16); + update_checksum(hdr.egress.report_ipv4.isValid(), { hdr.egress.report_ipv4.version, hdr.egress.report_ipv4.ihl, hdr.egress.report_ipv4.dscp, hdr.egress.report_ipv4.ecn, hdr.egress.report_ipv4.total_len, hdr.egress.report_ipv4.identification, hdr.egress.report_ipv4.flags, hdr.egress.report_ipv4.frag_offset, hdr.egress.report_ipv4.ttl, hdr.egress.report_ipv4.protocol, hdr.egress.report_ipv4.src_addr, hdr.egress.report_ipv4.dst_addr }, hdr.egress.report_ipv4.hdr_checksum, HashAlgorithm.csum16); + } +} + +control PacketIoIngress(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout bool skip_egress, inout standard_metadata_t standard_md, inout FabricPortId_t recirc_preserved_egress_port) { + @hidden action do_packet_out() { + standard_md.egress_spec = (PortId_t)hdr.packet_out.egress_port; + recirc_preserved_egress_port = hdr.packet_out.egress_port; + fabric_md.egress_port_set = true; + hdr.packet_out.setInvalid(); + skip_egress = true; + fabric_md.bridged.setInvalid(); + exit; + } + apply { + if (hdr.packet_out.isValid()) { + do_packet_out(); + } + } +} + +control PacketIoEgress(inout ingress_headers_t hdr, inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md, in FabricPortId_t preserved_ig_port) { + action set_switch_info(FabricPortId_t cpu_port) { + fabric_md.cpu_port = (PortId_t)cpu_port; + } + table switch_info { + actions = { + set_switch_info; + @defaultonly nop; + } + default_action = nop; + const size = 1; + } + apply { + switch_info.apply(); + if (standard_md.egress_port == fabric_md.cpu_port) { + hdr.packet_in.setValid(); + hdr.packet_in.ingress_port = preserved_ig_port; + hdr.fake_ethernet.setInvalid(); + exit; + } + if (hdr.fake_ethernet.isValid() && hdr.fake_ethernet.ether_type == ETHERTYPE_CPU_LOOPBACK_EGRESS) { + fabric_md.pkt_length = (bit<16>)standard_md.packet_length - 14; + } + } +} + +control PreNext(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md) { + direct_counter(CounterType.packets_and_bytes) next_mpls_counter; + action set_mpls_label(mpls_label_t label) { + fabric_md.bridged.base.mpls_label = label; + next_mpls_counter.count(); + } + table next_mpls { + key = { + fabric_md.next_id: exact @name("next_id") ; + } + actions = { + set_mpls_label; + @defaultonly nop; + } + const default_action = nop(); + counters = next_mpls_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) next_vlan_counter; + action set_vlan(vlan_id_t vlan_id) { + fabric_md.bridged.base.vlan_id = vlan_id; + next_vlan_counter.count(); + } + table next_vlan { + key = { + fabric_md.next_id: exact @name("next_id") ; + } + actions = { + set_vlan; + @defaultonly nop; + } + const default_action = nop(); + counters = next_vlan_counter; + size = 1024; + } + apply { + next_mpls.apply(); + next_vlan.apply(); + } +} + +control Filtering(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md) { + direct_counter(CounterType.packets_and_bytes) ingress_port_vlan_counter; + action deny() { + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + fabric_md.ig_port_type = PortType_t.UNKNOWN; + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_PORT_VLAN_MAPPING_MISS; + ingress_port_vlan_counter.count(); + } + action permit(PortType_t port_type) { + fabric_md.ig_port_type = port_type; + ingress_port_vlan_counter.count(); + } + action permit_with_internal_vlan(vlan_id_t vlan_id, PortType_t port_type) { + fabric_md.bridged.base.vlan_id = vlan_id; + permit(port_type); + } + table ingress_port_vlan { + key = { + fabric_md.bridged.base.ig_port: exact @name("ig_port") ; + hdr.vlan_tag.isValid() : exact @name("vlan_is_valid") ; + hdr.vlan_tag.vlan_id : ternary @name("vlan_id") ; + } + actions = { + deny(); + permit(); + permit_with_internal_vlan(); + } + const default_action = deny(); + counters = ingress_port_vlan_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) fwd_classifier_counter; + action set_forwarding_type(fwd_type_t fwd_type) { + fabric_md.bridged.base.fwd_type = fwd_type; + fwd_classifier_counter.count(); + } + counter(8, CounterType.packets_and_bytes) fwd_type_counter; + table fwd_classifier { + key = { + fabric_md.bridged.base.ig_port : exact @name("ig_port") ; + fabric_md.lkp.eth_dst : ternary @name("eth_dst") ; + fabric_md.lkp.eth_type : ternary @name("eth_type") ; + fabric_md.bridged.base.ip_eth_type: exact @name("ip_eth_type") ; + } + actions = { + set_forwarding_type; + } + const default_action = set_forwarding_type(FWD_BRIDGING); + counters = fwd_classifier_counter; + size = 1024; + } + apply { + ingress_port_vlan.apply(); + fwd_classifier.apply(); + fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type); + } +} + +control Forwarding(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bit<1> drop_ctl) { + action set_int_drop_reason(bit<8> drop_reason) { + fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason; + } + @hidden action set_next_id(next_id_t next_id) { + fabric_md.next_id = next_id; + } + direct_counter(CounterType.packets_and_bytes) bridging_counter; + action set_next_id_bridging(next_id_t next_id) { + set_next_id(next_id); + bridging_counter.count(); + } + table bridging { + key = { + fabric_md.bridged.base.vlan_id: exact @name("vlan_id") ; + hdr.ethernet.dst_addr : ternary @name("eth_dst") ; + } + actions = { + set_next_id_bridging; + @defaultonly set_int_drop_reason; + } + const default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_BRIDGING_MISS); + counters = bridging_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) mpls_counter; + action pop_mpls_and_next(next_id_t next_id) { + hdr.mpls.setInvalid(); + hdr.eth_type.value = fabric_md.bridged.base.ip_eth_type; + fabric_md.bridged.base.mpls_label = 0; + set_next_id(next_id); + mpls_counter.count(); + } + table mpls { + key = { + fabric_md.bridged.base.mpls_label: exact @name("mpls_label") ; + } + actions = { + pop_mpls_and_next; + @defaultonly set_int_drop_reason; + } + const default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_MPLS_MISS); + counters = mpls_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) routing_v4_counter; + action set_next_id_routing_v4(next_id_t next_id) { + set_next_id(next_id); + routing_v4_counter.count(); + } + action nop_routing_v4() { + routing_v4_counter.count(); + } + action drop_routing_v4() { + fabric_md.skip_next = true; + routing_v4_counter.count(); + drop_ctl = 1; + } + table routing_v4 { + key = { + fabric_md.routing_ipv4_dst: lpm @name("ipv4_dst") ; + } + actions = { + set_next_id_routing_v4; + nop_routing_v4; + drop_routing_v4; + @defaultonly set_int_drop_reason; + } + default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_ROUTING_V4_MISS); + counters = routing_v4_counter; + size = 1024; + } + direct_counter(CounterType.packets_and_bytes) routing_v6_counter; + action set_next_id_routing_v6(next_id_t next_id) { + set_next_id(next_id); + routing_v6_counter.count(); + } + action drop_routing_v6() { + fabric_md.skip_next = true; + routing_v6_counter.count(); + drop_ctl = 1; + } + table routing_v6 { + key = { + hdr.ipv6.dst_addr: lpm @name("ipv6_dst") ; + } + actions = { + set_next_id_routing_v6; + drop_routing_v6; + @defaultonly set_int_drop_reason; + } + default_action = set_int_drop_reason(IntDropReason_t.DROP_REASON_ROUTING_V6_MISS); + counters = routing_v6_counter; + size = 1024; + } + apply { + if (hdr.ethernet.isValid() && fabric_md.bridged.base.fwd_type == FWD_BRIDGING) { + bridging.apply(); + } else if (hdr.mpls.isValid() && fabric_md.bridged.base.fwd_type == FWD_MPLS) { + mpls.apply(); + } else if (fabric_md.lkp.is_ipv4 && (fabric_md.bridged.base.fwd_type == FWD_IPV4_UNICAST || fabric_md.bridged.base.fwd_type == FWD_IPV4_MULTICAST)) { + routing_v4.apply(); + } else if (hdr.ipv6.isValid() && fabric_md.bridged.base.fwd_type == FWD_IPV6_UNICAST) { + routing_v6.apply(); + } + } +} + +control LookupMdInit(in ingress_headers_t hdr, out lookup_metadata_t lkp_md) { + apply { + lkp_md.eth_dst = hdr.ethernet.dst_addr; + lkp_md.eth_src = hdr.ethernet.src_addr; + lkp_md.eth_type = hdr.eth_type.value; + lkp_md.vlan_id = 0; + if (hdr.vlan_tag.isValid()) { + lkp_md.vlan_id = hdr.vlan_tag.vlan_id; + } + lkp_md.is_ipv4 = false; + lkp_md.ipv4_src = 0; + lkp_md.ipv4_dst = 0; + lkp_md.ip_proto = 0; + lkp_md.l4_sport = 0; + lkp_md.l4_dport = 0; + lkp_md.icmp_type = 0; + lkp_md.icmp_code = 0; + if (hdr.inner_ipv4.isValid()) { + lkp_md.is_ipv4 = true; + lkp_md.ipv4_src = hdr.inner_ipv4.src_addr; + lkp_md.ipv4_dst = hdr.inner_ipv4.dst_addr; + lkp_md.ip_proto = hdr.inner_ipv4.protocol; + if (hdr.inner_tcp.isValid()) { + lkp_md.l4_sport = hdr.inner_tcp.sport; + lkp_md.l4_dport = hdr.inner_tcp.dport; + } else if (hdr.inner_udp.isValid()) { + lkp_md.l4_sport = hdr.inner_udp.sport; + lkp_md.l4_dport = hdr.inner_udp.dport; + } else if (hdr.inner_icmp.isValid()) { + lkp_md.icmp_type = hdr.inner_icmp.icmp_type; + lkp_md.icmp_code = hdr.inner_icmp.icmp_code; + } + } else if (hdr.ipv4.isValid()) { + lkp_md.is_ipv4 = true; + lkp_md.ipv4_src = hdr.ipv4.src_addr; + lkp_md.ipv4_dst = hdr.ipv4.dst_addr; + lkp_md.ip_proto = hdr.ipv4.protocol; + if (hdr.tcp.isValid()) { + lkp_md.l4_sport = hdr.tcp.sport; + lkp_md.l4_dport = hdr.tcp.dport; + } else if (hdr.udp.isValid()) { + lkp_md.l4_sport = hdr.udp.sport; + lkp_md.l4_dport = hdr.udp.dport; + } else if (hdr.icmp.isValid()) { + lkp_md.icmp_type = hdr.icmp.icmp_type; + lkp_md.icmp_code = hdr.icmp.icmp_code; + } + } + } +} + +control UpfIngress(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bool do_upf_uplink_recirc, inout bit<1> drop_ctl) { + counter(4096, CounterType.packets_and_bytes) terminations_counter; + meter(20000, MeterType.bytes) session_meter; + meter(20000, MeterType.bytes) app_meter; + bool is_uplink = false; + bool term_hit = false; + bool sess_hit = false; + bit<32> app_ipv4_addr = 0; + l4_port_t app_l4_port = 0; + bit<8> app_ip_proto = 0; + bit<8> internal_app_id = DEFAULT_APP_ID; + ue_session_id_t ue_session_id = 0; + session_meter_idx_t session_meter_idx_internal = DEFAULT_SESSION_METER_IDX; + app_meter_idx_t app_meter_idx_internal = DEFAULT_APP_METER_IDX; + @hidden action _drop_common() { + drop_ctl = 1; + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + } + @hidden action _term_hit(upf_ctr_idx_t ctr_id) { + fabric_md.bridged.upf.upf_ctr_id = ctr_id; + term_hit = true; + } + @hidden action _set_field_encap(teid_t teid, bit<6> qfi) { + fabric_md.bridged.upf.needs_gtpu_encap = true; + fabric_md.bridged.upf.teid = teid; + fabric_md.bridged.upf.qfi = qfi; + } + @hidden action _gtpu_decap() { + fabric_md.bridged.base.ip_eth_type = ETHERTYPE_IPV4; + fabric_md.routing_ipv4_dst = hdr.inner_ipv4.dst_addr; + hdr.ipv4 = hdr.inner_ipv4; + hdr.inner_ipv4.setInvalid(); + hdr.udp = hdr.inner_udp; + hdr.inner_udp.setInvalid(); + hdr.tcp = hdr.inner_tcp; + hdr.inner_tcp.setInvalid(); + hdr.icmp = hdr.inner_icmp; + hdr.inner_icmp.setInvalid(); + hdr.gtpu.setInvalid(); + hdr.gtpu_options.setInvalid(); + hdr.gtpu_ext_psc.setInvalid(); + fabric_md.bridged.base.encap_presence = EncapPresence.NONE; + } + @hidden action _iface_common(slice_id_t slice_id) { + fabric_md.bridged.upf.skip_upf = false; + fabric_md.is_upf_hit = true; + fabric_md.upf_slice_id = slice_id; + } + action iface_access(slice_id_t slice_id) { + _iface_common(slice_id); + } + action iface_core(slice_id_t slice_id) { + _iface_common(slice_id); + } + action iface_dbuf(slice_id_t slice_id) { + _iface_common(slice_id); + _gtpu_decap(); + } + action iface_miss() { + fabric_md.bridged.upf.skip_upf = true; + } + table interfaces { + key = { + hdr.ipv4.dst_addr : lpm @name("ipv4_dst_addr") ; + hdr.gtpu.isValid(): exact @name("gtpu_is_valid") ; + } + actions = { + iface_access; + iface_core; + iface_dbuf; + @defaultonly iface_miss; + } + const default_action = iface_miss(); + const size = 64; + } + action set_uplink_session_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_SESSION_MISS; + } + action set_uplink_session_drop() { + sess_hit = true; + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_SESSION_DROP; + } + action set_downlink_session_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_SESSION_MISS; + } + action set_downlink_session_drop() { + sess_hit = true; + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_SESSION_DROP; + } + action set_downlink_session(tun_peer_id_t tun_peer_id, session_meter_idx_t session_meter_idx) { + sess_hit = true; + ue_session_id = fabric_md.routing_ipv4_dst; + session_meter_idx_internal = session_meter_idx; + fabric_md.bridged.upf.tun_peer_id = tun_peer_id; + } + action set_downlink_session_buf(tun_peer_id_t tun_peer_id, session_meter_idx_t session_meter_idx) { + sess_hit = true; + ue_session_id = fabric_md.routing_ipv4_dst; + session_meter_idx_internal = session_meter_idx; + fabric_md.bridged.upf.tun_peer_id = tun_peer_id; + fabric_md.bridged.upf.skip_egress_upf_ctr = true; + } + action set_downlink_session_buf_drop() { + sess_hit = true; + ue_session_id = fabric_md.routing_ipv4_dst; + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_SESSION_DROP_BUFF; + } + action set_uplink_session(session_meter_idx_t session_meter_idx) { + sess_hit = true; + ue_session_id = fabric_md.lkp.ipv4_src; + session_meter_idx_internal = session_meter_idx; + _gtpu_decap(); + } + table downlink_sessions { + key = { + fabric_md.routing_ipv4_dst: exact @name("ue_addr") ; + } + actions = { + set_downlink_session; + set_downlink_session_buf; + set_downlink_session_buf_drop; + set_downlink_session_drop; + @defaultonly set_downlink_session_miss; + } + size = 100000; + const default_action = set_downlink_session_miss(); + } + table uplink_sessions { + key = { + hdr.ipv4.dst_addr: exact @name("tunnel_ipv4_dst") ; + hdr.gtpu.teid : exact @name("teid") ; + } + actions = { + set_uplink_session; + set_uplink_session_drop; + @defaultonly set_uplink_session_miss; + } + size = 100000 * 1; + const default_action = set_uplink_session_miss(); + } + action uplink_drop_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_TERMINATION_MISS; + } + action downlink_drop_miss() { + _drop_common(); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_TERMINATION_MISS; + } + action uplink_drop(upf_ctr_idx_t ctr_id) { + _drop_common(); + _term_hit(ctr_id); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UL_TERMINATION_DROP; + } + action downlink_drop(upf_ctr_idx_t ctr_id) { + _drop_common(); + _term_hit(ctr_id); + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_DL_TERMINATION_DROP; + } + action app_fwd(upf_ctr_idx_t ctr_id, tc_t tc, app_meter_idx_t app_meter_idx) { + _term_hit(ctr_id); + fabric_md.upf_tc = tc; + app_meter_idx_internal = app_meter_idx; + fabric_md.tc_unknown = false; + } + action downlink_fwd_encap(upf_ctr_idx_t ctr_id, tc_t tc, teid_t teid, bit<6> qfi, app_meter_idx_t app_meter_idx) { + app_fwd(ctr_id, tc, app_meter_idx); + _set_field_encap(teid, qfi); + } + table uplink_terminations { + key = { + ue_session_id : exact @name("ue_session_id") ; + internal_app_id: exact @name("app_id") ; + } + actions = { + app_fwd; + uplink_drop; + @defaultonly uplink_drop_miss; + } + const default_action = uplink_drop_miss(); + const size = 100000; + } + table downlink_terminations { + key = { + ue_session_id : exact @name("ue_session_id") ; + internal_app_id: exact @name("app_id") ; + } + actions = { + downlink_fwd_encap; + downlink_drop; + @defaultonly downlink_drop_miss; + } + const default_action = downlink_drop_miss(); + const size = 100000; + } + action set_routing_ipv4_dst(ipv4_addr_t tun_dst_addr) { + fabric_md.routing_ipv4_dst = tun_dst_addr; + } + table ig_tunnel_peers { + key = { + fabric_md.bridged.upf.tun_peer_id: exact @name("tun_peer_id") ; + } + actions = { + set_routing_ipv4_dst; + @defaultonly nop; + } + const default_action = nop(); + const size = 256; + } + action set_app_id(bit<8> app_id) { + internal_app_id = app_id; + } + table applications { + key = { + fabric_md.upf_slice_id: exact @name("slice_id") ; + app_ipv4_addr : lpm @name("app_ipv4_addr") ; + app_l4_port : range @name("app_l4_port") ; + app_ip_proto : ternary @name("app_ip_proto") ; + } + actions = { + set_app_id; + @defaultonly nop; + } + const default_action = nop(); + size = 5 * 1; + } + direct_counter(CounterType.packets) recirc_stats; + action recirc_allow() { + standard_md.egress_spec = FAKE_V1MODEL_RECIRC_PORT; + fabric_md.bridged.base.vlan_id = DEFAULT_VLAN_ID; + do_upf_uplink_recirc = true; + fabric_md.egress_port_set = true; + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + recirc_stats.count(); + } + action recirc_deny() { + fabric_md.bridged.int_bmd.drop_reason = IntDropReason_t.DROP_REASON_UPF_UPLINK_RECIRC_DENY; + do_upf_uplink_recirc = false; + fabric_md.skip_forwarding = true; + fabric_md.skip_next = true; + recirc_stats.count(); + } + action recirc_miss() { + recirc_stats.count(); + } + table uplink_recirc_rules { + key = { + fabric_md.lkp.ipv4_src: ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst: ternary @name("ipv4_dst") ; + } + actions = { + recirc_allow; + recirc_deny; + @defaultonly recirc_miss; + } + const default_action = recirc_miss; + size = 64; + counters = recirc_stats; + } + apply { + if (hdr.ipv4.isValid()) { + switch (interfaces.apply().action_run) { + iface_access: { + is_uplink = true; + app_ipv4_addr = fabric_md.lkp.ipv4_dst; + app_l4_port = fabric_md.lkp.l4_dport; + app_ip_proto = fabric_md.lkp.ip_proto; + if (fabric_md.bridged.base.encap_presence != EncapPresence.NONE) { + uplink_sessions.apply(); + } + } + iface_core: { + app_ipv4_addr = fabric_md.lkp.ipv4_src; + app_l4_port = fabric_md.lkp.l4_sport; + app_ip_proto = fabric_md.lkp.ip_proto; + downlink_sessions.apply(); + } + iface_dbuf: { + app_ipv4_addr = fabric_md.lkp.ipv4_src; + app_l4_port = fabric_md.lkp.l4_sport; + app_ip_proto = fabric_md.lkp.ip_proto; + downlink_sessions.apply(); + } + } + applications.apply(); + if (sess_hit) { + if (is_uplink) { + uplink_terminations.apply(); + uplink_recirc_rules.apply(); + } else { + downlink_terminations.apply(); + } + } else { + fabric_md.bridged.upf.skip_egress_upf_ctr = true; + } + app_meter.execute_meter((bit<32>)app_meter_idx_internal, fabric_md.upf_meter_color); + if (fabric_md.upf_meter_color != MeterColor_t.RED) { + session_meter.execute_meter((bit<32>)session_meter_idx_internal, fabric_md.upf_meter_color); + } + ig_tunnel_peers.apply(); + if (term_hit) { + terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id); + } + } + } +} + +control UpfEgress(inout ingress_headers_t hdr, inout fabric_egress_metadata_t fabric_md) { + counter(4096, CounterType.packets_and_bytes) terminations_counter; + action load_tunnel_params(l4_port_t tunnel_src_port, ipv4_addr_t tunnel_src_addr, ipv4_addr_t tunnel_dst_addr) { + hdr.ipv4.src_addr = tunnel_src_addr; + hdr.ipv4.dst_addr = tunnel_dst_addr; + hdr.udp.sport = tunnel_src_port; + } + table eg_tunnel_peers { + key = { + fabric_md.bridged.upf.tun_peer_id: exact @name("tun_peer_id") ; + } + actions = { + load_tunnel_params; + @defaultonly nop; + } + const default_action = nop(); + const size = 256; + } + @hidden action _encap_initialize() { + hdr.ipv4.version = 4w4; + hdr.ipv4.ihl = 4w5; + hdr.ipv4.dscp = 0; + hdr.ipv4.ecn = 0; + hdr.ipv4.identification = 0x1513; + hdr.ipv4.flags = 0; + hdr.ipv4.frag_offset = 0; + hdr.ipv4.ttl = DEFAULT_IPV4_TTL; + hdr.ipv4.protocol = PROTO_UDP; + hdr.udp.dport = GTPU_UDP_PORT; + hdr.gtpu.version = GTP_V1; + hdr.gtpu.pt = GTP_PROTOCOL_TYPE_GTP; + hdr.gtpu.spare = 0; + hdr.gtpu.seq_flag = 0; + hdr.gtpu.npdu_flag = 0; + hdr.gtpu.msgtype = GTPU_GPDU; + hdr.gtpu.teid = fabric_md.bridged.upf.teid; + hdr.gtpu_options.seq_num = 0; + hdr.gtpu_options.n_pdu_num = 0; + hdr.gtpu_options.next_ext = GTPU_NEXT_EXT_PSC; + hdr.gtpu_ext_psc.len = GTPU_EXT_PSC_LEN; + hdr.gtpu_ext_psc.type = GTPU_EXT_PSC_TYPE_DL; + hdr.gtpu_ext_psc.spare0 = 0; + hdr.gtpu_ext_psc.ppp = 0; + hdr.gtpu_ext_psc.rqi = 0; + hdr.gtpu_ext_psc.next_ext = GTPU_NEXT_EXT_NONE; + } + @hidden action _encap_common() { + hdr.inner_ipv4.setValid(); + hdr.inner_ipv4 = hdr.ipv4; + hdr.udp.setValid(); + hdr.gtpu.setValid(); + _encap_initialize(); + } + action gtpu_only() { + _encap_common(); + hdr.ipv4.total_len = 20 + 8 + 8 + hdr.inner_ipv4.total_len; + hdr.udp.len = 8 + 8 + hdr.inner_ipv4.total_len; + hdr.gtpu.msglen = hdr.inner_ipv4.total_len; + fabric_md.int_report_md.encap_presence = EncapPresence.GTPU_ONLY; + } + action gtpu_with_psc() { + hdr.gtpu_options.setValid(); + hdr.gtpu_ext_psc.setValid(); + _encap_common(); + hdr.ipv4.total_len = 20 + 8 + 8 + 4 + 4 + hdr.inner_ipv4.total_len; + hdr.udp.len = 8 + 8 + 4 + 4 + hdr.inner_ipv4.total_len; + hdr.gtpu.msglen = 4 + 4 + hdr.inner_ipv4.total_len; + hdr.gtpu.ex_flag = 1; + hdr.gtpu_ext_psc.qfi = fabric_md.bridged.upf.qfi; + fabric_md.int_report_md.encap_presence = EncapPresence.GTPU_WITH_PSC; + } + table gtpu_encap { + actions = { + gtpu_only; + gtpu_with_psc; + } + default_action = gtpu_only(); + const size = 1; + } + apply { + if (!fabric_md.bridged.upf.skip_upf) { + if (fabric_md.bridged.upf.needs_gtpu_encap) { + if (hdr.udp.isValid()) { + hdr.inner_udp.setValid(); + hdr.inner_udp = hdr.udp; + hdr.udp.setInvalid(); + } + if (hdr.tcp.isValid()) { + hdr.inner_tcp.setValid(); + hdr.inner_tcp = hdr.tcp; + hdr.tcp.setInvalid(); + } + if (hdr.icmp.isValid()) { + hdr.inner_icmp.setValid(); + hdr.inner_icmp = hdr.icmp; + hdr.icmp.setInvalid(); + } + gtpu_encap.apply(); + eg_tunnel_peers.apply(); + } + if (!fabric_md.bridged.upf.skip_egress_upf_ctr) { + terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id); + } + } + } +} + +control IntWatchlist(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout IntReportType_t recirc_preserved_report_type) { + direct_counter(CounterType.packets_and_bytes) watchlist_counter; + action mark_to_report() { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_FLOW; + recirc_preserved_report_type = INT_REPORT_TYPE_FLOW; + watchlist_counter.count(); + } + action no_report() { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_NO_REPORT; + recirc_preserved_report_type = INT_REPORT_TYPE_NO_REPORT; + } + action no_report_collector() { + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_NO_REPORT; + } + table watchlist { + key = { + fabric_md.lkp.is_ipv4 : exact @name("ipv4_valid") ; + fabric_md.lkp.ipv4_src: ternary @name("ipv4_src") ; + fabric_md.lkp.ipv4_dst: ternary @name("ipv4_dst") ; + fabric_md.lkp.ip_proto: ternary @name("ip_proto") ; + fabric_md.lkp.l4_sport: range @name("l4_sport") ; + fabric_md.lkp.l4_dport: range @name("l4_dport") ; + } + actions = { + mark_to_report; + no_report_collector; + @defaultonly no_report(); + } + const default_action = no_report(); + const size = 64; + counters = watchlist_counter; + } + apply { + watchlist.apply(); + } +} + +control IntIngress(inout ingress_headers_t hdr, inout fabric_ingress_metadata_t fabric_md, inout standard_metadata_t standard_md, inout bit<1> drop_ctl) { + direct_counter(CounterType.packets_and_bytes) drop_report_counter; + @hidden action report_drop() { + fabric_md.bridged.bmd_type = BridgedMdType_t.INT_INGRESS_DROP; + fabric_md.bridged.int_bmd.report_type = INT_REPORT_TYPE_DROP; + fabric_md.bridged.base.vlan_id = DEFAULT_VLAN_ID; + fabric_md.bridged.base.mpls_label = 0; + fabric_md.bridged.upf.skip_upf = true; + drop_ctl = 0; + standard_md.egress_spec = FAKE_V1MODEL_RECIRC_PORT; + drop_report_counter.count(); + } + @hidden table drop_report { + key = { + fabric_md.bridged.int_bmd.report_type: exact @name("int_report_type") ; + drop_ctl : exact @name("drop_ctl") ; + fabric_md.punt_to_cpu : exact @name("punt_to_cpu") ; + fabric_md.egress_port_set : exact @name("egress_port_set") ; + standard_md.mcast_grp : ternary @name("mcast_group_id") ; + } + actions = { + report_drop; + @defaultonly nop; + } + const entries = { + (INT_REPORT_TYPE_FLOW, 1, false, false, default) : report_drop(); + (INT_REPORT_TYPE_FLOW, 1, false, true, default) : report_drop(); + (INT_REPORT_TYPE_FLOW, 0, false, false, 0) : report_drop(); + } + const default_action = nop(); + counters = drop_report_counter; + } + apply { + fabric_md.bridged.int_bmd.egress_port = standard_md.egress_spec; + fabric_md.bridged.int_bmd.queue_id = 0; + drop_report.apply(); + } +} + +control IntEgress(inout v1model_header_t hdr_v1model, inout fabric_v1model_metadata_t fabric_v1model, inout standard_metadata_t standard_md) { + const bit<48> DEFAULT_TIMESTAMP_MASK = 0xffffc0000000; + const bit<32> DEFAULT_HOP_LATENCY_MASK = 0xffffff00; + egress_headers_t hdr = hdr_v1model.egress; + fabric_egress_metadata_t fabric_md = fabric_v1model.egress; + direct_counter(CounterType.packets_and_bytes) report_counter; + direct_counter(CounterType.packets_and_bytes) int_metadata_counter; + QueueId_t egress_qid = 0; + @hidden register>(1024) seq_number; + @hidden action get_seq_number(in bit<32> seq_number_idx, out bit<32> result) { + bit<32> reg = 0; + seq_number.read(reg, seq_number_idx); + reg = reg + 1; + result = reg; + seq_number.write(seq_number_idx, reg); + } + action check_quota() { + } + action reset_quota() { + } + table queue_latency_thresholds { + key = { + egress_qid : exact @name("egress_qid") ; + fabric_md.int_md.hop_latency[31:16]: range @name("hop_latency_upper") ; + fabric_md.int_md.hop_latency[15:0] : range @name("hop_latency_lower") ; + } + actions = { + check_quota; + reset_quota; + @defaultonly nop; + } + default_action = nop(); + const size = 32 * 4; + } + action set_config(bit<32> hop_latency_mask, bit<48> timestamp_mask) { + fabric_md.int_md.hop_latency = fabric_md.int_md.hop_latency & hop_latency_mask; + fabric_md.int_md.timestamp = fabric_md.int_md.timestamp & timestamp_mask; + } + table config { + actions = { + @defaultonly set_config; + } + default_action = set_config(DEFAULT_HOP_LATENCY_MASK, DEFAULT_TIMESTAMP_MASK); + const size = 1; + } + @hidden action _report_encap_common(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, bit<32> switch_id) { + random(hdr.report_ipv4.identification, 0, 0xffff); + hdr.report_ipv4.src_addr = src_ip; + hdr.report_ipv4.dst_addr = mon_ip; + hdr.report_udp.dport = mon_port; + get_seq_number((bit<32>)hdr.report_fixed_header.hw_id, hdr.report_fixed_header.seq_no); + hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type; + hdr.common_report_header.switch_id = switch_id; + hdr.common_report_header.pad1 = 0; + hdr.common_report_header.pad2 = 0; + hdr.common_report_header.pad3 = 0; + hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type; + fabric_v1model.int_mirror_type = (bit<3>)FabricMirrorType_t.INVALID; + report_counter.count(); + } + action do_local_report_encap(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, bit<32> switch_id) { + _report_encap_common(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_IPV4; + hdr.report_fixed_header.nproto = NPROTO_TELEMETRY_SWITCH_LOCAL_HEADER; + hdr.local_report_header.setValid(); + } + action do_local_report_encap_mpls(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, mpls_label_t mon_label, bit<32> switch_id) { + do_local_report_encap(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_MPLS; + hdr.report_mpls.setValid(); + hdr.report_mpls.tc = 0; + hdr.report_mpls.bos = 0; + hdr.report_mpls.ttl = DEFAULT_MPLS_TTL; + hdr.report_mpls.label = mon_label; + } + action do_drop_report_encap(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, bit<32> switch_id) { + _report_encap_common(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_IPV4; + hdr.report_fixed_header.nproto = NPROTO_TELEMETRY_DROP_HEADER; + hdr.drop_report_header.setValid(); + hdr.local_report_header.setInvalid(); + hdr.drop_report_header.drop_reason = fabric_md.bridged.int_bmd.drop_reason; + } + action do_drop_report_encap_mpls(ipv4_addr_t src_ip, ipv4_addr_t mon_ip, l4_port_t mon_port, mpls_label_t mon_label, bit<32> switch_id) { + do_drop_report_encap(src_ip, mon_ip, mon_port, switch_id); + hdr.report_eth_type.value = ETHERTYPE_INT_WIP_MPLS; + hdr.report_mpls.setValid(); + hdr.report_mpls.tc = 0; + hdr.report_mpls.bos = 0; + hdr.report_mpls.ttl = DEFAULT_MPLS_TTL; + hdr.report_mpls.label = mon_label; + hdr.report_mpls.label = mon_label; + } + table report { + key = { + fabric_md.int_report_md.bmd_type : exact @name("bmd_type") ; + fabric_md.int_report_md.mirror_type: exact @name("mirror_type") ; + fabric_md.int_report_md.report_type: exact @name("int_report_type") ; + } + actions = { + do_local_report_encap; + do_local_report_encap_mpls; + do_drop_report_encap; + do_drop_report_encap_mpls; + @defaultonly nop(); + } + default_action = nop; + const size = 6; + counters = report_counter; + } + @hidden action init_int_metadata(bit<3> report_type) { + fabric_md.bridged.int_bmd.mirror_session_id = V1MODEL_INT_MIRROR_SESSION; + fabric_md.int_report_md.setValid(); + fabric_v1model.int_mirror_type = (bit<3>)FabricMirrorType_t.INT_REPORT; + fabric_md.int_report_md.bmd_type = BridgedMdType_t.EGRESS_MIRROR; + fabric_md.int_report_md.mirror_type = FabricMirrorType_t.INT_REPORT; + fabric_md.int_report_md.report_type = fabric_md.bridged.int_bmd.report_type; + fabric_md.int_report_md.ig_port = fabric_md.bridged.base.ig_port; + fabric_md.int_report_md.eg_port = (PortId_t)standard_md.egress_port; + fabric_md.int_report_md.queue_id = egress_qid; + fabric_md.int_report_md.queue_occupancy = standard_md.deq_qdepth; + fabric_md.int_report_md.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]; + fabric_md.int_report_md.eg_tstamp = standard_md.egress_global_timestamp[31:0]; + fabric_md.int_report_md.ip_eth_type = fabric_md.bridged.base.ip_eth_type; + fabric_md.int_report_md.flow_hash = fabric_md.bridged.base.inner_hash; + fabric_md.int_report_md.report_type = report_type; + int_metadata_counter.count(); + } + @hidden table int_metadata { + key = { + fabric_md.bridged.int_bmd.report_type: exact @name("int_report_type") ; + fabric_v1model.drop_ctl : exact @name("drop_ctl") ; + fabric_md.int_md.queue_report : exact @name("queue_report") ; + } + actions = { + init_int_metadata; + @defaultonly nop(); + } + const default_action = nop(); + const entries = { + (INT_REPORT_TYPE_FLOW, 0, false) : init_int_metadata(INT_REPORT_TYPE_FLOW); + (INT_REPORT_TYPE_FLOW, 1, false) : init_int_metadata(INT_REPORT_TYPE_DROP); + } + counters = int_metadata_counter; + } + @hidden action adjust_ip_udp_len(bit<16> adjust_ip, bit<16> adjust_udp) { + hdr_v1model.ingress.ipv4.total_len = fabric_md.pkt_length + adjust_ip; + hdr_v1model.ingress.udp.len = fabric_md.pkt_length + adjust_udp; + } + @hidden table adjust_int_report_hdr_length { + key = { + fabric_md.bridged.int_bmd.wip_type: exact @name("is_int_wip") ; + } + actions = { + @defaultonly nop(); + adjust_ip_udp_len; + } + const default_action = nop(); + const entries = { + INT_IS_WIP : adjust_ip_udp_len(INT_WIP_ADJUST_IP_BYTES, INT_WIP_ADJUST_UDP_BYTES); + INT_IS_WIP_WITH_MPLS : adjust_ip_udp_len(INT_WIP_ADJUST_IP_MPLS_BYTES, INT_WIP_ADJUST_UDP_MPLS_BYTES); + } + } + apply { + fabric_md.int_md.hop_latency = standard_md.egress_global_timestamp[31:0] - fabric_md.bridged.base.ig_tstamp[31:0]; + fabric_md.int_md.timestamp = standard_md.egress_global_timestamp; + queue_latency_thresholds.apply(); + config.apply(); + hdr.report_fixed_header.hw_id = 4w0 ++ standard_md.egress_spec[8:7]; + if (fabric_md.int_report_md.isValid()) { + report.apply(); + } else { + if (int_metadata.apply().hit) { + clone_preserving_field_list(CloneType.E2E, (bit<32>)fabric_md.bridged.int_bmd.mirror_session_id, PRESERVE_INT_MD); + } + } + adjust_int_report_hdr_length.apply(); + fabric_v1model.egress = fabric_md; + hdr_v1model.egress = hdr; + } +} + +control IntTnaEgressParserEmulator(inout v1model_header_t hdr_v1model, inout fabric_egress_metadata_t fabric_md, inout standard_metadata_t standard_md) { + egress_headers_t hdr = hdr_v1model.egress; + @hidden action set_common_int_headers() { + hdr.report_ethernet.setValid(); + hdr.report_eth_type.setValid(); + hdr.report_ipv4.setValid(); + hdr.report_ipv4.version = 4w4; + hdr.report_ipv4.ihl = 4w5; + hdr.report_ipv4.dscp = 0; + hdr.report_ipv4.ecn = 2w0; + hdr.report_ipv4.flags = 0; + hdr.report_ipv4.frag_offset = 0; + hdr.report_ipv4.ttl = DEFAULT_IPV4_TTL; + hdr.report_ipv4.protocol = PROTO_UDP; + hdr.report_udp.setValid(); + hdr.report_udp.sport = 0; + hdr.report_fixed_header.setValid(); + hdr.report_fixed_header.ver = 0; + hdr.report_fixed_header.nproto = NPROTO_TELEMETRY_SWITCH_LOCAL_HEADER; + hdr.report_fixed_header.rsvd = 0; + hdr.common_report_header.setValid(); + } + @hidden action set_common_int_drop_headers() { + set_common_int_headers(); + fabric_md.int_report_md.setValid(); + fabric_md.int_report_md.ip_eth_type = ETHERTYPE_IPV4; + fabric_md.int_report_md.report_type = INT_REPORT_TYPE_DROP; + fabric_md.int_report_md.mirror_type = FabricMirrorType_t.INVALID; + hdr.drop_report_header.setValid(); + } + @hidden action parse_int_ingress_drop() { + set_common_int_drop_headers(); + fabric_md.int_report_md.bmd_type = BridgedMdType_t.INT_INGRESS_DROP; + fabric_md.int_report_md.encap_presence = fabric_md.bridged.base.encap_presence; + fabric_md.int_report_md.flow_hash = fabric_md.bridged.base.inner_hash; + hdr.drop_report_header.drop_reason = fabric_md.bridged.int_bmd.drop_reason; + hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]; + hdr.common_report_header.ig_port = fabric_md.bridged.base.ig_port; + hdr.common_report_header.eg_port = 0; + hdr.common_report_header.queue_id = 0; + } + @hidden action parse_int_report_mirror() { + set_common_int_headers(); + fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type; + fabric_md.bridged.base.vlan_id = DEFAULT_VLAN_ID; + fabric_md.bridged.base.mpls_label = 0; + fabric_md.bridged.upf.skip_upf = true; + hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp; + hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port; + hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port; + hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id; + hdr.local_report_header.setValid(); + hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy; + hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp; + } + apply { + fabric_md.is_int_recirc = true; + hdr_v1model.ingress.vlan_tag.setInvalid(); + if (hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()) { + hdr_v1model.ingress.ipv4.setInvalid(); + hdr_v1model.ingress.tcp.setInvalid(); + hdr_v1model.ingress.udp.setInvalid(); + hdr_v1model.ingress.icmp.setInvalid(); + hdr_v1model.ingress.vxlan.setInvalid(); + hdr_v1model.ingress.inner_ethernet.setInvalid(); + hdr_v1model.ingress.inner_eth_type.setInvalid(); + hdr_v1model.ingress.gtpu.setInvalid(); + hdr_v1model.ingress.gtpu_options.setInvalid(); + hdr_v1model.ingress.gtpu_ext_psc.setInvalid(); + } + if ((bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP) { + parse_int_ingress_drop(); + recirculate_preserving_field_list(NO_PRESERVATION); + } else { + parse_int_report_mirror(); + recirculate_preserving_field_list(PRESERVE_INT_MD); + } + hdr_v1model.egress = hdr; + } +} + +control FabricIngress(inout v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md, inout standard_metadata_t standard_md) { + LookupMdInit() lkp_md_init; + StatsIngress() stats; + PacketIoIngress() pkt_io; + Filtering() filtering; + Forwarding() forwarding; + PreNext() pre_next; + Acl() acl; + Next() next; + Hasher() hasher; + IngressSliceTcClassifier() slice_tc_classifier; + IngressQos() qos; + UpfIngress() upf; + IntWatchlist() int_watchlist; + IntIngress() int_ingress; + apply { + mark_to_drop(standard_md); + if (standard_md.parser_error == error.PacketRejectedByParser) { + exit; + } + if (standard_md.instance_type == 4) { + fabric_md.ingress.bridged.base.ig_port = FAKE_V1MODEL_RECIRC_PORT; + } + lkp_md_init.apply(hdr.ingress, fabric_md.ingress.lkp); + pkt_io.apply(hdr.ingress, fabric_md.ingress, fabric_md.skip_egress, standard_md, fabric_md.recirc_preserved_egress_port); + int_watchlist.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.recirc_preserved_report_type); + stats.apply(fabric_md.ingress.lkp, fabric_md.ingress.bridged.base.ig_port, fabric_md.ingress.bridged.base.stats_flow_id); + slice_tc_classifier.apply(hdr.ingress, standard_md, fabric_md.ingress); + filtering.apply(hdr.ingress, fabric_md.ingress, standard_md); + if (!fabric_md.ingress.skip_forwarding) { + upf.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.do_upf_uplink_recirc, fabric_md.drop_ctl); + } + if (!fabric_md.ingress.skip_forwarding) { + forwarding.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.drop_ctl); + } + hasher.apply(hdr.ingress, fabric_md.ingress); + if (!fabric_md.ingress.skip_next) { + pre_next.apply(hdr.ingress, fabric_md.ingress); + } + acl.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.recirc_preserved_egress_port, fabric_md.drop_ctl); + if (!fabric_md.ingress.skip_next) { + next.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.recirc_preserved_egress_port); + } + qos.apply(fabric_md.ingress, standard_md, fabric_md.drop_ctl); + int_ingress.apply(hdr.ingress, fabric_md.ingress, standard_md, fabric_md.drop_ctl); + fabric_md.egress.bridged = fabric_md.ingress.bridged; + if (fabric_md.drop_ctl == 1) { + mark_to_drop(standard_md); + } + } +} + +control FabricEgress(inout v1model_header_t hdr, inout fabric_v1model_metadata_t fabric_md, inout standard_metadata_t standard_md) { + StatsEgress() stats; + PacketIoEgress() pkt_io_egress; + EgressNextControl() egress_next; + EgressDscpRewriter() dscp_rewriter; + UpfEgress() upf; + IntTnaEgressParserEmulator() parser_emulator; + IntEgress() int_egress; + apply { + fabric_md.egress.cpu_port = 0; + if (fabric_md.skip_egress) { + exit; + } + if (standard_md.instance_type == 2) { + fabric_md.egress.bridged.int_bmd.drop_reason = fabric_md.recirc_preserved_drop_reason; + fabric_md.egress.bridged.int_bmd.report_type = fabric_md.recirc_preserved_report_type; + parser_emulator.apply(hdr, fabric_md.egress, standard_md); + } + if ((bit<8>)fabric_md.egress.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP) { + parser_emulator.apply(hdr, fabric_md.egress, standard_md); + } + pkt_io_egress.apply(hdr.ingress, fabric_md.egress, standard_md, fabric_md.recirc_preserved_ingress_port); + stats.apply(fabric_md.egress.bridged.base.stats_flow_id, standard_md.egress_port, fabric_md.egress.bridged.bmd_type); + egress_next.apply(hdr.ingress, fabric_md.egress, standard_md, fabric_md.recirc_preserved_drop_reason, fabric_md.drop_ctl); + upf.apply(hdr.ingress, fabric_md.egress); + int_egress.apply(hdr, fabric_md, standard_md); + dscp_rewriter.apply(fabric_md.egress, standard_md, hdr.ingress); + if (fabric_md.do_upf_uplink_recirc) { + recirculate_preserving_field_list(NO_PRESERVATION); + } + if (fabric_md.drop_ctl == 1) { + mark_to_drop(standard_md); + } + } +} + +V1Switch(FabricParser(), FabricVerifyChecksum(), FabricIngress(), FabricEgress(), FabricComputeChecksum(), FabricDeparser()) main; + diff --git a/src/tests/p4-sd-fabric-svc-upf/p4src/bmv2.json b/src/tests/p4-sd-fabric-svc-upf/p4src/bmv2.json new file mode 100644 index 0000000000000000000000000000000000000000..fe66f93e4c95c397fca7f6d5251802c7a8858a0e --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/p4src/bmv2.json @@ -0,0 +1,28235 @@ +{ + "header_types" : [ + { + "name" : "scalars_0", + "id" : 0, + "fields" : [ + ["tmp_2", 16, false], + ["tmp_4", 1, false], + ["tmp_6", 16, false], + ["tmp_12", 3, false], + ["tmp_13", 8, false], + ["gtpu_ext_len_0", 8, false], + ["tmp_3", 16, false], + ["tmp_5", 16, false], + ["tmp_7", 4, false], + ["tmp_8", 112, false], + ["tmp_9", 112, false], + ["tmp_10", 112, false], + ["tmp_11", 64, false], + ["tmp_14", 32, false], + ["tmp_15", 32, false], + ["tmp_16", 32, false], + ["tmp_17", 32, false], + ["tmp_18", 8, false], + ["tmp_19", 32, false], + ["tmp_20", 32, false], + ["tmp_21", 32, false], + ["tmp_22", 32, false], + ["tmp_23", 48, false], + ["tmp_24", 48, false], + ["tmp_25", 16, false], + ["tmp_26", 32, false], + ["tmp_27", 32, false], + ["tmp_28", 8, false], + ["tmp_29", 16, false], + ["tmp_30", 16, false], + ["tmp_31", 32, false], + ["qos_packet_color", 2, false], + ["upf_is_uplink", 1, false], + ["upf_term_hit", 1, false], + ["upf_sess_hit", 1, false], + ["upf_app_ipv4_addr", 32, false], + ["upf_app_l4_port", 16, false], + ["upf_app_ip_proto", 8, false], + ["upf_internal_app_id", 8, false], + ["upf_ue_session_id", 32, false], + ["upf_session_meter_idx_internal", 15, false], + ["upf_app_meter_idx_internal", 15, false], + ["tmp_32", 32, false], + ["tmp_33", 32, false], + ["tmp_34", 32, false], + ["tmp_35", 32, false], + ["tmp_36", 32, false], + ["tmp_37", 32, false], + ["tmp_38", 32, false], + ["tmp_39", 32, false], + ["tmp_40", 32, false], + ["tmp_41", 32, false], + ["dscp_rewriter_tmp_dscp", 6, false], + ["int_egress_fabric_md_pkt_length", 16, false], + ["int_egress_egress_qid", 5, false], + ["int_egress_reg", 32, false], + ["key_0", 16, false], + ["key_1", 16, false], + ["userMetadata._skip_egress0", 1, false], + ["userMetadata._do_upf_uplink_recirc1", 1, false], + ["userMetadata._drop_ctl2", 1, false], + ["userMetadata._int_mirror_type3", 3, false], + ["userMetadata._ingress_ecmp_hash5", 32, false], + ["userMetadata._ingress_lkp_eth_dst6", 48, false], + ["userMetadata._ingress_lkp_eth_src7", 48, false], + ["userMetadata._ingress_lkp_eth_type8", 16, false], + ["userMetadata._ingress_lkp_vlan_id9", 12, false], + ["userMetadata._ingress_lkp_is_ipv410", 1, false], + ["userMetadata._ingress_lkp_ipv4_src11", 32, false], + ["userMetadata._ingress_lkp_ipv4_dst12", 32, false], + ["userMetadata._ingress_lkp_ip_proto13", 8, false], + ["userMetadata._ingress_lkp_l4_sport14", 16, false], + ["userMetadata._ingress_lkp_l4_dport15", 16, false], + ["userMetadata._ingress_lkp_icmp_type16", 8, false], + ["userMetadata._ingress_lkp_icmp_code17", 8, false], + ["userMetadata._ingress_routing_ipv4_dst18", 32, false], + ["userMetadata._ingress_skip_forwarding19", 1, false], + ["userMetadata._ingress_skip_next20", 1, false], + ["userMetadata._ingress_next_id21", 32, false], + ["userMetadata._ingress_egress_port_set22", 1, false], + ["userMetadata._ingress_punt_to_cpu23", 1, false], + ["userMetadata._ingress_ipv4_checksum_err24", 1, false], + ["userMetadata._ingress_inner_ipv4_checksum_err25", 1, false], + ["userMetadata._ingress_slice_id26", 4, false], + ["userMetadata._ingress_tc27", 2, false], + ["userMetadata._ingress_tc_unknown28", 1, false], + ["userMetadata._ingress_is_upf_hit29", 1, false], + ["userMetadata._ingress_upf_slice_id30", 4, false], + ["userMetadata._ingress_upf_tc31", 2, false], + ["userMetadata._ingress_upf_meter_color32", 2, false], + ["userMetadata._ingress_ig_port_type33", 2, false], + ["userMetadata._ingress_mirror_mirror_session_id34", 10, false], + ["userMetadata._ingress_mirror_bmd_type35", 8, false], + ["userMetadata._egress_cpu_port37", 9, false], + ["userMetadata._egress_inner_ipv4_checksum_err38", 1, false], + ["userMetadata._egress_int_md_hop_latency40", 32, false], + ["userMetadata._egress_int_md_timestamp41", 48, false], + ["userMetadata._egress_int_md_vlan_stripped42", 1, false], + ["userMetadata._egress_int_md_queue_report43", 1, false], + ["userMetadata._egress_int_ipv4_len44", 16, false], + ["userMetadata._egress_is_int_recirc45", 1, false], + ["userMetadata._egress_pkt_length46", 16, false], + ["userMetadata._recirc_preserved_report_type47", 3, false], + ["userMetadata._recirc_preserved_egress_port48", 9, false], + ["userMetadata._recirc_preserved_drop_reason49", 8, false], + ["userMetadata._recirc_preserved_ingress_port50", 9, false], + ["_padding_1", 3, false] + ] + }, + { + "name" : "fake_ethernet_t", + "id" : 1, + "fields" : [ + ["_pad0", 48, false], + ["_pad1", 48, false], + ["ether_type", 16, false] + ] + }, + { + "name" : "packet_out_header_t", + "id" : 2, + "fields" : [ + ["pad0", 7, false], + ["egress_port", 9, false], + ["pad1", 3, false], + ["queue_id", 5, false], + ["pad2", 5, false], + ["cpu_loopback_mode", 2, false], + ["do_forwarding", 1, false], + ["pad3", 16, false], + ["pad4", 48, false], + ["ether_type", 16, false] + ] + }, + { + "name" : "gtpu_t", + "id" : 3, + "fields" : [ + ["version", 3, false], + ["pt", 1, false], + ["spare", 1, false], + ["ex_flag", 1, false], + ["seq_flag", 1, false], + ["npdu_flag", 1, false], + ["msgtype", 8, false], + ["msglen", 16, false], + ["teid", 32, false] + ] + }, + { + "name" : "ethernet_t", + "id" : 4, + "fields" : [ + ["dst_addr", 48, false], + ["src_addr", 48, false] + ] + }, + { + "name" : "eth_type_t", + "id" : 5, + "fields" : [ + ["value", 16, false] + ] + }, + { + "name" : "ipv4_t", + "id" : 6, + "fields" : [ + ["version", 4, false], + ["ihl", 4, false], + ["dscp", 6, false], + ["ecn", 2, false], + ["total_len", 16, false], + ["identification", 16, false], + ["flags", 3, false], + ["frag_offset", 13, false], + ["ttl", 8, false], + ["protocol", 8, false], + ["hdr_checksum", 16, false], + ["src_addr", 32, false], + ["dst_addr", 32, false] + ] + }, + { + "name" : "udp_t", + "id" : 7, + "fields" : [ + ["sport", 16, false], + ["dport", 16, false], + ["len", 16, false], + ["checksum", 16, false] + ] + }, + { + "name" : "report_fixed_header_t", + "id" : 8, + "fields" : [ + ["ver", 4, false], + ["nproto", 4, false], + ["dqf", 3, false], + ["rsvd", 15, false], + ["hw_id", 6, false], + ["seq_no", 32, false], + ["ig_tstamp", 32, false] + ] + }, + { + "name" : "common_report_header_t", + "id" : 9, + "fields" : [ + ["switch_id", 32, false], + ["pad1", 7, false], + ["ig_port", 9, false], + ["pad2", 7, false], + ["eg_port", 9, false], + ["pad3", 3, false], + ["queue_id", 5, false] + ] + }, + { + "name" : "local_report_header_t", + "id" : 10, + "fields" : [ + ["pad1", 5, false], + ["queue_occupancy", 19, false], + ["eg_tstamp", 32, false] + ] + }, + { + "name" : "drop_report_header_t", + "id" : 11, + "fields" : [ + ["drop_reason", 8, false], + ["pad", 16, false] + ] + }, + { + "name" : "mpls_t", + "id" : 12, + "fields" : [ + ["label", 20, false], + ["tc", 3, false], + ["bos", 1, false], + ["ttl", 8, false] + ] + }, + { + "name" : "bridged_metadata_t", + "id" : 13, + "fields" : [ + ["_bmd_type0", 8, false], + ["_base_inner_hash1", 32, false], + ["_base_mpls_label2", 20, false], + ["_base_ig_port3", 9, false], + ["_base_is_multicast4", 1, 0], + ["_base_fwd_type5", 3, false], + ["_base_vlan_id6", 12, false], + ["_base_encap_presence7", 2, false], + ["_base_mpls_ttl8", 8, false], + ["_base_ig_tstamp9", 48, false], + ["_base_ip_eth_type10", 16, false], + ["_base_stats_flow_id11", 10, false], + ["_base_slice_tc12", 6, false], + ["_upf_tun_peer_id13", 8, false], + ["_upf_upf_ctr_id14", 12, false], + ["_upf_qfi15", 6, false], + ["_upf_needs_gtpu_encap16", 1, 0], + ["_upf_skip_upf17", 1, 0], + ["_upf_skip_egress_upf_ctr18", 1, 0], + ["_upf_teid19", 32, false], + ["_upf__pad20", 4, false], + ["_int_bmd_report_type21", 3, false], + ["_int_bmd_mirror_session_id22", 10, false], + ["_int_bmd_drop_reason23", 8, false], + ["_int_bmd_queue_id24", 5, false], + ["_int_bmd_egress_port25", 9, false], + ["_int_bmd_wip_type26", 8, false], + ["__pad027", 1, false], + ["__pad128", 7, false], + ["__pad229", 5, false] + ] + }, + { + "name" : "int_report_metadata_t", + "id" : 14, + "fields" : [ + ["bmd_type", 8, false], + ["_pad0", 5, false], + ["mirror_type", 3, false], + ["_pad1", 7, false], + ["ig_port", 9, false], + ["_pad2", 7, false], + ["eg_port", 9, false], + ["_pad3", 3, false], + ["queue_id", 5, false], + ["_pad4", 5, false], + ["queue_occupancy", 19, false], + ["ig_tstamp", 32, false], + ["eg_tstamp", 32, false], + ["drop_reason", 8, false], + ["ip_eth_type", 16, false], + ["_pad5", 6, false], + ["encap_presence", 2, false], + ["report_type", 3, false], + ["_pad6", 5, false], + ["flow_hash", 32, false] + ] + }, + { + "name" : "int_metadata_t", + "id" : 15, + "fields" : [ + ["hop_latency", 32, false], + ["timestamp", 48, false], + ["vlan_stripped", 1, 0], + ["queue_report", 1, 0], + ["_padding", 6, false] + ] + }, + { + "name" : "standard_metadata", + "id" : 16, + "fields" : [ + ["ingress_port", 9, false], + ["egress_spec", 9, false], + ["egress_port", 9, false], + ["instance_type", 32, false], + ["packet_length", 32, false], + ["enq_timestamp", 32, false], + ["enq_qdepth", 19, false], + ["deq_timedelta", 32, false], + ["deq_qdepth", 19, false], + ["ingress_global_timestamp", 48, false], + ["egress_global_timestamp", 48, false], + ["mcast_grp", 16, false], + ["egress_rid", 16, false], + ["checksum_error", 1, false], + ["parser_error", 32, false], + ["priority", 3, false], + ["_padding_0", 3, false] + ] + }, + { + "name" : "packet_in_header_t", + "id" : 17, + "fields" : [ + ["ingress_port", 9, false], + ["_pad0", 7, false] + ] + }, + { + "name" : "vlan_tag_t", + "id" : 18, + "fields" : [ + ["eth_type", 16, false], + ["pri", 3, false], + ["cfi", 1, false], + ["vlan_id", 12, false] + ] + }, + { + "name" : "ipv6_t", + "id" : 19, + "fields" : [ + ["version", 4, false], + ["traffic_class", 8, false], + ["flow_label", 20, false], + ["payload_len", 16, false], + ["next_hdr", 8, false], + ["hop_limit", 8, false], + ["src_addr", 128, false], + ["dst_addr", 128, false] + ] + }, + { + "name" : "tcp_t", + "id" : 20, + "fields" : [ + ["sport", 16, false], + ["dport", 16, false] + ] + }, + { + "name" : "icmp_t", + "id" : 21, + "fields" : [ + ["icmp_type", 8, false], + ["icmp_code", 8, false] + ] + }, + { + "name" : "gtpu_options_t", + "id" : 22, + "fields" : [ + ["seq_num", 16, false], + ["n_pdu_num", 8, false], + ["next_ext", 8, false] + ] + }, + { + "name" : "gtpu_ext_psc_t", + "id" : 23, + "fields" : [ + ["len", 8, false], + ["type", 4, false], + ["spare0", 4, false], + ["ppp", 1, false], + ["rqi", 1, false], + ["qfi", 6, false], + ["next_ext", 8, false] + ] + }, + { + "name" : "vxlan_t", + "id" : 24, + "fields" : [ + ["flags", 8, false], + ["reserved", 24, false], + ["vni", 24, false], + ["reserved_2", 8, false] + ] + } + ], + "headers" : [ + { + "name" : "tmp", + "id" : 0, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "tmp_0", + "id" : 1, + "header_type" : "packet_out_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "tmp_1", + "id" : 2, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "gtpu_0", + "id" : 3, + "header_type" : "gtpu_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_ethernet", + "id" : 4, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_eth_type", + "id" : 5, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_ipv4", + "id" : 6, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_udp", + "id" : 7, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_report_fixed_header", + "id" : 8, + "header_type" : "report_fixed_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_common_report_header", + "id" : 9, + "header_type" : "common_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_local_report_header", + "id" : 10, + "header_type" : "local_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "parser_emulator_hdr_drop_report_header", + "id" : 11, + "header_type" : "drop_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_eth_type", + "id" : 12, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_mpls", + "id" : 13, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_ipv4", + "id" : 14, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_udp", + "id" : 15, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_report_fixed_header", + "id" : 16, + "header_type" : "report_fixed_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_common_report_header", + "id" : 17, + "header_type" : "common_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_local_report_header", + "id" : 18, + "header_type" : "local_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_drop_report_header", + "id" : 19, + "header_type" : "drop_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_hdr_eth_type", + "id" : 20, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_fabric_md_bridged", + "id" : 21, + "header_type" : "bridged_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_fabric_md_int_report_md", + "id" : 22, + "header_type" : "int_report_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "int_egress_fabric_md_int_md", + "id" : 23, + "header_type" : "int_metadata_t", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "scalars", + "id" : 24, + "header_type" : "scalars_0", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "standard_metadata", + "id" : 25, + "header_type" : "standard_metadata", + "metadata" : true, + "pi_omit" : true + }, + { + "name" : "_ingress_packet_out0", + "id" : 26, + "header_type" : "packet_out_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_packet_in1", + "id" : 27, + "header_type" : "packet_in_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_fake_ethernet2", + "id" : 28, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_ethernet3", + "id" : 29, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_vlan_tag4", + "id" : 30, + "header_type" : "vlan_tag_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_eth_type5", + "id" : 31, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_mpls6", + "id" : 32, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_ipv47", + "id" : 33, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_ipv68", + "id" : 34, + "header_type" : "ipv6_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_tcp9", + "id" : 35, + "header_type" : "tcp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_udp10", + "id" : 36, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_icmp11", + "id" : 37, + "header_type" : "icmp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_gtpu12", + "id" : 38, + "header_type" : "gtpu_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_gtpu_options13", + "id" : 39, + "header_type" : "gtpu_options_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_gtpu_ext_psc14", + "id" : 40, + "header_type" : "gtpu_ext_psc_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_vxlan15", + "id" : 41, + "header_type" : "vxlan_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_ethernet16", + "id" : 42, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_eth_type17", + "id" : 43, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_ipv418", + "id" : 44, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_tcp19", + "id" : 45, + "header_type" : "tcp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_udp20", + "id" : 46, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_inner_icmp21", + "id" : 47, + "header_type" : "icmp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_packet_in22", + "id" : 48, + "header_type" : "packet_in_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_fake_ethernet23", + "id" : 49, + "header_type" : "fake_ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_ethernet24", + "id" : 50, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_eth_type25", + "id" : 51, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_mpls26", + "id" : 52, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_ipv427", + "id" : 53, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_udp28", + "id" : 54, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_report_fixed_header29", + "id" : 55, + "header_type" : "report_fixed_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_common_report_header30", + "id" : 56, + "header_type" : "common_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_local_report_header31", + "id" : 57, + "header_type" : "local_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_drop_report_header32", + "id" : 58, + "header_type" : "drop_report_header_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_ethernet33", + "id" : 59, + "header_type" : "ethernet_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_vlan_tag34", + "id" : 60, + "header_type" : "vlan_tag_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_eth_type35", + "id" : 61, + "header_type" : "eth_type_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_mpls36", + "id" : 62, + "header_type" : "mpls_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_ipv437", + "id" : 63, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_udp38", + "id" : 64, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_gtpu39", + "id" : 65, + "header_type" : "gtpu_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_gtpu_options40", + "id" : 66, + "header_type" : "gtpu_options_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_outer_gtpu_ext_psc41", + "id" : 67, + "header_type" : "gtpu_ext_psc_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_ipv442", + "id" : 68, + "header_type" : "ipv4_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_ipv643", + "id" : 69, + "header_type" : "ipv6_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_udp44", + "id" : 70, + "header_type" : "udp_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_ingress_bridged4", + "id" : 71, + "header_type" : "bridged_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_bridged36", + "id" : 72, + "header_type" : "bridged_metadata_t", + "metadata" : false, + "pi_omit" : true + }, + { + "name" : "_egress_int_report_md39", + "id" : 73, + "header_type" : "int_report_metadata_t", + "metadata" : false, + "pi_omit" : true + } + ], + "header_stacks" : [], + "header_union_types" : [], + "header_unions" : [], + "header_union_stacks" : [], + "field_lists" : [ + { + "id" : 1, + "name" : "field_list241", + "elements" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + } + ] + }, + { + "id" : 2, + "name" : "field_list231", + "elements" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_ingress_port50"] + } + ] + }, + { + "id" : 3, + "name" : "empty", + "elements" : [] + }, + { + "id" : 4, + "name" : "empty_0", + "elements" : [] + }, + { + "id" : 5, + "name" : "empty_1", + "elements" : [] + } + ], + "errors" : [ + ["NoError", 1], + ["PacketTooShort", 2], + ["NoMatch", 3], + ["StackOutOfBounds", 4], + ["HeaderTooShort", 5], + ["ParserTimeout", 6], + ["ParserInvalidArgument", 7], + ["PacketRejectedByParser", 8] + ], + "enums" : [], + "parsers" : [ + { + "name" : "parser", + "id" : 0, + "init_state" : "start", + "parse_states" : [ + { + "name" : "start", + "id" : 0, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_pkt_length46"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "packet_length"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x0000ffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_bridged4" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_bmd_type0"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ig_port3"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "ingress_port"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_ingress_port50"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "ingress_port"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ig_tstamp9"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "ingress_global_timestamp"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_punt_to_cpu23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_wip_type26"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + { + "type" : "lookahead", + "value" : [0, 112] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "tmp" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp", "_pad0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x40" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp", "_pad1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp", "ether_type"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_2"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_8"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0xbf02", + "mask" : null, + "next_state" : "parse_fake_ethernet" + }, + { + "type" : "hexstr", + "value" : "0xbf03", + "mask" : null, + "next_state" : "parse_fake_ethernet_and_accept" + }, + { + "type" : "hexstr", + "value" : "0xbf01", + "mask" : null, + "next_state" : "check_packet_out" + }, + { + "type" : "hexstr", + "value" : "0xbf04", + "mask" : null, + "next_state" : "parse_int_wip_ipv4" + }, + { + "type" : "hexstr", + "value" : "0xbf05", + "mask" : null, + "next_state" : "parse_int_wip_mpls" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ethernet" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_2"] + } + ] + }, + { + "name" : "check_packet_out", + "id" : 1, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + { + "type" : "lookahead", + "value" : [0, 112] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "tmp_0" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x69" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x7f" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "egress_port"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x60" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x5d" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "queue_id"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x58" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x1f" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad2"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x53" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x1f" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "cpu_loopback_mode"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x51" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "do_forwarding"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x50" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad3"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x40" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "pad4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_0", "ether_type"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x50" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x00", + "mask" : null, + "next_state" : "parse_packet_out_and_accept" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "strip_packet_out" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_4"] + } + ] + }, + { + "name" : "parse_int_wip_ipv4", + "id" : 2, + "parser_ops" : [ + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ethernet3" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_eth_type5" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_wip_type26"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_ttl8"] + }, + { + "type" : "hexstr", + "value" : "0x41" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x00000070" + } + ], + "op" : "advance" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ipv4" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_int_wip_mpls", + "id" : 3, + "parser_ops" : [ + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ethernet3" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_eth_type5" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "hexstr", + "value" : "0x8847" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_wip_type26"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x00000070" + } + ], + "op" : "advance" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_mpls" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_packet_out_and_accept", + "id" : 4, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_packet_out0" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "strip_packet_out", + "id" : 5, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x00000070" + } + ], + "op" : "advance" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ethernet" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_fake_ethernet", + "id" : 6, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_fake_ethernet2" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + { + "type" : "lookahead", + "value" : [0, 112] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "tmp_1" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_1", "_pad0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x40" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_1", "_pad1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["tmp_1", "ether_type"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_6"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_10"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0xbf04", + "mask" : null, + "next_state" : "parse_int_wip_ipv4" + }, + { + "type" : "hexstr", + "value" : "0xbf05", + "mask" : null, + "next_state" : "parse_int_wip_mpls" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_ethernet" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_6"] + } + ] + }, + { + "name" : "parse_fake_ethernet_and_accept", + "id" : 7, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_fake_ethernet2" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_ethernet", + "id" : 8, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_ethernet3" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_3"] + }, + { + "type" : "lookahead", + "value" : [0, 16] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x88a8", + "mask" : null, + "next_state" : "parse_vlan_tag" + }, + { + "type" : "hexstr", + "value" : "0x8100", + "mask" : "0xefff", + "next_state" : "parse_vlan_tag" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_untagged" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_3"] + } + ] + }, + { + "name" : "parse_vlan_tag", + "id" : 9, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_vlan_tag4" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "vlan_id"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_5"] + }, + { + "type" : "lookahead", + "value" : [0, 16] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_eth_type" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_5"] + } + ] + }, + { + "name" : "parse_untagged", + "id" : 10, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_eth_type" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_eth_type", + "id" : 11, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_eth_type5" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x8847", + "mask" : null, + "next_state" : "parse_mpls" + }, + { + "type" : "hexstr", + "value" : "0x0800", + "mask" : null, + "next_state" : "parse_non_mpls" + }, + { + "type" : "hexstr", + "value" : "0x86dd", + "mask" : null, + "next_state" : "parse_non_mpls" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ] + }, + { + "name" : "parse_mpls", + "id" : 12, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_mpls6" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "field", + "value" : ["_ingress_mpls6", "label"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_ttl8"] + }, + { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_7"] + }, + { + "type" : "lookahead", + "value" : [0, 4] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x04", + "mask" : null, + "next_state" : "parse_ipv4" + }, + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_ipv6" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "reject_packet" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_7"] + } + ] + }, + { + "name" : "reject_packet", + "id" : 13, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "bool", + "value" : false + }, + { + "type" : "hexstr", + "value" : "0x8" + } + ], + "op" : "verify" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_non_mpls", + "id" : 14, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_ttl8"] + }, + { + "type" : "hexstr", + "value" : "0x41" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x0800", + "mask" : null, + "next_state" : "parse_ipv4" + }, + { + "type" : "hexstr", + "value" : "0x86dd", + "mask" : null, + "next_state" : "parse_ipv6" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ] + }, + { + "name" : "parse_ipv4", + "id" : 15, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_ipv47" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_tcp" + }, + { + "type" : "hexstr", + "value" : "0x11", + "mask" : null, + "next_state" : "parse_udp" + }, + { + "type" : "hexstr", + "value" : "0x01", + "mask" : null, + "next_state" : "parse_icmp" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + } + ] + }, + { + "name" : "parse_ipv6", + "id" : 16, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_ipv68" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x86dd" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_tcp" + }, + { + "type" : "hexstr", + "value" : "0x11", + "mask" : null, + "next_state" : "parse_udp" + }, + { + "type" : "hexstr", + "value" : "0x3a", + "mask" : null, + "next_state" : "parse_icmp" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_ipv68", "next_hdr"] + } + ] + }, + { + "name" : "parse_icmp", + "id" : 17, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_icmp11" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_tcp", + "id" : 18, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_tcp9" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_udp", + "id" : 19, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_udp10" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + { + "type" : "lookahead", + "value" : [0, 64] + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "parameters" : [ + { + "type" : "header", + "value" : "gtpu_0" + } + ], + "op" : "add_header" + } + ], + "op" : "primitive" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "version"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3d" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "pt"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3c" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "spare"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3b" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "ex_flag"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3a" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "seq_flag"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x39" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "npdu_flag"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x38" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "msgtype"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x30" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "msglen"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x20" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["gtpu_0", "teid"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3d" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_13"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["scalars", "tmp_11"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x30" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffffffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x086801ff", + "mask" : null, + "next_state" : "parse_gtpu" + }, + { + "type" : "hexstr", + "value" : "0x12b50000", + "mask" : "0xffff0000", + "next_state" : "parse_vxlan" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_12"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_13"] + } + ] + }, + { + "name" : "parse_gtpu", + "id" : 20, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_gtpu12" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x000000", + "mask" : null, + "next_state" : "set_gtpu_only" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_gtpu_options" + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "ex_flag"] + }, + { + "type" : "field", + "value" : ["_ingress_gtpu12", "seq_flag"] + }, + { + "type" : "field", + "value" : ["_ingress_gtpu12", "npdu_flag"] + } + ] + }, + { + "name" : "set_gtpu_only", + "id" : 21, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : "parse_inner_ipv4" + } + ], + "transition_key" : [] + }, + { + "name" : "parse_gtpu_options", + "id" : 22, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_gtpu_options13" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "gtpu_ext_len_0"] + }, + { + "type" : "lookahead", + "value" : [0, 8] + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x8501", + "mask" : null, + "next_state" : "parse_gtpu_ext_psc" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "next_ext"] + }, + { + "type" : "field", + "value" : ["scalars", "gtpu_ext_len_0"] + } + ] + }, + { + "name" : "parse_gtpu_ext_psc", + "id" : 23, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "op" : "set" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x00", + "mask" : null, + "next_state" : "parse_inner_ipv4" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "next_ext"] + } + ] + }, + { + "name" : "parse_vxlan", + "id" : 24, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_vxlan15" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x03" + } + ], + "op" : "set" + }, + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_ethernet16" + } + ], + "op" : "extract" + }, + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_eth_type17" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x0800", + "mask" : null, + "next_state" : "parse_inner_ipv4" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_inner_eth_type17", "value"] + } + ] + }, + { + "name" : "parse_inner_ipv4", + "id" : 25, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_ipv418" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "hexstr", + "value" : "0x06", + "mask" : null, + "next_state" : "parse_inner_tcp" + }, + { + "type" : "hexstr", + "value" : "0x11", + "mask" : null, + "next_state" : "parse_inner_udp" + }, + { + "type" : "hexstr", + "value" : "0x01", + "mask" : null, + "next_state" : "parse_inner_icmp" + }, + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [ + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + } + ] + }, + { + "name" : "parse_inner_tcp", + "id" : 26, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_tcp19" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_inner_udp", + "id" : 27, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_udp20" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + }, + { + "name" : "parse_inner_icmp", + "id" : 28, + "parser_ops" : [ + { + "parameters" : [ + { + "type" : "regular", + "value" : "_ingress_inner_icmp21" + } + ], + "op" : "extract" + } + ], + "transitions" : [ + { + "type" : "default", + "value" : null, + "mask" : null, + "next_state" : null + } + ], + "transition_key" : [] + } + ] + } + ], + "parse_vsets" : [], + "deparsers" : [ + { + "name" : "deparser", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/parser.p4", + "line" : 321, + "column" : 8, + "source_fragment" : "FabricDeparser" + }, + "order" : ["_ingress_fake_ethernet2", "_ingress_packet_in1", "_egress_report_ethernet24", "_egress_report_eth_type25", "_egress_report_mpls26", "_egress_report_ipv427", "_egress_report_udp28", "_egress_report_fixed_header29", "_egress_common_report_header30", "_egress_local_report_header31", "_egress_drop_report_header32", "_ingress_ethernet3", "_ingress_vlan_tag4", "_ingress_eth_type5", "_ingress_mpls6", "_ingress_ipv47", "_ingress_ipv68", "_ingress_tcp9", "_ingress_udp10", "_ingress_icmp11", "_ingress_gtpu12", "_ingress_gtpu_options13", "_ingress_gtpu_ext_psc14", "_ingress_vxlan15", "_ingress_inner_ethernet16", "_ingress_inner_eth_type17", "_ingress_inner_ipv418", "_ingress_inner_tcp19", "_ingress_inner_udp20", "_ingress_inner_icmp21"], + "primitives" : [] + } + ], + "meter_arrays" : [ + { + "name" : "FabricIngress.qos.slice_tc_meter", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 104, + "column" : 41, + "source_fragment" : "slice_tc_meter" + }, + "is_direct" : false, + "size" : 64, + "rate_count" : 2, + "type" : "bytes" + }, + { + "name" : "FabricIngress.upf.session_meter", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 22, + "column" : 34, + "source_fragment" : "session_meter" + }, + "is_direct" : false, + "size" : 20000, + "rate_count" : 2, + "type" : "bytes" + }, + { + "name" : "FabricIngress.upf.app_meter", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 23, + "column" : 34, + "source_fragment" : "app_meter" + }, + "is_direct" : false, + "size" : 20000, + "rate_count" : 2, + "type" : "bytes" + } + ], + "counter_arrays" : [ + { + "name" : "FabricIngress.stats.flow_counter", + "id" : 0, + "is_direct" : true, + "binding" : "FabricIngress.stats.flows", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 14, + "column" : 50, + "source_fragment" : "flow_counter" + } + }, + { + "name" : "FabricIngress.filtering.ingress_port_vlan_counter", + "id" : 1, + "is_direct" : true, + "binding" : "FabricIngress.filtering.ingress_port_vlan", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 17, + "column" : 50, + "source_fragment" : "ingress_port_vlan_counter" + } + }, + { + "name" : "FabricIngress.filtering.fwd_classifier_counter", + "id" : 2, + "is_direct" : true, + "binding" : "FabricIngress.filtering.fwd_classifier", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 71, + "column" : 50, + "source_fragment" : "fwd_classifier_counter" + } + }, + { + "name" : "FabricIngress.filtering.fwd_type_counter", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 78, + "column" : 46, + "source_fragment" : "fwd_type_counter" + }, + "size" : 8, + "is_direct" : false + }, + { + "name" : "FabricIngress.forwarding.bridging_counter", + "id" : 4, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.bridging", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 29, + "column" : 50, + "source_fragment" : "bridging_counter" + } + }, + { + "name" : "FabricIngress.forwarding.mpls_counter", + "id" : 5, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.mpls", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 64, + "column" : 50, + "source_fragment" : "mpls_counter" + } + }, + { + "name" : "FabricIngress.forwarding.routing_v4_counter", + "id" : 6, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.routing_v4", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 98, + "column" : 50, + "source_fragment" : "routing_v4_counter" + } + }, + { + "name" : "FabricIngress.forwarding.routing_v6_counter", + "id" : 7, + "is_direct" : true, + "binding" : "FabricIngress.forwarding.routing_v6", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 142, + "column" : 50, + "source_fragment" : "routing_v6_counter" + } + }, + { + "name" : "FabricIngress.pre_next.next_mpls_counter", + "id" : 8, + "is_direct" : true, + "binding" : "FabricIngress.pre_next.next_mpls", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 15, + "column" : 50, + "source_fragment" : "next_mpls_counter" + } + }, + { + "name" : "FabricIngress.pre_next.next_vlan_counter", + "id" : 9, + "is_direct" : true, + "binding" : "FabricIngress.pre_next.next_vlan", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 39, + "column" : 50, + "source_fragment" : "next_vlan_counter" + } + }, + { + "name" : "FabricIngress.acl.acl_counter", + "id" : 10, + "is_direct" : true, + "binding" : "FabricIngress.acl.acl", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 19, + "column" : 50, + "source_fragment" : "acl_counter" + } + }, + { + "name" : "FabricIngress.next.hashed_counter", + "id" : 11, + "is_direct" : true, + "binding" : "FabricIngress.next.hashed", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 115, + "column" : 50, + "source_fragment" : "hashed_counter" + } + }, + { + "name" : "FabricIngress.next.multicast_counter", + "id" : 12, + "is_direct" : true, + "binding" : "FabricIngress.next.multicast", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 148, + "column" : 50, + "source_fragment" : "multicast_counter" + } + }, + { + "name" : "FabricIngress.slice_tc_classifier.classifier_stats", + "id" : 13, + "is_direct" : true, + "binding" : "FabricIngress.slice_tc_classifier.classifier", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 20, + "column" : 40, + "source_fragment" : "classifier_stats" + } + }, + { + "name" : "FabricIngress.qos.queues_stats", + "id" : 14, + "is_direct" : true, + "binding" : "FabricIngress.qos.queues", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 106, + "column" : 40, + "source_fragment" : "queues_stats" + } + }, + { + "name" : "FabricIngress.upf.terminations_counter", + "id" : 15, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 20, + "column" : 49, + "source_fragment" : "terminations_counter" + }, + "size" : 4096, + "is_direct" : false + }, + { + "name" : "FabricIngress.upf.recirc_stats", + "id" : 16, + "is_direct" : true, + "binding" : "FabricIngress.upf.uplink_recirc_rules", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 356, + "column" : 40, + "source_fragment" : "recirc_stats" + } + }, + { + "name" : "FabricIngress.int_watchlist.watchlist_counter", + "id" : 17, + "is_direct" : true, + "binding" : "FabricIngress.int_watchlist.watchlist", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 15, + "column" : 50, + "source_fragment" : "watchlist_counter" + } + }, + { + "name" : "FabricIngress.int_ingress.drop_report_counter", + "id" : 18, + "is_direct" : true, + "binding" : "FabricIngress.int_ingress.drop_report", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 64, + "column" : 50, + "source_fragment" : "drop_report_counter" + } + }, + { + "name" : "FabricEgress.stats.flow_counter", + "id" : 19, + "is_direct" : true, + "binding" : "FabricEgress.stats.flows", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 47, + "column" : 50, + "source_fragment" : "flow_counter" + } + }, + { + "name" : "FabricEgress.egress_next.egress_vlan_counter", + "id" : 20, + "is_direct" : true, + "binding" : "FabricEgress.egress_next.egress_vlan", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 241, + "column" : 50, + "source_fragment" : "egress_vlan_counter" + } + }, + { + "name" : "FabricEgress.upf.terminations_counter", + "id" : 21, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 477, + "column" : 49, + "source_fragment" : "terminations_counter" + }, + "size" : 4096, + "is_direct" : false + }, + { + "name" : "FabricEgress.int_egress.report_counter", + "id" : 22, + "is_direct" : true, + "binding" : "FabricEgress.int_egress.report", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 131, + "column" : 50, + "source_fragment" : "report_counter" + } + }, + { + "name" : "FabricEgress.int_egress.int_metadata_counter", + "id" : 23, + "is_direct" : true, + "binding" : "FabricEgress.int_egress.int_metadata", + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 132, + "column" : 50, + "source_fragment" : "int_metadata_counter" + } + } + ], + "register_arrays" : [ + { + "name" : "FabricEgress.int_egress.seq_number", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 138, + "column" : 28, + "source_fragment" : "seq_number" + }, + "size" : 1024, + "bitwidth" : 32 + } + ], + "calculations" : [ + { + "name" : "calc", + "id" : 0, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_18"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_19"] + } + ] + }, + { + "name" : "calc_0", + "id" : 1, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_20"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_21"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_22"] + } + ] + }, + { + "name" : "calc_1", + "id" : 2, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_23"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_24"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_25"] + } + ] + }, + { + "name" : "calc_2", + "id" : 3, + "algo" : "crc32", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_26"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_27"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_28"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_29"] + }, + { + "type" : "field", + "value" : ["scalars", "tmp_30"] + } + ] + }, + { + "name" : "calc_3", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 55, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ] + }, + { + "name" : "calc_4", + "id" : 5, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ] + }, + { + "name" : "calc_5", + "id" : 6, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 92, + "column" : 8, + "source_fragment" : "update_checksum(hdr.egress.report_ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_egress_report_ipv427", "version"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "ihl"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "dscp"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "ecn"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "total_len"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "identification"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "flags"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "ttl"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "protocol"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "src_addr"] + }, + { + "type" : "field", + "value" : ["_egress_report_ipv427", "dst_addr"] + } + ] + }, + { + "name" : "calc_6", + "id" : 7, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 13, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ] + }, + { + "name" : "calc_7", + "id" : 8, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "algo" : "csum16", + "input" : [ + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "version"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ihl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dscp"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ecn"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "identification"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "flags"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "frag_offset"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "ttl"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "src_addr"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ] + } + ], + "learn_lists" : [], + "actions" : [ + { + "name" : "nop", + "id" : 0, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 1, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 2, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 3, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 4, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 5, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 6, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "NoAction", + "id" : 7, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.stats.count", + "id" : 8, + "runtime_data" : [ + { + "name" : "flow_id", + "bitwidth" : 10 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_stats_flow_id11"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 17, + "column" : 22, + "source_fragment" : "= flow_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.pkt_io.do_packet_out", + "id" : 9, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_packet_out0", "egress_port"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 13, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t)hdr.packet_out.egress_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "field", + "value" : ["_ingress_packet_out0", "egress_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 14, + "column" : 37, + "source_fragment" : "= hdr.packet_out.egress_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 15, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_packet_out0" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 16, + "column" : 8, + "source_fragment" : "hdr.packet_out.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._skip_egress0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 17, + "column" : 20, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_bridged4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 19, + "column" : 8, + "source_fragment" : "fabric_md.bridged.setInvalid()" + } + }, + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "FabricIngress.filtering.deny", + "id" : 10, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 22, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 23, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ig_port_type33"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 100, + "column" : 14, + "source_fragment" : "0x0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x37" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 250, + "column" : 41, + "source_fragment" : "55, ..." + } + } + ] + }, + { + "name" : "FabricIngress.filtering.permit", + "id" : 11, + "runtime_data" : [ + { + "name" : "port_type", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ig_port_type33"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 33, + "column" : 31, + "source_fragment" : "= port_type; ..." + } + } + ] + }, + { + "name" : "FabricIngress.filtering.permit_with_internal_vlan", + "id" : 12, + "runtime_data" : [ + { + "name" : "vlan_id", + "bitwidth" : 12 + }, + { + "name" : "port_type", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.vlan_id = vlan_id" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ig_port_type33"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 33, + "column" : 31, + "source_fragment" : "= port_type; ..." + } + } + ] + }, + { + "name" : "FabricIngress.filtering.set_forwarding_type", + "id" : 13, + "runtime_data" : [ + { + "name" : "fwd_type", + "bitwidth" : 3 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 74, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.fwd_type = fwd_type" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 14, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 15, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 16, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_int_drop_reason", + "id" : 17, + "runtime_data" : [ + { + "name" : "drop_reason", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason" + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_next_id_bridging", + "id" : 18, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.pop_mpls_and_next", + "id" : 19, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_mpls6" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 67, + "column" : 8, + "source_fragment" : "hdr.mpls.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 68, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 69, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_next_id_routing_v4", + "id" : 20, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.nop_routing_v4", + "id" : 21, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.forwarding.drop_routing_v4", + "id" : 22, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 111, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 113, + "column" : 17, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.set_next_id_routing_v6", + "id" : 23, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 23, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.forwarding.drop_routing_v6", + "id" : 24, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 150, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 152, + "column" : 17, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.pre_next.set_mpls_label", + "id" : 25, + "runtime_data" : [ + { + "name" : "label", + "bitwidth" : 20 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 18, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = label" + } + } + ] + }, + { + "name" : "FabricIngress.pre_next.set_vlan", + "id" : 26, + "runtime_data" : [ + { + "name" : "vlan_id", + "bitwidth" : 12 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 42, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.vlan_id = vlan_id" + } + } + ] + }, + { + "name" : "FabricIngress.acl.set_next_id_acl", + "id" : 27, + "runtime_data" : [ + { + "name" : "next_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_next_id21"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 22, + "column" : 26, + "source_fragment" : "= next_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 26, + "column" : 28, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 27, + "column" : 17, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.copy_to_cpu", + "id" : 28, + "runtime_data" : [], + "primitives" : [ + { + "op" : "clone_ingress_pkt_to_egress", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x000001ff" + }, + { + "type" : "hexstr", + "value" : "0x2" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "clone_preserving_field_list(CloneType.I2E, ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.punt_to_cpu", + "id" : 29, + "runtime_data" : [], + "primitives" : [ + { + "op" : "clone_ingress_pkt_to_egress", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x000001ff" + }, + { + "type" : "hexstr", + "value" : "0x2" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "clone_preserving_field_list(CloneType.I2E, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 40, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_punt_to_cpu23"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 41, + "column" : 30, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 42, + "column" : 17, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.drop", + "id" : 30, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 46, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 47, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x50" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 252, + "column" : 27, + "source_fragment" : "80, ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.set_output_port", + "id" : 31, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 62, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t) port_num" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 63, + "column" : 37, + "source_fragment" : "= port_num; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 64, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 65, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 66, + "column" : 17, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.acl.nop_acl", + "id" : 32, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.next.output_hashed", + "id" : 33, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 16, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t)port_num" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 17, + "column" : 37, + "source_fragment" : "= port_num; // Needed by INT. ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 18, + "column" : 34, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.next.routing_hashed", + "id" : 34, + "runtime_data" : [ + { + "name" : "port_num", + "bitwidth" : 9 + }, + { + "name" : "smac", + "bitwidth" : 48 + }, + { + "name" : "dmac", + "bitwidth" : 48 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ethernet3", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 23, + "column" : 8, + "source_fragment" : "hdr.ethernet.src_addr = smac; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ethernet3", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 28, + "column" : 8, + "source_fragment" : "hdr.ethernet.dst_addr = dmac; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 16, + "column" : 8, + "source_fragment" : "standard_md.egress_spec = (PortId_t)port_num" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_egress_port48"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 17, + "column" : 37, + "source_fragment" : "= port_num; // Needed by INT. ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 18, + "column" : 34, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.next.set_mcast_group_id", + "id" : 35, + "runtime_data" : [ + { + "name" : "group_id", + "bitwidth" : 16 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "mcast_grp"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 151, + "column" : 8, + "source_fragment" : "standard_md.mcast_grp = group_id" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_is_multicast4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 152, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.is_multicast = true" + } + } + ] + }, + { + "name" : "FabricIngress.next.reset_mcast_group_id", + "id" : 36, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "mcast_grp"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 157, + "column" : 8, + "source_fragment" : "standard_md.mcast_grp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_is_multicast4"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 158, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.is_multicast = false" + } + } + ] + }, + { + "name" : "FabricIngress.slice_tc_classifier.set_slice_id_tc", + "id" : 37, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + }, + { + "name" : "tc", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 23, + "column" : 27, + "source_fragment" : "= slice_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 24, + "column" : 21, + "source_fragment" : "= tc; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 25, + "column" : 29, + "source_fragment" : "= false; ..." + } + } + ] + }, + { + "name" : "FabricIngress.slice_tc_classifier.no_classification", + "id" : 38, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 57, + "column" : 36, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 58, + "column" : 24, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 25, + "column" : 29, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 31, + "column" : 29, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.slice_tc_classifier.trust_dscp", + "id" : 39, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x0f" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 38, + "column" : 27, + "source_fragment" : "= hdr.ipv4.dscp[4 +2 -1:2]; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 39, + "column" : 21, + "source_fragment" : "= hdr.ipv4.dscp[2 -1:0]; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 40, + "column" : 29, + "source_fragment" : "= false; ..." + } + } + ] + }, + { + "name" : "FabricIngress.qos.use_upf", + "id" : 40, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "<<", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_tc31"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 81, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.slice_tc = fabric_md.upf_slice_id++fabric_md.upf_tc" + } + } + ] + }, + { + "name" : "FabricIngress.qos.use_default", + "id" : 41, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "<<", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_slice_id26"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc27"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 86, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.slice_tc = fabric_md.slice_id++fabric_md.tc" + } + } + ] + }, + { + "name" : "FabricIngress.qos.set_queue", + "id" : 42, + "runtime_data" : [ + { + "name" : "qid", + "bitwidth" : 5 + } + ], + "primitives" : [] + }, + { + "name" : "FabricIngress.qos.meter_drop", + "id" : 43, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 115, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0xa0" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 269, + "column" : 36, + "source_fragment" : "160, ..." + } + } + ] + }, + { + "name" : "FabricIngress.qos.set_default_tc", + "id" : 44, + "runtime_data" : [ + { + "name" : "tc", + "bitwidth" : 2 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "<<", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x0f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.slice_tc = fabric_md.bridged.base.slice_tc[4 +2 -1:2]++tc" + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_access", + "id" : 45, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = false" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_is_upf_hit29"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 86, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 87, + "column" : 31, + "source_fragment" : "= slice_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_core", + "id" : 46, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = false" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_is_upf_hit29"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 86, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 87, + "column" : 31, + "source_fragment" : "= slice_id; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_dbuf", + "id" : 47, + "runtime_data" : [ + { + "name" : "slice_id", + "bitwidth" : 4 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = false" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_is_upf_hit29"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 86, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_slice_id30"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 87, + "column" : 31, + "source_fragment" : "= slice_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 62, + "column" : 35, + "source_fragment" : "= hdr.inner_ipv4.dst_addr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + }, + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 64, + "column" : 17, + "source_fragment" : "= hdr.inner_ipv4; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 65, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + }, + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 66, + "column" : 16, + "source_fragment" : "= hdr.inner_udp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 67, + "column" : 8, + "source_fragment" : "hdr.inner_udp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + }, + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 68, + "column" : 16, + "source_fragment" : "= hdr.inner_tcp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 69, + "column" : 8, + "source_fragment" : "hdr.inner_tcp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + }, + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 70, + "column" : 17, + "source_fragment" : "= hdr.inner_icmp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.inner_icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 72, + "column" : 8, + "source_fragment" : "hdr.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 74, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 80, + "column" : 11, + "source_fragment" : "0x0, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.iface_miss", + "id" : 48, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 104, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_uplink_session_miss", + "id" : 49, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x86" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 261, + "column" : 38, + "source_fragment" : "134, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_uplink_session_drop", + "id" : 50, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 136, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x87" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 262, + "column" : 38, + "source_fragment" : "135, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_miss", + "id" : 51, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x84" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 259, + "column" : 38, + "source_fragment" : "132, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_drop", + "id" : 52, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 151, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x85" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 260, + "column" : 38, + "source_fragment" : "133, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session", + "id" : 53, + "runtime_data" : [ + { + "name" : "tun_peer_id", + "bitwidth" : 8 + }, + { + "name" : "session_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 159, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 161, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.routing_ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 162, + "column" : 8, + "source_fragment" : "session_meter_idx_internal = session_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_tun_peer_id13"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 163, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.tun_peer_id = tun_peer_id" + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_buf", + "id" : 54, + "runtime_data" : [ + { + "name" : "tun_peer_id", + "bitwidth" : 8 + }, + { + "name" : "session_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 167, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 169, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.routing_ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 170, + "column" : 8, + "source_fragment" : "session_meter_idx_internal = session_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_tun_peer_id13"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 171, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.tun_peer_id = tun_peer_id" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_egress_upf_ctr18"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 175, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_egress_upf_ctr = true" + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_downlink_session_buf_drop", + "id" : 55, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 179, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 182, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.routing_ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x88" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 263, + "column" : 43, + "source_fragment" : "136, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_uplink_session", + "id" : 56, + "runtime_data" : [ + { + "name" : "session_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 190, + "column" : 8, + "source_fragment" : "sess_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 192, + "column" : 8, + "source_fragment" : "ue_session_id = fabric_md.lkp.ipv4_src; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 193, + "column" : 8, + "source_fragment" : "session_meter_idx_internal = session_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ip_eth_type10"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 62, + "column" : 35, + "source_fragment" : "= hdr.inner_ipv4.dst_addr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + }, + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 64, + "column" : 17, + "source_fragment" : "= hdr.inner_ipv4; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 65, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + }, + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 66, + "column" : 16, + "source_fragment" : "= hdr.inner_udp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 67, + "column" : 8, + "source_fragment" : "hdr.inner_udp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + }, + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 68, + "column" : 16, + "source_fragment" : "= hdr.inner_tcp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 69, + "column" : 8, + "source_fragment" : "hdr.inner_tcp.setInvalid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + }, + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 70, + "column" : 17, + "source_fragment" : "= hdr.inner_icmp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.inner_icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 72, + "column" : 8, + "source_fragment" : "hdr.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 74, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 80, + "column" : 11, + "source_fragment" : "0x0, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.uplink_drop_miss", + "id" : 57, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x8b" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 266, + "column" : 42, + "source_fragment" : "139, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.downlink_drop_miss", + "id" : 58, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x89" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 264, + "column" : 42, + "source_fragment" : "137, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.uplink_drop", + "id" : 59, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x8c" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 267, + "column" : 42, + "source_fragment" : "140, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.downlink_drop", + "id" : 60, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 39, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 40, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 41, + "column" : 28, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x8a" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 265, + "column" : 42, + "source_fragment" : "138, ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.app_fwd", + "id" : 61, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + }, + { + "name" : "tc", + "bitwidth" : 2 + }, + { + "name" : "app_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_tc31"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 265, + "column" : 25, + "source_fragment" : "= tc; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 266, + "column" : 8, + "source_fragment" : "app_meter_idx_internal = app_meter_idx" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 267, + "column" : 29, + "source_fragment" : "= false; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.downlink_fwd_encap", + "id" : 62, + "runtime_data" : [ + { + "name" : "ctr_id", + "bitwidth" : 12 + }, + { + "name" : "tc", + "bitwidth" : 2 + }, + { + "name" : "teid", + "bitwidth" : 32 + }, + { + "name" : "qfi", + "bitwidth" : 6 + }, + { + "name" : "app_meter_idx", + "bitwidth" : 15 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 46, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.upf_ctr_id = ctr_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 47, + "column" : 8, + "source_fragment" : "term_hit = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_tc31"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 265, + "column" : 25, + "source_fragment" : "= tc; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + { + "type" : "runtime_data", + "value" : 4 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 266, + "column" : 8, + "source_fragment" : "app_meter_idx_internal = app_meter_idx; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_tc_unknown28"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 267, + "column" : 29, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_needs_gtpu_encap16"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.needs_gtpu_encap = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_teid19"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 55, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.teid = teid; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_qfi15"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 56, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.qfi = qfi; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_routing_ipv4_dst", + "id" : 63, + "runtime_data" : [ + { + "name" : "tun_dst_addr", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 314, + "column" : 35, + "source_fragment" : "= tun_dst_addr; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.set_app_id", + "id" : 64, + "runtime_data" : [ + { + "name" : "app_id", + "bitwidth" : 8 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_internal_app_id"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 334, + "column" : 8, + "source_fragment" : "internal_app_id = app_id" + } + } + ] + }, + { + "name" : "FabricIngress.upf.recirc_allow", + "id" : 65, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "hexstr", + "value" : "0x01fe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 36, + "column" : 42, + "source_fragment" : "510; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._do_upf_uplink_recirc1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 364, + "column" : 29, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_egress_port_set22"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 365, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 366, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 367, + "column" : 28, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.recirc_deny", + "id" : 66, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_drop_reason23"] + }, + { + "type" : "hexstr", + "value" : "0x96" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 268, + "column" : 41, + "source_fragment" : "150, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._do_upf_uplink_recirc1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 375, + "column" : 29, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 376, + "column" : 34, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 377, + "column" : 28, + "source_fragment" : "= true; ..." + } + } + ] + }, + { + "name" : "FabricIngress.upf.recirc_miss", + "id" : 67, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricIngress.int_watchlist.mark_to_report", + "id" : 68, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 223, + "column" : 45, + "source_fragment" : "1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 223, + "column" : 45, + "source_fragment" : "1; ..." + } + } + ] + }, + { + "name" : "FabricIngress.int_watchlist.no_report", + "id" : 69, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.int_watchlist.no_report_collector", + "id" : 70, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + } + ] + }, + { + "name" : "FabricIngress.int_ingress.report_drop", + "id" : 71, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_bmd_type0"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 169, + "column" : 23, + "source_fragment" : "4, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 221, + "column" : 45, + "source_fragment" : "4; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 79, + "column" : 17, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + { + "type" : "hexstr", + "value" : "0x01fe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 36, + "column" : 42, + "source_fragment" : "510; ..." + } + } + ] + }, + { + "name" : "fabric_v1model64", + "id" : 72, + "runtime_data" : [], + "primitives" : [ + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 64, + "column" : 12, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "fabric_v1model61", + "id" : 73, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "mark_to_drop(standard_md)" + } + } + ] + }, + { + "name" : "fabric_v1model70", + "id" : 74, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_ig_port3"] + }, + { + "type" : "hexstr", + "value" : "0x01fe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 36, + "column" : 42, + "source_fragment" : "510; ..." + } + } + ] + }, + { + "name" : "lookup_md_init21", + "id" : 75, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_vlan_id9"] + }, + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "vlan_id"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 21, + "column" : 27, + "source_fragment" : "= hdr.vlan_tag.vlan_id; ..." + } + } + ] + }, + { + "name" : "lookup_md_init15", + "id" : 76, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_eth_dst6"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 15, + "column" : 23, + "source_fragment" : "= hdr.ethernet.dst_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_eth_src7"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 16, + "column" : 23, + "source_fragment" : "= hdr.ethernet.src_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_eth_type8"] + }, + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 17, + "column" : 24, + "source_fragment" : "= hdr.eth_type.value; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_vlan_id9"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 19, + "column" : 23, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "lookup_md_init38", + "id" : 77, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_tcp19", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 38, + "column" : 32, + "source_fragment" : "= hdr.inner_tcp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_tcp19", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 39, + "column" : 32, + "source_fragment" : "= hdr.inner_tcp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init41", + "id" : 78, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_udp20", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 41, + "column" : 32, + "source_fragment" : "= hdr.inner_udp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_udp20", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 42, + "column" : 32, + "source_fragment" : "= hdr.inner_udp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init44", + "id" : 79, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_icmp21", "icmp_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 44, + "column" : 33, + "source_fragment" : "= hdr.inner_icmp.icmp_type; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_icmp21", "icmp_code"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 45, + "column" : 33, + "source_fragment" : "= hdr.inner_icmp.icmp_code; ..." + } + } + ] + }, + { + "name" : "lookup_md_init33", + "id" : 80, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 33, + "column" : 27, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 34, + "column" : 28, + "source_fragment" : "= hdr.inner_ipv4.src_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 35, + "column" : 28, + "source_fragment" : "= hdr.inner_ipv4.dst_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "protocol"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 36, + "column" : 28, + "source_fragment" : "= hdr.inner_ipv4.protocol; ..." + } + } + ] + }, + { + "name" : "lookup_md_init53", + "id" : 81, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_tcp9", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 53, + "column" : 32, + "source_fragment" : "= hdr.tcp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_tcp9", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 54, + "column" : 32, + "source_fragment" : "= hdr.tcp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init56", + "id" : 82, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "field", + "value" : ["_ingress_udp10", "sport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 56, + "column" : 32, + "source_fragment" : "= hdr.udp.sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 57, + "column" : 32, + "source_fragment" : "= hdr.udp.dport; ..." + } + } + ] + }, + { + "name" : "lookup_md_init59", + "id" : 83, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"] + }, + { + "type" : "field", + "value" : ["_ingress_icmp11", "icmp_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 59, + "column" : 33, + "source_fragment" : "= hdr.icmp.icmp_type; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"] + }, + { + "type" : "field", + "value" : ["_ingress_icmp11", "icmp_code"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 60, + "column" : 33, + "source_fragment" : "= hdr.icmp.icmp_code; ..." + } + } + ] + }, + { + "name" : "lookup_md_init48", + "id" : 84, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 48, + "column" : 27, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 49, + "column" : 28, + "source_fragment" : "= hdr.ipv4.src_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 50, + "column" : 28, + "source_fragment" : "= hdr.ipv4.dst_addr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 51, + "column" : 28, + "source_fragment" : "= hdr.ipv4.protocol; ..." + } + } + ] + }, + { + "name" : "lookup_md_init24", + "id" : 85, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 24, + "column" : 23, + "source_fragment" : "= false; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 25, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 26, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 27, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 28, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 29, + "column" : 24, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 30, + "column" : 25, + "source_fragment" : "= 0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 31, + "column" : 25, + "source_fragment" : "= 0; ..." + } + } + ] + }, + { + "name" : "upf409", + "id" : 86, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_is_uplink"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 409, + "column" : 20, + "source_fragment" : "is_uplink = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 410, + "column" : 20, + "source_fragment" : "app_ipv4_addr = fabric_md.lkp.ipv4_dst; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 411, + "column" : 20, + "source_fragment" : "app_l4_port = fabric_md.lkp.l4_dport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 412, + "column" : 20, + "source_fragment" : "app_ip_proto = fabric_md.lkp.ip_proto; ..." + } + } + ] + }, + { + "name" : "upf418", + "id" : 87, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 418, + "column" : 20, + "source_fragment" : "app_ipv4_addr = fabric_md.lkp.ipv4_src; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 419, + "column" : 20, + "source_fragment" : "app_l4_port = fabric_md.lkp.l4_sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 420, + "column" : 20, + "source_fragment" : "app_ip_proto = fabric_md.lkp.ip_proto; ..." + } + } + ] + }, + { + "name" : "upf424", + "id" : 88, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 424, + "column" : 20, + "source_fragment" : "app_ipv4_addr = fabric_md.lkp.ipv4_src; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 425, + "column" : 20, + "source_fragment" : "app_l4_port = fabric_md.lkp.l4_sport; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 426, + "column" : 20, + "source_fragment" : "app_ip_proto = fabric_md.lkp.ip_proto; ..." + } + } + ] + }, + { + "name" : "upf443", + "id" : 89, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_skip_egress_upf_ctr18"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 443, + "column" : 16, + "source_fragment" : "fabric_md.bridged.upf.skip_egress_upf_ctr = true" + } + } + ] + }, + { + "name" : "upf448", + "id" : 90, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_14"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 448, + "column" : 44, + "source_fragment" : "(bit<32>) session_meter_idx_internal" + } + }, + { + "op" : "execute_meter", + "parameters" : [ + { + "type" : "meter_array", + "value" : "FabricIngress.upf.session_meter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_14"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 448, + "column" : 16, + "source_fragment" : "session_meter.execute_meter((bit<32>) session_meter_idx_internal, fabric_md.upf_meter_color)" + } + } + ] + }, + { + "name" : "upf445", + "id" : 91, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_15"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 445, + "column" : 36, + "source_fragment" : "(bit<32>) app_meter_idx_internal" + } + }, + { + "op" : "execute_meter", + "parameters" : [ + { + "type" : "meter_array", + "value" : "FabricIngress.upf.app_meter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_15"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 445, + "column" : 12, + "source_fragment" : "app_meter.execute_meter((bit<32>) app_meter_idx_internal, fabric_md.upf_meter_color)" + } + } + ] + }, + { + "name" : "upf461", + "id" : 92, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_16"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_upf_ctr_id14"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 461, + "column" : 43, + "source_fragment" : "(bit<32>)fabric_md.bridged.upf.upf_ctr_id" + } + }, + { + "op" : "count", + "parameters" : [ + { + "type" : "counter_array", + "value" : "FabricIngress.upf.terminations_counter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_16"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 461, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + } + } + ] + }, + { + "name" : "upf25", + "id" : 93, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_is_uplink"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 25, + "column" : 4, + "source_fragment" : "bool is_uplink = false;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 26, + "column" : 4, + "source_fragment" : "bool term_hit = false;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : false + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 27, + "column" : 4, + "source_fragment" : "bool sess_hit = false;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ipv4_addr"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 28, + "column" : 4, + "source_fragment" : "bit<32> app_ipv4_addr = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_l4_port"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 29, + "column" : 4, + "source_fragment" : "l4_port_t app_l4_port = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_ip_proto"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 30, + "column" : 4, + "source_fragment" : "bit<8> app_ip_proto = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_internal_app_id"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 55, + "column" : 30, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_ue_session_id"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 32, + "column" : 4, + "source_fragment" : "ue_session_id_t ue_session_id = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_session_meter_idx_internal"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 72, + "column" : 54, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "upf_app_meter_idx_internal"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 73, + "column" : 46, + "source_fragment" : "0; ..." + } + } + ] + }, + { + "name" : "filtering100", + "id" : 94, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 100, + "column" : 31, + "source_fragment" : "(bit<32>)fabric_md.bridged.base.fwd_type" + } + }, + { + "op" : "count", + "parameters" : [ + { + "type" : "counter_array", + "value" : "FabricIngress.filtering.fwd_type_counter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_17"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 100, + "column" : 8, + "source_fragment" : "fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type)" + } + } + ] + }, + { + "name" : "hasher28", + "id" : 95, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_18"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_tun_peer_id13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 32, + "column" : 17, + "source_fragment" : "fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_19"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_teid19"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 32, + "column" : 52, + "source_fragment" : "fabric_md.bridged" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 28, + "column" : 12, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "hasher39", + "id" : 96, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_20"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 43, + "column" : 17, + "source_fragment" : "hdr.ipv4.src_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_21"] + }, + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 43, + "column" : 36, + "source_fragment" : "hdr.ipv4.dst_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_22"] + }, + { + "type" : "field", + "value" : ["_ingress_gtpu12", "teid"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 43, + "column" : 55, + "source_fragment" : "hdr.gtpu.teid" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc_0" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 39, + "column" : 12, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "hasher50", + "id" : 97, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 50, + "column" : 32, + "source_fragment" : "= fabric_md.bridged.base.inner_hash; ..." + } + } + ] + }, + { + "name" : "hasher66", + "id" : 98, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_inner_hash1"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 66, + "column" : 12, + "source_fragment" : "fabric_md.bridged.base.inner_hash = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_23"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "dst_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 71, + "column" : 17, + "source_fragment" : "hdr.ethernet.dst_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_24"] + }, + { + "type" : "field", + "value" : ["_ingress_ethernet3", "src_addr"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 71, + "column" : 40, + "source_fragment" : "hdr.ethernet.src_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_25"] + }, + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 71, + "column" : 63, + "source_fragment" : "hdr.eth_type.value" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc_1" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 67, + "column" : 12, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "hasher17", + "id" : 99, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_26"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_27"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_28"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_29"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_30"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + } + }, + { + "op" : "modify_field_with_hash_based_offset", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_inner_hash1"] + }, + { + "type" : "hexstr", + "value" : "0x00000000" + }, + { + "type" : "calculation", + "value" : "calc_2" + }, + { + "type" : "hexstr", + "value" : "0xffffffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "hash( ..." + } + } + ] + }, + { + "name" : "slicing174", + "id" : 100, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_31"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_slice_tc12"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 174, + "column" : 41, + "source_fragment" : "(bit<32>) fabric_md.bridged.base.slice_tc" + } + }, + { + "op" : "execute_meter", + "parameters" : [ + { + "type" : "meter_array", + "value" : "FabricIngress.qos.slice_tc_meter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_31"] + }, + { + "type" : "field", + "value" : ["scalars", "qos_packet_color"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "slice_tc_meter.execute_meter((bit<32>) fabric_md.bridged.base.slice_tc, packet_color)" + } + } + ] + }, + { + "name" : "slicing177", + "id" : 101, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "qos_packet_color"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4", + "line" : 25, + "column" : 10, + "source_fragment" : "2 ..." + } + } + ] + }, + { + "name" : "int112", + "id" : 102, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_egress_port25"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 112, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.egress_port = standard_md.egress_spec" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_bridged4", "_int_bmd_queue_id24"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 113, + "column" : 8, + "source_fragment" : "fabric_md.bridged.int_bmd.queue_id = 0" + } + } + ] + }, + { + "name" : "fabric_v1model110", + "id" : 103, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 110, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + } + } + ] + }, + { + "name" : "fabric_v1model106", + "id" : 104, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_bridged36" + }, + { + "type" : "header", + "value" : "_ingress_bridged4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 106, + "column" : 8, + "source_fragment" : "fabric_md.egress.bridged = fabric_md" + } + } + ] + }, + { + "name" : "nop", + "id" : 105, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 106, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 107, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 108, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 109, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 110, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "nop", + "id" : 111, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.stats.count", + "id" : 112, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.pkt_io_egress.set_switch_info", + "id" : 113, + "runtime_data" : [ + { + "name" : "cpu_port", + "bitwidth" : 9 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_cpu_port37"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "local", + "value" : 0 + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 36, + "column" : 27, + "source_fragment" : "= (PortId_t)cpu_port; ..." + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.pop_mpls_if_present", + "id" : 114, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_mpls6" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.mpls.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ip_eth_type10"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 200, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.bridged" + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.set_mpls", + "id" : 115, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_mpls6" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.mpls.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "label"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 206, + "column" : 8, + "source_fragment" : "hdr.mpls.label = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "tc"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.mpls.tc = 3w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "bos"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 208, + "column" : 8, + "source_fragment" : "hdr.mpls.bos = 1w1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_ttl8"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 209, + "column" : 8, + "source_fragment" : "hdr.mpls.ttl = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_eth_type5", "value"] + }, + { + "type" : "hexstr", + "value" : "0x8847" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 112, + "column" : 31, + "source_fragment" : "0x8847; ..." + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.push_vlan", + "id" : 116, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 217, + "column" : 8, + "source_fragment" : "hdr.vlan_tag.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "eth_type"] + }, + { + "type" : "hexstr", + "value" : "0x8100" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 111, + "column" : 31, + "source_fragment" : "0x8100; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "vlan_id"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_vlan_id6"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 221, + "column" : 8, + "source_fragment" : "hdr.vlan_tag.vlan_id = fabric_md.bridged" + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.pop_vlan", + "id" : 117, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 249, + "column" : 8, + "source_fragment" : "hdr.vlan_tag.setInvalid()" + } + } + ] + }, + { + "name" : "FabricEgress.egress_next.drop", + "id" : 118, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 254, + "column" : 17, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x82" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 257, + "column" : 35, + "source_fragment" : "130, ..." + } + } + ] + }, + { + "name" : "FabricEgress.dscp_rewriter.rewrite", + "id" : 119, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.dscp_rewriter.clear", + "id" : 120, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "dscp_rewriter_tmp_dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "tmp_dscp = 0" + } + } + ] + }, + { + "name" : "FabricEgress.upf.load_tunnel_params", + "id" : 121, + "runtime_data" : [ + { + "name" : "tunnel_src_port", + "bitwidth" : 16 + }, + { + "name" : "tunnel_src_addr", + "bitwidth" : 32 + }, + { + "name" : "tunnel_dst_addr", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 486, + "column" : 8, + "source_fragment" : "hdr.ipv4.src_addr = tunnel_src_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 487, + "column" : 8, + "source_fragment" : "hdr.ipv4.dst_addr = tunnel_dst_addr" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "sport"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 488, + "column" : 8, + "source_fragment" : "hdr.udp.sport = tunnel_src_port" + } + } + ] + }, + { + "name" : "FabricEgress.upf.gtpu_only", + "id" : 122, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 551, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + }, + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 552, + "column" : 23, + "source_fragment" : "= hdr.ipv4; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 553, + "column" : 8, + "source_fragment" : "hdr.udp.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 554, + "column" : 8, + "source_fragment" : "hdr.gtpu.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 506, + "column" : 8, + "source_fragment" : "hdr.ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 507, + "column" : 8, + "source_fragment" : "hdr.ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 508, + "column" : 8, + "source_fragment" : "hdr.ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 509, + "column" : 8, + "source_fragment" : "hdr.ipv4.ecn = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x1513" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 511, + "column" : 8, + "source_fragment" : "hdr.ipv4.identification = 0x1513" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 512, + "column" : 8, + "source_fragment" : "hdr.ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 513, + "column" : 8, + "source_fragment" : "hdr.ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + }, + { + "type" : "hexstr", + "value" : "0x0868" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 86, + "column" : 30, + "source_fragment" : "2152; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "version"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 87, + "column" : 22, + "source_fragment" : "3w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "pt"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 89, + "column" : 37, + "source_fragment" : "1w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "spare"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 527, + "column" : 8, + "source_fragment" : "hdr.gtpu.spare = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "seq_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 529, + "column" : 8, + "source_fragment" : "hdr.gtpu.seq_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "npdu_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 530, + "column" : 8, + "source_fragment" : "hdr.gtpu.npdu_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msgtype"] + }, + { + "type" : "hexstr", + "value" : "0xff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 88, + "column" : 25, + "source_fragment" : "0xff; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "teid"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_teid19"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 533, + "column" : 8, + "source_fragment" : "hdr.gtpu.teid = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "seq_num"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 535, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.seq_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "n_pdu_num"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 536, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.n_pdu_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x85" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 91, + "column" : 33, + "source_fragment" : "0x85; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "len"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 94, + "column" : 32, + "source_fragment" : "8w1; // 1*4-octets ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 92, + "column" : 36, + "source_fragment" : "4w0; // Downlink ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "spare0"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 541, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.spare0 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "ppp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 542, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.ppp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "rqi"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 543, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.rqi = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 90, + "column" : 34, + "source_fragment" : "0x0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0024" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 563, + "column" : 8, + "source_fragment" : "hdr.ipv4.total_len = 20 + 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0010" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 565, + "column" : 8, + "source_fragment" : "hdr.udp.len = 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msglen"] + }, + { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 567, + "column" : 8, + "source_fragment" : "hdr.gtpu.msglen = hdr.inner_ipv4.total_len" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 81, + "column" : 16, + "source_fragment" : "0x1, ..." + } + } + ] + }, + { + "name" : "FabricEgress.upf.gtpu_with_psc", + "id" : 123, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 577, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 578, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 551, + "column" : 8, + "source_fragment" : "hdr.inner_ipv4.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ipv418" + }, + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 552, + "column" : 23, + "source_fragment" : "= hdr.ipv4; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 553, + "column" : 8, + "source_fragment" : "hdr.udp.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 554, + "column" : 8, + "source_fragment" : "hdr.gtpu.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 506, + "column" : 8, + "source_fragment" : "hdr.ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 507, + "column" : 8, + "source_fragment" : "hdr.ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 508, + "column" : 8, + "source_fragment" : "hdr.ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 509, + "column" : 8, + "source_fragment" : "hdr.ipv4.ecn = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x1513" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 511, + "column" : 8, + "source_fragment" : "hdr.ipv4.identification = 0x1513" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 512, + "column" : 8, + "source_fragment" : "hdr.ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 513, + "column" : 8, + "source_fragment" : "hdr.ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "dport"] + }, + { + "type" : "hexstr", + "value" : "0x0868" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 86, + "column" : 30, + "source_fragment" : "2152; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "version"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 87, + "column" : 22, + "source_fragment" : "3w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "pt"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 89, + "column" : 37, + "source_fragment" : "1w1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "spare"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 527, + "column" : 8, + "source_fragment" : "hdr.gtpu.spare = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "seq_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 529, + "column" : 8, + "source_fragment" : "hdr.gtpu.seq_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "npdu_flag"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 530, + "column" : 8, + "source_fragment" : "hdr.gtpu.npdu_flag = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msgtype"] + }, + { + "type" : "hexstr", + "value" : "0xff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 88, + "column" : 25, + "source_fragment" : "0xff; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "teid"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_teid19"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 533, + "column" : 8, + "source_fragment" : "hdr.gtpu.teid = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "seq_num"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 535, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.seq_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "n_pdu_num"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 536, + "column" : 8, + "source_fragment" : "hdr.gtpu_options.n_pdu_num = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_options13", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x85" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 91, + "column" : 33, + "source_fragment" : "0x85; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "len"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 94, + "column" : 32, + "source_fragment" : "8w1; // 1*4-octets ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 92, + "column" : 36, + "source_fragment" : "4w0; // Downlink ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "spare0"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 541, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.spare0 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "ppp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 542, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.ppp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "rqi"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 543, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.rqi = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "next_ext"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 90, + "column" : 34, + "source_fragment" : "0x0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x002c" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 580, + "column" : 8, + "source_fragment" : "hdr.ipv4.total_len = 20 + 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0018" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 583, + "column" : 8, + "source_fragment" : "hdr.udp.len = 8 + 8 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "msglen"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "hexstr", + "value" : "0x0008" + }, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "total_len"] + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 586, + "column" : 8, + "source_fragment" : "hdr.gtpu.msglen = 4 + 4 ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu12", "ex_flag"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 588, + "column" : 8, + "source_fragment" : "hdr.gtpu.ex_flag = 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_gtpu_ext_psc14", "qfi"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_qfi15"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 589, + "column" : 8, + "source_fragment" : "hdr.gtpu_ext_psc.qfi = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 82, + "column" : 20, + "source_fragment" : "0x2, ..." + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_ingress_drop", + "id" : 124, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_int_report_md39" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 79, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ip_eth_type"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "report_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 221, + "column" : 45, + "source_fragment" : "4; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "mirror_type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 169, + "column" : 23, + "source_fragment" : "4, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_encap_presence7"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 93, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.encap_presence = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "flow_hash"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 94, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.flow_hash = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 97, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 99, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_port3"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 101, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 102, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 103, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = 0" + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_ingress_drop", + "id" : 125, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_int_report_md39" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 79, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ip_eth_type"] + }, + { + "type" : "hexstr", + "value" : "0x0800" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 114, + "column" : 31, + "source_fragment" : "0x0800; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "report_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 221, + "column" : 45, + "source_fragment" : "4; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "mirror_type"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 85, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 169, + "column" : 23, + "source_fragment" : "4, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "encap_presence"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_encap_presence7"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 93, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.encap_presence = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_int_report_md39", "flow_hash"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 94, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.flow_hash = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 97, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 99, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_port3"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 101, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.bridged" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 102, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 103, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = 0" + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_report_mirror", + "id" : 126, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 110, + "column" : 8, + "source_fragment" : "fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 112, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 114, + "column" : 12, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 118, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 121, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 122, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_id"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 123, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 126, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "queue_occupancy"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_occupancy"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 127, + "column" : 8, + "source_fragment" : "hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "eg_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 128, + "column" : 8, + "source_fragment" : "hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp" + } + } + ] + }, + { + "name" : "FabricEgress.parser_emulator.parse_int_report_mirror", + "id" : 127, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 20, + "column" : 8, + "source_fragment" : "hdr.report_ethernet.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 25, + "column" : 8, + "source_fragment" : "hdr.report_eth_type.setValid()" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 37, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "version"] + }, + { + "type" : "hexstr", + "value" : "0x04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 38, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.version = 4w4" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ihl"] + }, + { + "type" : "hexstr", + "value" : "0x05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 39, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ihl = 4w5" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "dscp"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 40, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dscp = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ecn"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 41, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.ecn = 2w0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "flags"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 44, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.flags = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "frag_offset"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 45, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.frag_offset = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 150, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_ipv4", "protocol"] + }, + { + "type" : "hexstr", + "value" : "0x11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 134, + "column" : 25, + "source_fragment" : "17; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 53, + "column" : 8, + "source_fragment" : "hdr.report_udp.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_udp", "sport"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 54, + "column" : 8, + "source_fragment" : "hdr.report_udp.sport = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 60, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ver"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ver = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "rsvd"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 66, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.rsvd = 0" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 71, + "column" : 8, + "source_fragment" : "hdr.common_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "bmd_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 110, + "column" : 8, + "source_fragment" : "fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_vlan_id6"] + }, + { + "type" : "hexstr", + "value" : "0x0ffe" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 147, + "column" : 34, + "source_fragment" : "12w4094; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + }, + { + "type" : "hexstr", + "value" : "0x000000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 112, + "column" : 8, + "source_fragment" : "fabric_md.bridged.base.mpls_label = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_upf17"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 114, + "column" : 12, + "source_fragment" : "fabric_md.bridged.upf.skip_upf = true" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_report_fixed_header", "ig_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 118, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "ig_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "ig_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 121, + "column" : 8, + "source_fragment" : "hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "eg_port"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 122, + "column" : 8, + "source_fragment" : "hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_common_report_header", "queue_id"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_id"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 123, + "column" : 8, + "source_fragment" : "hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id" + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 126, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "queue_occupancy"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "queue_occupancy"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 127, + "column" : 8, + "source_fragment" : "hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["parser_emulator_hdr_local_report_header", "eg_tstamp"] + }, + { + "type" : "field", + "value" : ["_egress_int_report_md39", "eg_tstamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 128, + "column" : 8, + "source_fragment" : "hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.check_quota", + "id" : 128, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.int_egress.reset_quota", + "id" : 129, + "runtime_data" : [], + "primitives" : [] + }, + { + "name" : "FabricEgress.int_egress.set_config", + "id" : 130, + "runtime_data" : [ + { + "name" : "hop_latency_mask", + "bitwidth" : 32 + }, + { + "name" : "timestamp_mask", + "bitwidth" : 48 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + "right" : { + "type" : "local", + "value" : 0 + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 179, + "column" : 8, + "source_fragment" : "fabric_md.int_md.hop_latency = fabric_md.int_md.hop_latency & hop_latency_mask" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + "right" : { + "type" : "local", + "value" : 1 + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 180, + "column" : 8, + "source_fragment" : "fabric_md.int_md.timestamp = fabric_md.int_md.timestamp & timestamp_mask" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_local_report_encap", + "id" : 131, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_32"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_32"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_33"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_33"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 218, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_local_report_encap_mpls", + "id" : 132, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "mon_label", + "bitwidth" : 20 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_34"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_34"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_35"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_35"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 4 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 203, + "column" : 52, + "source_fragment" : "2; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 218, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 126, + "column" : 39, + "source_fragment" : "0xBF05; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 226, + "column" : 8, + "source_fragment" : "hdr.report_mpls.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "tc"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 227, + "column" : 8, + "source_fragment" : "hdr.report_mpls.tc = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "bos"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 228, + "column" : 8, + "source_fragment" : "hdr.report_mpls.bos = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 149, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "label"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 230, + "column" : 8, + "source_fragment" : "hdr.report_mpls.label = mon_label" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_drop_report_encap", + "id" : 133, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_36"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_36"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_37"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_37"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 202, + "column" : 44, + "source_fragment" : "1; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 238, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 241, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 243, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason =" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.do_drop_report_encap_mpls", + "id" : 134, + "runtime_data" : [ + { + "name" : "src_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_ip", + "bitwidth" : 32 + }, + { + "name" : "mon_port", + "bitwidth" : 16 + }, + { + "name" : "mon_label", + "bitwidth" : 20 + }, + { + "name" : "switch_id", + "bitwidth" : 32 + } + ], + "primitives" : [ + { + "op" : "modify_field_rng_uniform", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "identification"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + }, + { + "type" : "hexstr", + "value" : "0xffff" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 195, + "column" : 8, + "source_fragment" : "random(hdr.report_ipv4.identification, 0, 0xffff)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "src_addr"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 197, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.src_addr = src_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_ipv4", "dst_addr"] + }, + { + "type" : "runtime_data", + "value" : 1 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 198, + "column" : 8, + "source_fragment" : "hdr.report_ipv4.dst_addr = mon_ip; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_udp", "dport"] + }, + { + "type" : "runtime_data", + "value" : 2 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 199, + "column" : 8, + "source_fragment" : "hdr.report_udp.dport = mon_port; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_38"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_read", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_38"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 143, + "column" : 8, + "source_fragment" : "seq_number.read(reg, seq_number_idx)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000001" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 144, + "column" : 8, + "source_fragment" : "reg = reg + 1" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_39"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 200, + "column" : 23, + "source_fragment" : "(bit<32>)hdr.report_fixed_header.hw_id" + } + }, + { + "op" : "register_write", + "parameters" : [ + { + "type" : "register_array", + "value" : "FabricEgress.int_egress.seq_number" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_39"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 146, + "column" : 8, + "source_fragment" : "seq_number.write(seq_number_idx, reg)" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "seq_no"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_reg"] + } + ] + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "dqf"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 201, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "switch_id"] + }, + { + "type" : "runtime_data", + "value" : 4 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 202, + "column" : 8, + "source_fragment" : "hdr.common_report_header.switch_id = switch_id; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad1"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 203, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad1 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad2"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 204, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad2 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_common_report_header", "pad3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 205, + "column" : 8, + "source_fragment" : "hdr.common_report_header.pad3 = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_eth_type", "value"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 207, + "column" : 8, + "source_fragment" : "hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 178, + "column" : 14, + "source_fragment" : "0, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf04" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 125, + "column" : 39, + "source_fragment" : "0xBF04; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "nproto"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 202, + "column" : 44, + "source_fragment" : "1; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 238, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.setValid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 241, + "column" : 8, + "source_fragment" : "hdr.local_report_header.setInvalid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_drop_report_header", "drop_reason"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_drop_reason23"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 243, + "column" : 8, + "source_fragment" : "hdr.drop_report_header.drop_reason =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_eth_type", "value"] + }, + { + "type" : "hexstr", + "value" : "0xbf05" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 126, + "column" : 39, + "source_fragment" : "0xBF05; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 251, + "column" : 8, + "source_fragment" : "hdr.report_mpls.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "tc"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 252, + "column" : 8, + "source_fragment" : "hdr.report_mpls.tc = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "bos"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 253, + "column" : 8, + "source_fragment" : "hdr.report_mpls.bos = 0" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "ttl"] + }, + { + "type" : "hexstr", + "value" : "0x40" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 149, + "column" : 32, + "source_fragment" : "64; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_mpls", "label"] + }, + { + "type" : "runtime_data", + "value" : 3 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 256, + "column" : 8, + "source_fragment" : "hdr.report_mpls.label = mon_label" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.init_int_metadata", + "id" : 135, + "runtime_data" : [ + { + "name" : "report_type", + "bitwidth" : 3 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_mirror_session_id22"] + }, + { + "type" : "hexstr", + "value" : "0x01fa" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 208, + "column" : 43, + "source_fragment" : "0x1FA; ..." + } + }, + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_fabric_md_int_report_md" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 293, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._int_mirror_type3"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 179, + "column" : 17, + "source_fragment" : "1, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "bmd_type"] + }, + { + "type" : "hexstr", + "value" : "0x02" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 167, + "column" : 20, + "source_fragment" : "2, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "mirror_type"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 179, + "column" : 17, + "source_fragment" : "1, ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ig_port"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_port3"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 299, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.ig_port =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "eg_port"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "egress_port"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 300, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.eg_port = (PortId_t)standard_md.egress_port" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "queue_id"] + }, + { + "type" : "field", + "value" : ["scalars", "int_egress_egress_qid"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 301, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.queue_id = egress_qid" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "queue_occupancy"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "deq_qdepth"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 302, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.queue_occupancy = standard_md.deq_qdepth" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ig_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 303, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "eg_tstamp"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 304, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.eg_tstamp = standard_md.egress_global_timestamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "ip_eth_type"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ip_eth_type10"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 305, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.ip_eth_type =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "flow_hash"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_inner_hash1"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 306, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.flow_hash =" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "report_type"] + }, + { + "type" : "runtime_data", + "value" : 0 + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 309, + "column" : 8, + "source_fragment" : "fabric_md.int_report_md.report_type = report_type" + } + } + ] + }, + { + "name" : "FabricEgress.int_egress.adjust_ip_udp_len", + "id" : 136, + "runtime_data" : [ + { + "name" : "adjust_ip", + "bitwidth" : 16 + }, + { + "name" : "adjust_udp", + "bitwidth" : 16 + } + ], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "total_len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_fabric_md_pkt_length"] + }, + "right" : { + "type" : "local", + "value" : 0 + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 342, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.ipv4.total_len = fabric_md.pkt_length + adjust_ip" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_udp10", "len"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["scalars", "int_egress_fabric_md_pkt_length"] + }, + "right" : { + "type" : "local", + "value" : 1 + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 343, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.udp.len = fabric_md.pkt_length + adjust_udp" + } + } + ] + }, + { + "name" : "fabric_v1model136", + "id" : 137, + "runtime_data" : [], + "primitives" : [ + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 136, + "column" : 12, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "fabric_v1model133", + "id" : 138, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_cpu_port37"] + }, + { + "type" : "hexstr", + "value" : "0x0000" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 133, + "column" : 8, + "source_fragment" : "fabric_md.egress.cpu_port = 0" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator148", + "id" : 139, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 149, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.tcp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 150, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.udp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 151, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vxlan15" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 153, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.vxlan.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ethernet16" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 154, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_ethernet.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_eth_type17" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 155, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_eth_type.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 157, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 158, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 159, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_ext_psc.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator14", + "id" : 140, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_drop_reason23"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 144, + "column" : 12, + "source_fragment" : "fabric_md.egress.bridged.int_bmd.drop_reason = fabric_md" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 145, + "column" : 12, + "source_fragment" : "fabric_md.egress.bridged.int_bmd.report_type = fabric_md" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + }, + { + "type" : "header", + "value" : "_egress_report_ethernet24" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + }, + { + "type" : "header", + "value" : "_egress_report_eth_type25" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + }, + { + "type" : "header", + "value" : "_egress_report_ipv427" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + }, + { + "type" : "header", + "value" : "_egress_report_udp28" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + }, + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + }, + { + "type" : "header", + "value" : "_egress_common_report_header30" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + }, + { + "type" : "header", + "value" : "_egress_local_report_header31" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + }, + { + "type" : "header", + "value" : "_egress_drop_report_header32" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_is_int_recirc45"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 134, + "column" : 32, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 140, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.vlan_tag.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator166", + "id" : 141, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x3" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator169", + "id" : 142, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator173", + "id" : 143, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ethernet24" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_eth_type25" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ipv427" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_udp28" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_common_report_header30" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_local_report_header31" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_drop_report_header32" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + } + ] + }, + { + "name" : "int_tna_parser_emulator148_0", + "id" : 144, + "runtime_data" : [], + "primitives" : [ + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_ipv47" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 149, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.tcp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 150, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.udp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 151, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.icmp.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vxlan15" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 153, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.vxlan.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_ethernet16" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 154, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_ethernet.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_eth_type17" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 155, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.inner_eth_type.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu12" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 157, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_options13" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 158, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_options.setInvalid()" + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_gtpu_ext_psc14" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 159, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.gtpu_ext_psc.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator14_0", + "id" : 145, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + }, + { + "type" : "header", + "value" : "_egress_report_ethernet24" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + }, + { + "type" : "header", + "value" : "_egress_report_eth_type25" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + }, + { + "type" : "header", + "value" : "_egress_report_ipv427" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + }, + { + "type" : "header", + "value" : "_egress_report_udp28" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + }, + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + }, + { + "type" : "header", + "value" : "_egress_common_report_header30" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + }, + { + "type" : "header", + "value" : "_egress_local_report_header31" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + }, + { + "type" : "header", + "value" : "_egress_drop_report_header32" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_is_int_recirc45"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "bool", + "value" : true + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 134, + "column" : 32, + "source_fragment" : "= true; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_vlan_tag4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 140, + "column" : 8, + "source_fragment" : "hdr_v1model.ingress.vlan_tag.setInvalid()" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator166_0", + "id" : 146, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator169_0", + "id" : 147, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + } + } + ] + }, + { + "name" : "int_tna_parser_emulator173_0", + "id" : 148, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ethernet24" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ethernet" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_eth_type25" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ipv427" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_udp28" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_common_report_header30" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_local_report_header31" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_drop_report_header32" + }, + { + "type" : "header", + "value" : "parser_emulator_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + } + ] + }, + { + "name" : "packetio51", + "id" : 149, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_packet_in1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 51, + "column" : 12, + "source_fragment" : "hdr.packet_in.setValid()" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_packet_in1", "ingress_port"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_ingress_port50"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 52, + "column" : 12, + "source_fragment" : "hdr.packet_in.ingress_port = preserved_ig_port; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_fake_ethernet2" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 53, + "column" : 12, + "source_fragment" : "hdr.fake_ethernet.setInvalid()" + } + }, + { + "op" : "exit", + "parameters" : [], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 54, + "column" : 12, + "source_fragment" : "exit" + } + } + ] + }, + { + "name" : "packetio60", + "id" : 150, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_pkt_length46"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "packet_length"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x0000ffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xfff2" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 60, + "column" : 37, + "source_fragment" : "= (bit<16>)standard_md.packet_length - 14; ..." + } + } + ] + }, + { + "name" : "next283", + "id" : 151, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 219, + "column" : 50, + "source_fragment" : "0; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 285, + "column" : 21, + "source_fragment" : "= 1; ..." + } + } + ] + }, + { + "name" : "next325", + "id" : 152, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 325, + "column" : 25, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x83" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 258, + "column" : 32, + "source_fragment" : "131, ..." + } + } + ] + }, + { + "name" : "next323", + "id" : 153, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 323, + "column" : 12, + "source_fragment" : "hdr.mpls.ttl = hdr.mpls.ttl - 1" + } + } + ] + }, + { + "name" : "next333", + "id" : 154, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 333, + "column" : 20, + "source_fragment" : "hdr.ipv4.ttl = hdr.ipv4.ttl - 1" + } + } + ] + }, + { + "name" : "next336", + "id" : 155, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 336, + "column" : 29, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x1a" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 247, + "column" : 30, + "source_fragment" : "26, ..." + } + } + ] + }, + { + "name" : "next343", + "id" : 156, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv68", "hop_limit"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "+", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv68", "hop_limit"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 343, + "column" : 20, + "source_fragment" : "hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1" + } + } + ] + }, + { + "name" : "next346", + "id" : 157, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + { + "type" : "hexstr", + "value" : "0x01" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 346, + "column" : 29, + "source_fragment" : "= 1; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_drop_reason49"] + }, + { + "type" : "hexstr", + "value" : "0x1a" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4", + "line" : 247, + "column" : 30, + "source_fragment" : "26, ..." + } + } + ] + }, + { + "name" : "upf610", + "id" : 158, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 610, + "column" : 20, + "source_fragment" : "hdr.inner_udp.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_udp20" + }, + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 611, + "column" : 34, + "source_fragment" : "= hdr.udp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_udp10" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 612, + "column" : 20, + "source_fragment" : "hdr.udp.setInvalid()" + } + } + ] + }, + { + "name" : "upf615", + "id" : 159, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 615, + "column" : 20, + "source_fragment" : "hdr.inner_tcp.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_tcp19" + }, + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 616, + "column" : 34, + "source_fragment" : "= hdr.tcp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_tcp9" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 617, + "column" : 20, + "source_fragment" : "hdr.tcp.setInvalid()" + } + } + ] + }, + { + "name" : "upf620", + "id" : 160, + "runtime_data" : [], + "primitives" : [ + { + "op" : "add_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 620, + "column" : 20, + "source_fragment" : "hdr.inner_icmp.setValid()" + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_inner_icmp21" + }, + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 621, + "column" : 35, + "source_fragment" : "= hdr.icmp; ..." + } + }, + { + "op" : "remove_header", + "parameters" : [ + { + "type" : "header", + "value" : "_ingress_icmp11" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 622, + "column" : 20, + "source_fragment" : "hdr.icmp.setInvalid()" + } + } + ] + }, + { + "name" : "upf628", + "id" : 161, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_40"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_upf_ctr_id14"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 628, + "column" : 43, + "source_fragment" : "(bit<32>)fabric_md.bridged.upf.upf_ctr_id" + } + }, + { + "op" : "count", + "parameters" : [ + { + "type" : "counter_array", + "value" : "FabricEgress.upf.terminations_counter" + }, + { + "type" : "field", + "value" : ["scalars", "tmp_40"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 628, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + } + } + ] + }, + { + "name" : "int128", + "id" : 162, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_eth_type" + }, + { + "type" : "header", + "value" : "_egress_report_eth_type25" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + }, + { + "type" : "header", + "value" : "_egress_report_mpls26" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_ipv4" + }, + { + "type" : "header", + "value" : "_egress_report_ipv427" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_udp" + }, + { + "type" : "header", + "value" : "_egress_report_udp28" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_report_fixed_header" + }, + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_common_report_header" + }, + { + "type" : "header", + "value" : "_egress_common_report_header30" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + }, + { + "type" : "header", + "value" : "_egress_local_report_header31" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + }, + { + "type" : "header", + "value" : "_egress_drop_report_header32" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_hdr_eth_type" + }, + { + "type" : "header", + "value" : "_egress_eth_type35" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_fabric_md_bridged" + }, + { + "type" : "header", + "value" : "_egress_bridged36" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "int_egress_fabric_md_int_report_md" + }, + { + "type" : "header", + "value" : "_egress_int_report_md39" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_hop_latency40"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_timestamp41"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "vlan_stripped"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_vlan_stripped42"] + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "queue_report"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "b2d", + "left" : null, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_queue_report43"] + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_fabric_md_pkt_length"] + }, + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_pkt_length46"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 129, + "column" : 4, + "source_fragment" : "fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "int_egress_egress_qid"] + }, + { + "type" : "hexstr", + "value" : "0x00" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 135, + "column" : 4, + "source_fragment" : "QueueId_t egress_qid = 0;" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "-", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 365, + "column" : 8, + "source_fragment" : "fabric_md.int_md.hop_latency = standard_md.egress_global_timestamp[31:0] - fabric_md.bridged.base.ig_tstamp[31:0]" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + }, + { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 366, + "column" : 8, + "source_fragment" : "fabric_md.int_md.timestamp = standard_md.egress_global_timestamp" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "key_0"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "-", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x10" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 166, + "column" : 12, + "source_fragment" : " fabric_md.int_md.hop_latency[31:16]: range @name(\\\"hop_latency_upper\\\");" + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "key_1"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "-", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_global_timestamp"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_base_ig_tstamp9"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0xffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 167, + "column" : 12, + "source_fragment" : " fabric_md.int_md.hop_latency[15:0]: range @name(\\\"hop_latency_lower\\\");" + } + } + ] + }, + { + "name" : "int383", + "id" : 163, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_41"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["int_egress_fabric_md_bridged", "_int_bmd_mirror_session_id22"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xffffffff" + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 384, + "column" : 20, + "source_fragment" : "(bit<32>)fabric_md.bridged.int_bmd.mirror_session_id" + } + }, + { + "op" : "clone_egress_pkt_to_egress", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "tmp_41"] + }, + { + "type" : "hexstr", + "value" : "0x1" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 383, + "column" : 16, + "source_fragment" : "clone_preserving_field_list(CloneType.E2E, ..." + } + } + ] + }, + { + "name" : "int373", + "id" : 164, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["int_egress_hdr_report_fixed_header", "hw_id"] + }, + { + "type" : "expression", + "value" : { + "type" : "expression", + "value" : { + "op" : "|", + "left" : { + "type" : "hexstr", + "value" : "0x00" + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "expression", + "value" : { + "op" : ">>", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_spec"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x7" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x01ff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x3f" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x07" + } + } + } + } + } + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 373, + "column" : 8, + "source_fragment" : "hdr.report_fixed_header.hw_id = 4w0 ++ standard_md.egress_spec[8:7]" + } + } + ] + }, + { + "name" : "slicing217", + "id" : 165, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["_ingress_ipv47", "dscp"] + }, + { + "type" : "field", + "value" : ["scalars", "dscp_rewriter_tmp_dscp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 217, + "column" : 16, + "source_fragment" : "hdr.ipv4.dscp = tmp_dscp" + } + } + ] + }, + { + "name" : "slicing189", + "id" : 166, + "runtime_data" : [], + "primitives" : [ + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_bridged36" + }, + { + "type" : "header", + "value" : "int_egress_fabric_md_bridged" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_int_report_md39" + }, + { + "type" : "header", + "value" : "int_egress_fabric_md_int_report_md" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_hop_latency40"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "hop_latency"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_int_md_timestamp41"] + }, + { + "type" : "field", + "value" : ["int_egress_fabric_md_int_md", "timestamp"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 391, + "column" : 30, + "source_fragment" : "= fabric_md; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_eth_type25" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_mpls26" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_mpls" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_ipv427" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_ipv4" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_udp28" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_udp" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_report_fixed_header29" + }, + { + "type" : "header", + "value" : "int_egress_hdr_report_fixed_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_common_report_header30" + }, + { + "type" : "header", + "value" : "int_egress_hdr_common_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_local_report_header31" + }, + { + "type" : "header", + "value" : "int_egress_hdr_local_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_drop_report_header32" + }, + { + "type" : "header", + "value" : "int_egress_hdr_drop_report_header" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign_header", + "parameters" : [ + { + "type" : "header", + "value" : "_egress_eth_type35" + }, + { + "type" : "header", + "value" : "int_egress_hdr_eth_type" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 392, + "column" : 27, + "source_fragment" : "= hdr; ..." + } + }, + { + "op" : "assign", + "parameters" : [ + { + "type" : "field", + "value" : ["scalars", "dscp_rewriter_tmp_dscp"] + }, + { + "type" : "field", + "value" : ["_egress_bridged36", "_base_slice_tc12"] + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 189, + "column" : 4, + "source_fragment" : "bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc;" + } + } + ] + }, + { + "name" : "fabric_v1model170", + "id" : 167, + "runtime_data" : [], + "primitives" : [ + { + "op" : "recirculate", + "parameters" : [ + { + "type" : "hexstr", + "value" : "0x5" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 170, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + } + } + ] + }, + { + "name" : "fabric_v1model174", + "id" : 168, + "runtime_data" : [], + "primitives" : [ + { + "op" : "mark_to_drop", + "parameters" : [ + { + "type" : "header", + "value" : "standard_metadata" + } + ], + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + } + } + ] + } + ], + "pipelines" : [ + { + "name" : "ingress", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 35, + "column" : 8, + "source_fragment" : "FabricIngress" + }, + "init_table" : "tbl_fabric_v1model61", + "tables" : [ + { + "name" : "tbl_fabric_v1model61", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 61, + "column" : 8, + "source_fragment" : "mark_to_drop(standard_md)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [73], + "actions" : ["fabric_v1model61"], + "base_default_next" : "node_3", + "next_tables" : { + "fabric_v1model61" : "node_3" + }, + "default_entry" : { + "action_id" : 73, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model64", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 64, + "column" : 12, + "source_fragment" : "exit" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [72], + "actions" : ["fabric_v1model64"], + "base_default_next" : "node_5", + "next_tables" : { + "fabric_v1model64" : "node_5" + }, + "default_entry" : { + "action_id" : 72, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model70", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 70, + "column" : 51, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [74], + "actions" : ["fabric_v1model70"], + "base_default_next" : "tbl_lookup_md_init15", + "next_tables" : { + "fabric_v1model70" : "tbl_lookup_md_init15" + }, + "default_entry" : { + "action_id" : 74, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init15", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 15, + "column" : 23, + "source_fragment" : "= hdr.ethernet.dst_addr; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [76], + "actions" : ["lookup_md_init15"], + "base_default_next" : "node_8", + "next_tables" : { + "lookup_md_init15" : "node_8" + }, + "default_entry" : { + "action_id" : 76, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init21", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 21, + "column" : 27, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [75], + "actions" : ["lookup_md_init21"], + "base_default_next" : "tbl_lookup_md_init24", + "next_tables" : { + "lookup_md_init21" : "tbl_lookup_md_init24" + }, + "default_entry" : { + "action_id" : 75, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init24", + "id" : 5, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 24, + "column" : 23, + "source_fragment" : "= false; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [85], + "actions" : ["lookup_md_init24"], + "base_default_next" : "node_11", + "next_tables" : { + "lookup_md_init24" : "node_11" + }, + "default_entry" : { + "action_id" : 85, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init33", + "id" : 6, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 33, + "column" : 27, + "source_fragment" : "= true; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [80], + "actions" : ["lookup_md_init33"], + "base_default_next" : "node_13", + "next_tables" : { + "lookup_md_init33" : "node_13" + }, + "default_entry" : { + "action_id" : 80, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init38", + "id" : 7, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 38, + "column" : 32, + "source_fragment" : "= hdr.inner_tcp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [77], + "actions" : ["lookup_md_init38"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init38" : "node_27" + }, + "default_entry" : { + "action_id" : 77, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init41", + "id" : 8, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 41, + "column" : 32, + "source_fragment" : "= hdr.inner_udp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [78], + "actions" : ["lookup_md_init41"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init41" : "node_27" + }, + "default_entry" : { + "action_id" : 78, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init44", + "id" : 9, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 44, + "column" : 33, + "source_fragment" : "= hdr.inner_icmp.icmp_type; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [79], + "actions" : ["lookup_md_init44"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init44" : "node_27" + }, + "default_entry" : { + "action_id" : 79, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init48", + "id" : 10, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 48, + "column" : 27, + "source_fragment" : "= true; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [84], + "actions" : ["lookup_md_init48"], + "base_default_next" : "node_21", + "next_tables" : { + "lookup_md_init48" : "node_21" + }, + "default_entry" : { + "action_id" : 84, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init53", + "id" : 11, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 53, + "column" : 32, + "source_fragment" : "= hdr.tcp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [81], + "actions" : ["lookup_md_init53"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init53" : "node_27" + }, + "default_entry" : { + "action_id" : 81, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init56", + "id" : 12, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 56, + "column" : 32, + "source_fragment" : "= hdr.udp.sport; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [82], + "actions" : ["lookup_md_init56"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init56" : "node_27" + }, + "default_entry" : { + "action_id" : 82, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_lookup_md_init59", + "id" : 13, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 59, + "column" : 33, + "source_fragment" : "= hdr.icmp.icmp_type; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [83], + "actions" : ["lookup_md_init59"], + "base_default_next" : "node_27", + "next_tables" : { + "lookup_md_init59" : "node_27" + }, + "default_entry" : { + "action_id" : 83, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_pkt_io_do_packet_out", + "id" : 14, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 25, + "column" : 12, + "source_fragment" : "do_packet_out()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [9], + "actions" : ["FabricIngress.pkt_io.do_packet_out"], + "base_default_next" : "FabricIngress.int_watchlist.watchlist", + "next_tables" : { + "FabricIngress.pkt_io.do_packet_out" : "FabricIngress.int_watchlist.watchlist" + }, + "default_entry" : { + "action_id" : 9, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.int_watchlist.watchlist", + "id" : 15, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 34, + "column" : 10, + "source_fragment" : "watchlist" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ipv4_valid", + "target" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + } + ], + "match_type" : "range", + "type" : "simple", + "max_size" : 64, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [68, 70, 69], + "actions" : ["FabricIngress.int_watchlist.mark_to_report", "FabricIngress.int_watchlist.no_report_collector", "FabricIngress.int_watchlist.no_report"], + "base_default_next" : "FabricIngress.stats.flows", + "next_tables" : { + "FabricIngress.int_watchlist.mark_to_report" : "FabricIngress.stats.flows", + "FabricIngress.int_watchlist.no_report_collector" : "FabricIngress.stats.flows", + "FabricIngress.int_watchlist.no_report" : "FabricIngress.stats.flows" + }, + "default_entry" : { + "action_id" : 69, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.stats.flows", + "id" : 16, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 21, + "column" : 10, + "source_fragment" : "flows" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [8], + "actions" : ["FabricIngress.stats.count"], + "base_default_next" : "FabricIngress.slice_tc_classifier.classifier", + "next_tables" : { + "FabricIngress.stats.count" : "FabricIngress.slice_tc_classifier.classifier" + }, + "default_entry" : { + "action_id" : 8, + "action_const" : true, + "action_data" : ["0x0"], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.slice_tc_classifier.classifier", + "id" : 17, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 44, + "column" : 10, + "source_fragment" : "classifier" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 512, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [37, 39, 38], + "actions" : ["FabricIngress.slice_tc_classifier.set_slice_id_tc", "FabricIngress.slice_tc_classifier.trust_dscp", "FabricIngress.slice_tc_classifier.no_classification"], + "base_default_next" : "FabricIngress.filtering.ingress_port_vlan", + "next_tables" : { + "FabricIngress.slice_tc_classifier.set_slice_id_tc" : "FabricIngress.filtering.ingress_port_vlan", + "FabricIngress.slice_tc_classifier.trust_dscp" : "FabricIngress.filtering.ingress_port_vlan", + "FabricIngress.slice_tc_classifier.no_classification" : "FabricIngress.filtering.ingress_port_vlan" + }, + "default_entry" : { + "action_id" : 38, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.filtering.ingress_port_vlan", + "id" : 18, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 42, + "column" : 10, + "source_fragment" : "ingress_port_vlan" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "vlan_is_valid", + "target" : ["_ingress_vlan_tag4", "$valid$"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "vlan_id", + "target" : ["_ingress_vlan_tag4", "vlan_id"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [10, 11, 12], + "actions" : ["FabricIngress.filtering.deny", "FabricIngress.filtering.permit", "FabricIngress.filtering.permit_with_internal_vlan"], + "base_default_next" : "FabricIngress.filtering.fwd_classifier", + "next_tables" : { + "FabricIngress.filtering.deny" : "FabricIngress.filtering.fwd_classifier", + "FabricIngress.filtering.permit" : "FabricIngress.filtering.fwd_classifier", + "FabricIngress.filtering.permit_with_internal_vlan" : "FabricIngress.filtering.fwd_classifier" + }, + "default_entry" : { + "action_id" : 10, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.filtering.fwd_classifier", + "id" : 19, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 80, + "column" : 10, + "source_fragment" : "fwd_classifier" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_dst", + "target" : ["_ingress_ethernet3", "dst_addr"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_type", + "target" : ["_ingress_eth_type5", "value"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "ip_eth_type", + "target" : ["_ingress_bridged4", "_base_ip_eth_type10"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [13], + "actions" : ["FabricIngress.filtering.set_forwarding_type"], + "base_default_next" : "tbl_filtering100", + "next_tables" : { + "FabricIngress.filtering.set_forwarding_type" : "tbl_filtering100" + }, + "default_entry" : { + "action_id" : 13, + "action_const" : true, + "action_data" : ["0x0"], + "action_entry_const" : true + } + }, + { + "name" : "tbl_filtering100", + "id" : 20, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4", + "line" : 100, + "column" : 8, + "source_fragment" : "fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [94], + "actions" : ["filtering100"], + "base_default_next" : "node_35", + "next_tables" : { + "filtering100" : "node_35" + }, + "default_entry" : { + "action_id" : 94, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf25", + "id" : 21, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 25, + "column" : 4, + "source_fragment" : "bool is_uplink = false; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [93], + "actions" : ["upf25"], + "base_default_next" : "node_37", + "next_tables" : { + "upf25" : "node_37" + }, + "default_entry" : { + "action_id" : 93, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.interfaces", + "id" : 22, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 107, + "column" : 10, + "source_fragment" : "interfaces" + }, + "key" : [ + { + "match_type" : "lpm", + "name" : "ipv4_dst_addr", + "target" : ["_ingress_ipv47", "dst_addr"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "gtpu_is_valid", + "target" : ["_ingress_gtpu12", "$valid$"], + "mask" : null + } + ], + "match_type" : "lpm", + "type" : "simple", + "max_size" : 64, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [45, 46, 47, 48], + "actions" : ["FabricIngress.upf.iface_access", "FabricIngress.upf.iface_core", "FabricIngress.upf.iface_dbuf", "FabricIngress.upf.iface_miss"], + "base_default_next" : "FabricIngress.upf.applications", + "next_tables" : { + "FabricIngress.upf.iface_access" : "tbl_upf409", + "FabricIngress.upf.iface_core" : "tbl_upf418", + "FabricIngress.upf.iface_dbuf" : "tbl_upf424", + "FabricIngress.upf.iface_miss" : "FabricIngress.upf.applications" + }, + "default_entry" : { + "action_id" : 48, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf409", + "id" : 23, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 409, + "column" : 30, + "source_fragment" : "= true; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [86], + "actions" : ["upf409"], + "base_default_next" : "node_40", + "next_tables" : { + "upf409" : "node_40" + }, + "default_entry" : { + "action_id" : 86, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.uplink_sessions", + "id" : 24, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 213, + "column" : 10, + "source_fragment" : "uplink_sessions" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "tunnel_ipv4_dst", + "target" : ["_ingress_ipv47", "dst_addr"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "teid", + "target" : ["_ingress_gtpu12", "teid"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [56, 50, 49], + "actions" : ["FabricIngress.upf.set_uplink_session", "FabricIngress.upf.set_uplink_session_drop", "FabricIngress.upf.set_uplink_session_miss"], + "base_default_next" : "FabricIngress.upf.applications", + "next_tables" : { + "FabricIngress.upf.set_uplink_session" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_uplink_session_drop" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_uplink_session_miss" : "FabricIngress.upf.applications" + }, + "default_entry" : { + "action_id" : 49, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf418", + "id" : 25, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 418, + "column" : 34, + "source_fragment" : "= fabric_md.lkp.ipv4_src; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [87], + "actions" : ["upf418"], + "base_default_next" : "FabricIngress.upf.downlink_sessions", + "next_tables" : { + "upf418" : "FabricIngress.upf.downlink_sessions" + }, + "default_entry" : { + "action_id" : 87, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.downlink_sessions", + "id" : 26, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 198, + "column" : 10, + "source_fragment" : "downlink_sessions" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ue_addr", + "target" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [53, 54, 55, 52, 51], + "actions" : ["FabricIngress.upf.set_downlink_session", "FabricIngress.upf.set_downlink_session_buf", "FabricIngress.upf.set_downlink_session_buf_drop", "FabricIngress.upf.set_downlink_session_drop", "FabricIngress.upf.set_downlink_session_miss"], + "base_default_next" : "FabricIngress.upf.applications", + "next_tables" : { + "FabricIngress.upf.set_downlink_session" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_buf" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_buf_drop" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_drop" : "FabricIngress.upf.applications", + "FabricIngress.upf.set_downlink_session_miss" : "FabricIngress.upf.applications" + }, + "default_entry" : { + "action_id" : 51, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf424", + "id" : 27, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 424, + "column" : 34, + "source_fragment" : "= fabric_md.lkp.ipv4_src; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [88], + "actions" : ["upf424"], + "base_default_next" : "FabricIngress.upf.downlink_sessions", + "next_tables" : { + "upf424" : "FabricIngress.upf.downlink_sessions" + }, + "default_entry" : { + "action_id" : 88, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.applications", + "id" : 28, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 337, + "column" : 10, + "source_fragment" : "applications" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "slice_id", + "target" : ["scalars", "userMetadata._ingress_upf_slice_id30"], + "mask" : null + }, + { + "match_type" : "lpm", + "name" : "app_ipv4_addr", + "target" : ["scalars", "upf_app_ipv4_addr"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "app_l4_port", + "target" : ["scalars", "upf_app_l4_port"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "app_ip_proto", + "target" : ["scalars", "upf_app_ip_proto"], + "mask" : null + } + ], + "match_type" : "range", + "type" : "simple", + "max_size" : 5, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [64, 5], + "actions" : ["FabricIngress.upf.set_app_id", "nop"], + "base_default_next" : "node_47", + "next_tables" : { + "FabricIngress.upf.set_app_id" : "node_47", + "nop" : "node_47" + }, + "default_entry" : { + "action_id" : 5, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.uplink_terminations", + "id" : 29, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 280, + "column" : 10, + "source_fragment" : "uplink_terminations" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ue_session_id", + "target" : ["scalars", "upf_ue_session_id"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "app_id", + "target" : ["scalars", "upf_internal_app_id"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [61, 59, 57], + "actions" : ["FabricIngress.upf.app_fwd", "FabricIngress.upf.uplink_drop", "FabricIngress.upf.uplink_drop_miss"], + "base_default_next" : "FabricIngress.upf.uplink_recirc_rules", + "next_tables" : { + "FabricIngress.upf.app_fwd" : "FabricIngress.upf.uplink_recirc_rules", + "FabricIngress.upf.uplink_drop" : "FabricIngress.upf.uplink_recirc_rules", + "FabricIngress.upf.uplink_drop_miss" : "FabricIngress.upf.uplink_recirc_rules" + }, + "default_entry" : { + "action_id" : 57, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.uplink_recirc_rules", + "id" : 30, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 387, + "column" : 10, + "source_fragment" : "uplink_recirc_rules" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 64, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [65, 66, 67], + "actions" : ["FabricIngress.upf.recirc_allow", "FabricIngress.upf.recirc_deny", "FabricIngress.upf.recirc_miss"], + "base_default_next" : "tbl_upf445", + "next_tables" : { + "FabricIngress.upf.recirc_allow" : "tbl_upf445", + "FabricIngress.upf.recirc_deny" : "tbl_upf445", + "FabricIngress.upf.recirc_miss" : "tbl_upf445" + }, + "default_entry" : { + "action_id" : 67, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.downlink_terminations", + "id" : 31, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 295, + "column" : 10, + "source_fragment" : "downlink_terminations" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "ue_session_id", + "target" : ["scalars", "upf_ue_session_id"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "app_id", + "target" : ["scalars", "upf_internal_app_id"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 100000, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [62, 60, 58], + "actions" : ["FabricIngress.upf.downlink_fwd_encap", "FabricIngress.upf.downlink_drop", "FabricIngress.upf.downlink_drop_miss"], + "base_default_next" : "tbl_upf445", + "next_tables" : { + "FabricIngress.upf.downlink_fwd_encap" : "tbl_upf445", + "FabricIngress.upf.downlink_drop" : "tbl_upf445", + "FabricIngress.upf.downlink_drop_miss" : "tbl_upf445" + }, + "default_entry" : { + "action_id" : 58, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf443", + "id" : 32, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 443, + "column" : 58, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [89], + "actions" : ["upf443"], + "base_default_next" : "tbl_upf445", + "next_tables" : { + "upf443" : "tbl_upf445" + }, + "default_entry" : { + "action_id" : 89, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf445", + "id" : 33, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 445, + "column" : 12, + "source_fragment" : "app_meter.execute_meter((bit<32>) app_meter_idx_internal, fabric_md.upf_meter_color)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [91], + "actions" : ["upf445"], + "base_default_next" : "node_54", + "next_tables" : { + "upf445" : "node_54" + }, + "default_entry" : { + "action_id" : 91, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf448", + "id" : 34, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 448, + "column" : 16, + "source_fragment" : "session_meter.execute_meter((bit<32>) session_meter_idx_internal, fabric_md.upf_meter_color)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [90], + "actions" : ["upf448"], + "base_default_next" : "FabricIngress.upf.ig_tunnel_peers", + "next_tables" : { + "upf448" : "FabricIngress.upf.ig_tunnel_peers" + }, + "default_entry" : { + "action_id" : 90, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.upf.ig_tunnel_peers", + "id" : 35, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 317, + "column" : 10, + "source_fragment" : "ig_tunnel_peers" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "tun_peer_id", + "target" : ["_ingress_bridged4", "_upf_tun_peer_id13"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 256, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [63, 4], + "actions" : ["FabricIngress.upf.set_routing_ipv4_dst", "nop"], + "base_default_next" : "node_57", + "next_tables" : { + "FabricIngress.upf.set_routing_ipv4_dst" : "node_57", + "nop" : "node_57" + }, + "default_entry" : { + "action_id" : 4, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf461", + "id" : 36, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 461, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [92], + "actions" : ["upf461"], + "base_default_next" : "node_59", + "next_tables" : { + "upf461" : "node_59" + }, + "default_entry" : { + "action_id" : 92, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.forwarding.bridging", + "id" : 37, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 39, + "column" : 10, + "source_fragment" : "bridging" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "vlan_id", + "target" : ["_ingress_bridged4", "_base_vlan_id6"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_dst", + "target" : ["_ingress_ethernet3", "dst_addr"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [18, 14], + "actions" : ["FabricIngress.forwarding.set_next_id_bridging", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.set_next_id_bridging" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 14, + "action_const" : true, + "action_data" : ["0x59"], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.forwarding.mpls", + "id" : 38, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 74, + "column" : 10, + "source_fragment" : "mpls" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "mpls_label", + "target" : ["_ingress_bridged4", "_base_mpls_label2"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [19, 15], + "actions" : ["FabricIngress.forwarding.pop_mpls_and_next", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.pop_mpls_and_next" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 15, + "action_const" : true, + "action_data" : ["0x81"], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.forwarding.routing_v4", + "id" : 39, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 116, + "column" : 10, + "source_fragment" : "routing_v4" + }, + "key" : [ + { + "match_type" : "lpm", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_routing_ipv4_dst18"], + "mask" : null + } + ], + "match_type" : "lpm", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [20, 21, 22, 16], + "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "FabricIngress.forwarding.nop_routing_v4", "FabricIngress.forwarding.drop_routing_v4", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.set_next_id_routing_v4" : "tbl_hasher17", + "FabricIngress.forwarding.nop_routing_v4" : "tbl_hasher17", + "FabricIngress.forwarding.drop_routing_v4" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 16, + "action_const" : false, + "action_data" : ["0x1d"], + "action_entry_const" : false + } + }, + { + "name" : "FabricIngress.forwarding.routing_v6", + "id" : 40, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 155, + "column" : 10, + "source_fragment" : "routing_v6" + }, + "key" : [ + { + "match_type" : "lpm", + "name" : "ipv6_dst", + "target" : ["_ingress_ipv68", "dst_addr"], + "mask" : null + } + ], + "match_type" : "lpm", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [23, 24, 17], + "actions" : ["FabricIngress.forwarding.set_next_id_routing_v6", "FabricIngress.forwarding.drop_routing_v6", "FabricIngress.forwarding.set_int_drop_reason"], + "base_default_next" : "tbl_hasher17", + "next_tables" : { + "FabricIngress.forwarding.set_next_id_routing_v6" : "tbl_hasher17", + "FabricIngress.forwarding.drop_routing_v6" : "tbl_hasher17", + "FabricIngress.forwarding.set_int_drop_reason" : "tbl_hasher17" + }, + "default_entry" : { + "action_id" : 17, + "action_const" : false, + "action_data" : ["0x1d"], + "action_entry_const" : false + } + }, + { + "name" : "tbl_hasher17", + "id" : 41, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 17, + "column" : 8, + "source_fragment" : "hash( ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [99], + "actions" : ["hasher17"], + "base_default_next" : "node_69", + "next_tables" : { + "hasher17" : "node_69" + }, + "default_entry" : { + "action_id" : 99, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher28", + "id" : 42, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 28, + "column" : 12, + "source_fragment" : "hash( ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [95], + "actions" : ["hasher28"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher28" : "node_76" + }, + "default_entry" : { + "action_id" : 95, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher39", + "id" : 43, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 39, + "column" : 12, + "source_fragment" : "hash( ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [96], + "actions" : ["hasher39"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher39" : "node_76" + }, + "default_entry" : { + "action_id" : 96, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher50", + "id" : 44, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 50, + "column" : 32, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [97], + "actions" : ["hasher50"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher50" : "node_76" + }, + "default_entry" : { + "action_id" : 97, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_hasher66", + "id" : 45, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 66, + "column" : 46, + "source_fragment" : "= 0; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [98], + "actions" : ["hasher66"], + "base_default_next" : "node_76", + "next_tables" : { + "hasher66" : "node_76" + }, + "default_entry" : { + "action_id" : 98, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.pre_next.next_mpls", + "id" : 46, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 22, + "column" : 10, + "source_fragment" : "next_mpls" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [25, 0], + "actions" : ["FabricIngress.pre_next.set_mpls_label", "nop"], + "base_default_next" : "FabricIngress.pre_next.next_vlan", + "next_tables" : { + "FabricIngress.pre_next.set_mpls_label" : "FabricIngress.pre_next.next_vlan", + "nop" : "FabricIngress.pre_next.next_vlan" + }, + "default_entry" : { + "action_id" : 0, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.pre_next.next_vlan", + "id" : 47, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4", + "line" : 54, + "column" : 10, + "source_fragment" : "next_vlan" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [26, 1], + "actions" : ["FabricIngress.pre_next.set_vlan", "nop"], + "base_default_next" : "FabricIngress.acl.acl", + "next_tables" : { + "FabricIngress.pre_next.set_vlan" : "FabricIngress.acl.acl", + "nop" : "FabricIngress.acl.acl" + }, + "default_entry" : { + "action_id" : 1, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.acl.acl", + "id" : 48, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4", + "line" : 74, + "column" : 10, + "source_fragment" : "acl" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "ig_port", + "target" : ["_ingress_bridged4", "_base_ig_port3"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_dst", + "target" : ["_ingress_ethernet3", "dst_addr"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_src", + "target" : ["_ingress_ethernet3", "src_addr"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "vlan_id", + "target" : ["scalars", "userMetadata._ingress_lkp_vlan_id9"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "eth_type", + "target" : ["scalars", "userMetadata._ingress_lkp_eth_type8"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_src", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_src11"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ipv4_dst", + "target" : ["scalars", "userMetadata._ingress_lkp_ipv4_dst12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ip_proto", + "target" : ["scalars", "userMetadata._ingress_lkp_ip_proto13"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "icmp_type", + "target" : ["scalars", "userMetadata._ingress_lkp_icmp_type16"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "icmp_code", + "target" : ["scalars", "userMetadata._ingress_lkp_icmp_code17"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_sport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_sport14"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "l4_dport", + "target" : ["scalars", "userMetadata._ingress_lkp_l4_dport15"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "ig_port_type", + "target" : ["scalars", "userMetadata._ingress_ig_port_type33"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [27, 29, 28, 30, 31, 32], + "actions" : ["FabricIngress.acl.set_next_id_acl", "FabricIngress.acl.punt_to_cpu", "FabricIngress.acl.copy_to_cpu", "FabricIngress.acl.drop", "FabricIngress.acl.set_output_port", "FabricIngress.acl.nop_acl"], + "base_default_next" : "node_80", + "next_tables" : { + "FabricIngress.acl.set_next_id_acl" : "node_80", + "FabricIngress.acl.punt_to_cpu" : "node_80", + "FabricIngress.acl.copy_to_cpu" : "node_80", + "FabricIngress.acl.drop" : "node_80", + "FabricIngress.acl.set_output_port" : "node_80", + "FabricIngress.acl.nop_acl" : "node_80" + }, + "default_entry" : { + "action_id" : 32, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.next.hashed", + "id" : 49, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 127, + "column" : 10, + "source_fragment" : "hashed" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "indirect_ws", + "action_profile" : "FabricIngress.next.hashed_profile", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [33, 34, 2], + "actions" : ["FabricIngress.next.output_hashed", "FabricIngress.next.routing_hashed", "nop"], + "base_default_next" : "FabricIngress.next.multicast", + "next_tables" : { + "FabricIngress.next.output_hashed" : "FabricIngress.next.multicast", + "FabricIngress.next.routing_hashed" : "FabricIngress.next.multicast", + "nop" : "FabricIngress.next.multicast" + } + }, + { + "name" : "FabricIngress.next.multicast", + "id" : 50, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 161, + "column" : 10, + "source_fragment" : "multicast" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "next_id", + "target" : ["scalars", "userMetadata._ingress_next_id21"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [35, 36], + "actions" : ["FabricIngress.next.set_mcast_group_id", "FabricIngress.next.reset_mcast_group_id"], + "base_default_next" : "FabricIngress.qos.set_slice_tc", + "next_tables" : { + "FabricIngress.next.set_mcast_group_id" : "FabricIngress.qos.set_slice_tc", + "FabricIngress.next.reset_mcast_group_id" : "FabricIngress.qos.set_slice_tc" + }, + "default_entry" : { + "action_id" : 36, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.qos.set_slice_tc", + "id" : 51, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 91, + "column" : 10, + "source_fragment" : "set_slice_tc" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "fabric_md.is_upf_hit", + "target" : ["scalars", "userMetadata._ingress_is_upf_hit29"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 2, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [40, 41, 7], + "actions" : ["FabricIngress.qos.use_upf", "FabricIngress.qos.use_default", "NoAction"], + "base_default_next" : "FabricIngress.qos.default_tc", + "next_tables" : { + "FabricIngress.qos.use_upf" : "FabricIngress.qos.default_tc", + "FabricIngress.qos.use_default" : "FabricIngress.qos.default_tc", + "NoAction" : "FabricIngress.qos.default_tc" + }, + "default_entry" : { + "action_id" : 7, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 96, + "column" : 12, + "source_fragment" : "true: use_upf" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + } + ], + "action_entry" : { + "action_id" : 40, + "action_data" : [] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 97, + "column" : 12, + "source_fragment" : "false: use_default" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x00" + } + ], + "action_entry" : { + "action_id" : 41, + "action_data" : [] + }, + "priority" : 2 + } + ] + }, + { + "name" : "FabricIngress.qos.default_tc", + "id" : 52, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 150, + "column" : 10, + "source_fragment" : "default_tc" + }, + "key" : [ + { + "match_type" : "ternary", + "name" : "slice_tc", + "target" : ["_ingress_bridged4", "_base_slice_tc12"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "tc_unknown", + "target" : ["scalars", "userMetadata._ingress_tc_unknown28"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 16, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [44, 3], + "actions" : ["FabricIngress.qos.set_default_tc", "nop"], + "base_default_next" : "node_85", + "next_tables" : { + "FabricIngress.qos.set_default_tc" : "node_85", + "nop" : "node_85" + }, + "default_entry" : { + "action_id" : 3, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_slicing174", + "id" : 53, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "slice_tc_meter.execute_meter((bit<32>) fabric_md.bridged.base.slice_tc, packet_color)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [100], + "actions" : ["slicing174"], + "base_default_next" : "FabricIngress.qos.queues", + "next_tables" : { + "slicing174" : "FabricIngress.qos.queues" + }, + "default_entry" : { + "action_id" : 100, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_slicing177", + "id" : 54, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 177, + "column" : 25, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [101], + "actions" : ["slicing177"], + "base_default_next" : "FabricIngress.qos.queues", + "next_tables" : { + "slicing177" : "FabricIngress.qos.queues" + }, + "default_entry" : { + "action_id" : 101, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.qos.queues", + "id" : 55, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 122, + "column" : 10, + "source_fragment" : "queues" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "slice_tc", + "target" : ["_ingress_bridged4", "_base_slice_tc12"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "color", + "target" : ["scalars", "qos_packet_color"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 128, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [42, 43], + "actions" : ["FabricIngress.qos.set_queue", "FabricIngress.qos.meter_drop"], + "base_default_next" : "tbl_int112", + "next_tables" : { + "FabricIngress.qos.set_queue" : "tbl_int112", + "FabricIngress.qos.meter_drop" : "tbl_int112" + }, + "default_entry" : { + "action_id" : 42, + "action_const" : true, + "action_data" : ["0x0"], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int112", + "id" : 56, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 112, + "column" : 46, + "source_fragment" : "= standard_md.egress_spec; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [102], + "actions" : ["int112"], + "base_default_next" : "FabricIngress.int_ingress.drop_report", + "next_tables" : { + "int112" : "FabricIngress.int_ingress.drop_report" + }, + "default_entry" : { + "action_id" : 102, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricIngress.int_ingress.drop_report", + "id" : 57, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 86, + "column" : 10, + "source_fragment" : "drop_report" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "int_report_type", + "target" : ["_ingress_bridged4", "_int_bmd_report_type21"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "drop_ctl", + "target" : ["scalars", "userMetadata._drop_ctl2"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "punt_to_cpu", + "target" : ["scalars", "userMetadata._ingress_punt_to_cpu23"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "egress_port_set", + "target" : ["scalars", "userMetadata._ingress_egress_port_set22"], + "mask" : null + }, + { + "match_type" : "ternary", + "name" : "mcast_group_id", + "target" : ["standard_metadata", "mcast_grp"], + "mask" : null + } + ], + "match_type" : "ternary", + "type" : "simple", + "max_size" : 3, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [71, 6], + "actions" : ["FabricIngress.int_ingress.report_drop", "nop"], + "base_default_next" : "tbl_fabric_v1model106", + "next_tables" : { + "FabricIngress.int_ingress.report_drop" : "tbl_fabric_v1model106", + "nop" : "tbl_fabric_v1model106" + }, + "default_entry" : { + "action_id" : 6, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 101, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 1, false, false, _): report_drop()" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "ternary", + "key" : "0x0000", + "mask" : "0x0000" + } + ], + "action_entry" : { + "action_id" : 71, + "action_data" : [] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 102, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 1, false, true, _): report_drop()" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "ternary", + "key" : "0x0000", + "mask" : "0x0000" + } + ], + "action_entry" : { + "action_id" : 71, + "action_data" : [] + }, + "priority" : 2 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 104, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 0, false, false, 0): report_drop()" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "ternary", + "key" : "0x0000", + "mask" : "0xffff" + } + ], + "action_entry" : { + "action_id" : 71, + "action_data" : [] + }, + "priority" : 3 + } + ] + }, + { + "name" : "tbl_fabric_v1model106", + "id" : 58, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 106, + "column" : 33, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [104], + "actions" : ["fabric_v1model106"], + "base_default_next" : "node_92", + "next_tables" : { + "fabric_v1model106" : "node_92" + }, + "default_entry" : { + "action_id" : 104, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model110", + "id" : 59, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 110, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [103], + "actions" : ["fabric_v1model110"], + "base_default_next" : null, + "next_tables" : { + "fabric_v1model110" : null + }, + "default_entry" : { + "action_id" : 103, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + } + ], + "action_profiles" : [ + { + "name" : "FabricIngress.next.hashed_profile", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 112, + "column" : 15, + "source_fragment" : "hashed_profile" + }, + "max_size" : 16, + "selector" : { + "algo" : "crc16", + "input" : [ + { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_ecmp_hash5"] + } + ] + } + } + ], + "conditionals" : [ + { + "name" : "node_3", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 62, + "column" : 12, + "source_fragment" : "standard_md.parser_error == error.PacketRejectedByParser" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "parser_error"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x8" + } + } + }, + "true_next" : "tbl_fabric_v1model64", + "false_next" : "node_5" + }, + { + "name" : "node_5", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 67, + "column" : 13, + "source_fragment" : "standard_md.instance_type == 4" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "instance_type"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000004" + } + } + }, + "true_next" : "tbl_fabric_v1model70", + "false_next" : "tbl_lookup_md_init15" + }, + { + "name" : "node_8", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 20, + "column" : 12, + "source_fragment" : "hdr.vlan_tag.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_vlan_tag4", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init21", + "false_next" : "tbl_lookup_md_init24" + }, + { + "name" : "node_11", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 32, + "column" : 12, + "source_fragment" : "hdr.inner_ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init33", + "false_next" : "node_19" + }, + { + "name" : "node_13", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 37, + "column" : 16, + "source_fragment" : "hdr.inner_tcp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_tcp19", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init38", + "false_next" : "node_15" + }, + { + "name" : "node_15", + "id" : 5, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 40, + "column" : 23, + "source_fragment" : "hdr.inner_udp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_udp20", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init41", + "false_next" : "node_17" + }, + { + "name" : "node_17", + "id" : 6, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 43, + "column" : 23, + "source_fragment" : "hdr.inner_icmp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_icmp21", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init44", + "false_next" : "node_27" + }, + { + "name" : "node_19", + "id" : 7, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 47, + "column" : 19, + "source_fragment" : "hdr.ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init48", + "false_next" : "node_27" + }, + { + "name" : "node_21", + "id" : 8, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 52, + "column" : 16, + "source_fragment" : "hdr.tcp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_tcp9", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init53", + "false_next" : "node_23" + }, + { + "name" : "node_23", + "id" : 9, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 55, + "column" : 23, + "source_fragment" : "hdr.udp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_udp10", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init56", + "false_next" : "node_25" + }, + { + "name" : "node_25", + "id" : 10, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4", + "line" : 58, + "column" : 23, + "source_fragment" : "hdr.icmp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_icmp11", "$valid$"] + } + } + }, + "true_next" : "tbl_lookup_md_init59", + "false_next" : "node_27" + }, + { + "name" : "node_27", + "id" : 11, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 24, + "column" : 12, + "source_fragment" : "hdr.packet_out.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_packet_out0", "$valid$"] + } + } + }, + "true_next" : "tbl_pkt_io_do_packet_out", + "false_next" : "FabricIngress.int_watchlist.watchlist" + }, + { + "name" : "node_35", + "id" : 12, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 84, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + } + } + }, + "false_next" : "tbl_upf25", + "true_next" : "node_59" + }, + { + "name" : "node_37", + "id" : 13, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 406, + "column" : 12, + "source_fragment" : "hdr.ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "true_next" : "FabricIngress.upf.interfaces", + "false_next" : "node_59" + }, + { + "name" : "node_40", + "id" : 14, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 413, + "column" : 24, + "source_fragment" : "fabric_md.bridged.base.encap_presence != EncapPresence.NONE" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_encap_presence7"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "FabricIngress.upf.uplink_sessions", + "false_next" : "FabricIngress.upf.applications" + }, + { + "name" : "node_47", + "id" : 15, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 433, + "column" : 16, + "source_fragment" : "sess_hit" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "upf_sess_hit"] + } + } + }, + "true_next" : "node_48", + "false_next" : "tbl_upf443" + }, + { + "name" : "node_48", + "id" : 16, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 434, + "column" : 20, + "source_fragment" : "is_uplink" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "upf_is_uplink"] + } + } + }, + "true_next" : "FabricIngress.upf.uplink_terminations", + "false_next" : "FabricIngress.upf.downlink_terminations" + }, + { + "name" : "node_54", + "id" : 17, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 446, + "column" : 16, + "source_fragment" : "fabric_md.upf_meter_color != MeterColor_t.RED" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + }, + "true_next" : "tbl_upf448", + "false_next" : "FabricIngress.upf.ig_tunnel_peers" + }, + { + "name" : "node_57", + "id" : 18, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 451, + "column" : 16, + "source_fragment" : "term_hit" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "upf_term_hit"] + } + } + }, + "true_next" : "tbl_upf461", + "false_next" : "node_59" + }, + { + "name" : "node_59", + "id" : 19, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 88, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_forwarding19"] + } + } + }, + "false_next" : "node_60", + "true_next" : "tbl_hasher17" + }, + { + "name" : "node_60", + "id" : 20, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 178, + "column" : 12, + "source_fragment" : "hdr.ethernet.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ethernet3", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.bridging", + "false_next" : "node_62" + }, + { + "name" : "node_62", + "id" : 21, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 181, + "column" : 19, + "source_fragment" : "hdr.mpls.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_mpls6", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.mpls", + "false_next" : "node_64" + }, + { + "name" : "node_64", + "id" : 22, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 184, + "column" : 19, + "source_fragment" : "fabric_md.lkp.is_ipv4 && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x03" + } + } + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.routing_v4", + "false_next" : "node_66" + }, + { + "name" : "node_66", + "id" : 23, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4", + "line" : 188, + "column" : 19, + "source_fragment" : "hdr.ipv6.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv68", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + } + } + }, + "true_next" : "FabricIngress.forwarding.routing_v6", + "false_next" : "tbl_hasher17" + }, + { + "name" : "node_69", + "id" : 24, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 27, + "column" : 12, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_bridged4", "_upf_needs_gtpu_encap16"] + } + } + }, + "true_next" : "tbl_hasher28", + "false_next" : "node_71" + }, + { + "name" : "node_71", + "id" : 25, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4", + "line" : 38, + "column" : 12, + "source_fragment" : "hdr.gtpu.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_gtpu12", "$valid$"] + } + } + }, + "true_next" : "tbl_hasher39", + "false_next" : "node_73" + }, + { + "name" : "node_73", + "id" : 26, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 91, + "column" : 34, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_lkp_is_ipv410"] + } + } + }, + "true_next" : "tbl_hasher50", + "false_next" : "tbl_hasher66" + }, + { + "name" : "node_76", + "id" : 27, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 92, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + } + } + }, + "false_next" : "FabricIngress.pre_next.next_mpls", + "true_next" : "FabricIngress.acl.acl" + }, + { + "name" : "node_80", + "id" : 28, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 96, + "column" : 13, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_skip_next20"] + } + } + }, + "false_next" : "FabricIngress.next.hashed", + "true_next" : "FabricIngress.qos.set_slice_tc" + }, + { + "name" : "node_85", + "id" : 29, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 173, + "column" : 12, + "source_fragment" : "fabric_md.upf_meter_color != MeterColor_t.RED" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._ingress_upf_meter_color32"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + }, + "true_next" : "tbl_slicing174", + "false_next" : "tbl_slicing177" + }, + { + "name" : "node_92", + "id" : 30, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 109, + "column" : 12, + "source_fragment" : "fabric_md.drop_ctl == 1" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + }, + "false_next" : null, + "true_next" : "tbl_fabric_v1model110" + } + ] + }, + { + "name" : "egress", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 115, + "column" : 8, + "source_fragment" : "FabricEgress" + }, + "init_table" : "tbl_fabric_v1model133", + "tables" : [ + { + "name" : "tbl_fabric_v1model133", + "id" : 60, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 133, + "column" : 34, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [138], + "actions" : ["fabric_v1model133"], + "base_default_next" : "node_97", + "next_tables" : { + "fabric_v1model133" : "node_97" + }, + "default_entry" : { + "action_id" : 138, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model136", + "id" : 61, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 136, + "column" : 12, + "source_fragment" : "exit" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [137], + "actions" : ["fabric_v1model136"], + "base_default_next" : "node_99", + "next_tables" : { + "fabric_v1model136" : "node_99" + }, + "default_entry" : { + "action_id" : 137, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator14", + "id" : 62, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [140], + "actions" : ["int_tna_parser_emulator14"], + "base_default_next" : "node_101", + "next_tables" : { + "int_tna_parser_emulator14" : "node_101" + }, + "default_entry" : { + "action_id" : 140, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator148", + "id" : 63, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [139], + "actions" : ["int_tna_parser_emulator148"], + "base_default_next" : "node_103", + "next_tables" : { + "int_tna_parser_emulator148" : "node_103" + }, + "default_entry" : { + "action_id" : 139, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_ingress_drop", + "id" : 64, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 165, + "column" : 12, + "source_fragment" : "parse_int_ingress_drop()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [124], + "actions" : ["FabricEgress.parser_emulator.parse_int_ingress_drop"], + "base_default_next" : "tbl_int_tna_parser_emulator166", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_ingress_drop" : "tbl_int_tna_parser_emulator166" + }, + "default_entry" : { + "action_id" : 124, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator166", + "id" : 65, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [141], + "actions" : ["int_tna_parser_emulator166"], + "base_default_next" : "tbl_int_tna_parser_emulator173", + "next_tables" : { + "int_tna_parser_emulator166" : "tbl_int_tna_parser_emulator173" + }, + "default_entry" : { + "action_id" : 141, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_report_mirror", + "id" : 66, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 168, + "column" : 12, + "source_fragment" : "parse_int_report_mirror()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [126], + "actions" : ["FabricEgress.parser_emulator.parse_int_report_mirror"], + "base_default_next" : "tbl_int_tna_parser_emulator169", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_report_mirror" : "tbl_int_tna_parser_emulator169" + }, + "default_entry" : { + "action_id" : 126, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator169", + "id" : 67, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [142], + "actions" : ["int_tna_parser_emulator169"], + "base_default_next" : "tbl_int_tna_parser_emulator173", + "next_tables" : { + "int_tna_parser_emulator169" : "tbl_int_tna_parser_emulator173" + }, + "default_entry" : { + "action_id" : 142, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator173", + "id" : 68, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [143], + "actions" : ["int_tna_parser_emulator173"], + "base_default_next" : "node_109", + "next_tables" : { + "int_tna_parser_emulator173" : "node_109" + }, + "default_entry" : { + "action_id" : 143, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator14_0", + "id" : 69, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 14, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [145], + "actions" : ["int_tna_parser_emulator14_0"], + "base_default_next" : "node_111", + "next_tables" : { + "int_tna_parser_emulator14_0" : "node_111" + }, + "default_entry" : { + "action_id" : 145, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator148_0", + "id" : 70, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 148, + "column" : 12, + "source_fragment" : "hdr_v1model.ingress.ipv4.setInvalid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [144], + "actions" : ["int_tna_parser_emulator148_0"], + "base_default_next" : "node_113", + "next_tables" : { + "int_tna_parser_emulator148_0" : "node_113" + }, + "default_entry" : { + "action_id" : 144, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_ingress_drop_0", + "id" : 71, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 165, + "column" : 12, + "source_fragment" : "parse_int_ingress_drop()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [125], + "actions" : ["FabricEgress.parser_emulator.parse_int_ingress_drop"], + "base_default_next" : "tbl_int_tna_parser_emulator166_0", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_ingress_drop" : "tbl_int_tna_parser_emulator166_0" + }, + "default_entry" : { + "action_id" : 125, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator166_0", + "id" : 72, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 166, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [146], + "actions" : ["int_tna_parser_emulator166_0"], + "base_default_next" : "tbl_int_tna_parser_emulator173_0", + "next_tables" : { + "int_tna_parser_emulator166_0" : "tbl_int_tna_parser_emulator173_0" + }, + "default_entry" : { + "action_id" : 146, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_parser_emulator_parse_int_report_mirror_0", + "id" : 73, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 168, + "column" : 12, + "source_fragment" : "parse_int_report_mirror()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [127], + "actions" : ["FabricEgress.parser_emulator.parse_int_report_mirror"], + "base_default_next" : "tbl_int_tna_parser_emulator169_0", + "next_tables" : { + "FabricEgress.parser_emulator.parse_int_report_mirror" : "tbl_int_tna_parser_emulator169_0" + }, + "default_entry" : { + "action_id" : 127, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator169_0", + "id" : 74, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 169, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(PRESERVE_INT_MD)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [147], + "actions" : ["int_tna_parser_emulator169_0"], + "base_default_next" : "tbl_int_tna_parser_emulator173_0", + "next_tables" : { + "int_tna_parser_emulator169_0" : "tbl_int_tna_parser_emulator173_0" + }, + "default_entry" : { + "action_id" : 147, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int_tna_parser_emulator173_0", + "id" : 75, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 173, + "column" : 27, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [148], + "actions" : ["int_tna_parser_emulator173_0"], + "base_default_next" : "FabricEgress.pkt_io_egress.switch_info", + "next_tables" : { + "int_tna_parser_emulator173_0" : "FabricEgress.pkt_io_egress.switch_info" + }, + "default_entry" : { + "action_id" : 148, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.pkt_io_egress.switch_info", + "id" : 76, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 39, + "column" : 10, + "source_fragment" : "switch_info" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [113, 105], + "actions" : ["FabricEgress.pkt_io_egress.set_switch_info", "nop"], + "base_default_next" : "node_120", + "next_tables" : { + "FabricEgress.pkt_io_egress.set_switch_info" : "node_120", + "nop" : "node_120" + }, + "default_entry" : { + "action_id" : 105, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "tbl_packetio51", + "id" : 77, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 51, + "column" : 12, + "source_fragment" : "hdr.packet_in.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [149], + "actions" : ["packetio51"], + "base_default_next" : "node_122", + "next_tables" : { + "packetio51" : "node_122" + }, + "default_entry" : { + "action_id" : 149, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_packetio60", + "id" : 78, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 60, + "column" : 37, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [150], + "actions" : ["packetio60"], + "base_default_next" : "node_124", + "next_tables" : { + "packetio60" : "node_124" + }, + "default_entry" : { + "action_id" : 150, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.stats.flows", + "id" : 79, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 53, + "column" : 10, + "source_fragment" : "flows" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "stats_flow_id", + "target" : ["_egress_bridged36", "_base_stats_flow_id11"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "eg_port", + "target" : ["standard_metadata", "egress_port"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [112], + "actions" : ["FabricEgress.stats.count"], + "base_default_next" : "node_126", + "next_tables" : { + "FabricEgress.stats.count" : "node_126" + }, + "default_entry" : { + "action_id" : 112, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next283", + "id" : 80, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 283, + "column" : 50, + "source_fragment" : "= INT_REPORT_TYPE_NO_REPORT; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [151], + "actions" : ["next283"], + "base_default_next" : "node_128", + "next_tables" : { + "next283" : "node_128" + }, + "default_entry" : { + "action_id" : 151, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_egress_next_pop_mpls_if_present", + "id" : 81, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 289, + "column" : 36, + "source_fragment" : "pop_mpls_if_present()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [114], + "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"], + "base_default_next" : "node_132", + "next_tables" : { + "FabricEgress.egress_next.pop_mpls_if_present" : "node_132" + }, + "default_entry" : { + "action_id" : 114, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_egress_next_set_mpls", + "id" : 82, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 291, + "column" : 12, + "source_fragment" : "set_mpls()" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [115], + "actions" : ["FabricEgress.egress_next.set_mpls"], + "base_default_next" : "node_132", + "next_tables" : { + "FabricEgress.egress_next.set_mpls" : "node_132" + }, + "default_entry" : { + "action_id" : 115, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.egress_next.egress_vlan", + "id" : 83, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 264, + "column" : 10, + "source_fragment" : "egress_vlan" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "vlan_id", + "target" : ["_egress_bridged36", "_base_vlan_id6"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "eg_port", + "target" : ["standard_metadata", "egress_port"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [116, 117, 118], + "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"], + "base_default_next" : "node_134", + "next_tables" : { + "FabricEgress.egress_next.push_vlan" : "node_134", + "FabricEgress.egress_next.pop_vlan" : "node_134", + "FabricEgress.egress_next.drop" : "node_134" + }, + "default_entry" : { + "action_id" : 118, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next323", + "id" : 84, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 323, + "column" : 25, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [153], + "actions" : ["next323"], + "base_default_next" : "node_136", + "next_tables" : { + "next323" : "node_136" + }, + "default_entry" : { + "action_id" : 153, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next325", + "id" : 85, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 325, + "column" : 25, + "source_fragment" : "= 1; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [152], + "actions" : ["next325"], + "base_default_next" : "node_148", + "next_tables" : { + "next325" : "node_148" + }, + "default_entry" : { + "action_id" : 152, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next333", + "id" : 86, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 333, + "column" : 33, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [154], + "actions" : ["next333"], + "base_default_next" : "node_141", + "next_tables" : { + "next333" : "node_141" + }, + "default_entry" : { + "action_id" : 154, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next336", + "id" : 87, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 336, + "column" : 29, + "source_fragment" : "= 1; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [155], + "actions" : ["next336"], + "base_default_next" : "node_148", + "next_tables" : { + "next336" : "node_148" + }, + "default_entry" : { + "action_id" : 155, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next343", + "id" : 88, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 343, + "column" : 39, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [156], + "actions" : ["next343"], + "base_default_next" : "node_146", + "next_tables" : { + "next343" : "node_146" + }, + "default_entry" : { + "action_id" : 156, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_next346", + "id" : 89, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 346, + "column" : 29, + "source_fragment" : "= 1; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [157], + "actions" : ["next346"], + "base_default_next" : "node_148", + "next_tables" : { + "next346" : "node_148" + }, + "default_entry" : { + "action_id" : 157, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf610", + "id" : 90, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 610, + "column" : 20, + "source_fragment" : "hdr.inner_udp.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [158], + "actions" : ["upf610"], + "base_default_next" : "node_152", + "next_tables" : { + "upf610" : "node_152" + }, + "default_entry" : { + "action_id" : 158, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf615", + "id" : 91, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 615, + "column" : 20, + "source_fragment" : "hdr.inner_tcp.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [159], + "actions" : ["upf615"], + "base_default_next" : "node_154", + "next_tables" : { + "upf615" : "node_154" + }, + "default_entry" : { + "action_id" : 159, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf620", + "id" : 92, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 620, + "column" : 20, + "source_fragment" : "hdr.inner_icmp.setValid(); ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [160], + "actions" : ["upf620"], + "base_default_next" : "FabricEgress.upf.gtpu_encap", + "next_tables" : { + "upf620" : "FabricEgress.upf.gtpu_encap" + }, + "default_entry" : { + "action_id" : 160, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.upf.gtpu_encap", + "id" : 93, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 597, + "column" : 10, + "source_fragment" : "gtpu_encap" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [122, 123], + "actions" : ["FabricEgress.upf.gtpu_only", "FabricEgress.upf.gtpu_with_psc"], + "base_default_next" : "FabricEgress.upf.eg_tunnel_peers", + "next_tables" : { + "FabricEgress.upf.gtpu_only" : "FabricEgress.upf.eg_tunnel_peers", + "FabricEgress.upf.gtpu_with_psc" : "FabricEgress.upf.eg_tunnel_peers" + }, + "default_entry" : { + "action_id" : 122, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "FabricEgress.upf.eg_tunnel_peers", + "id" : 94, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 491, + "column" : 10, + "source_fragment" : "eg_tunnel_peers" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "tun_peer_id", + "target" : ["_egress_bridged36", "_upf_tun_peer_id13"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 256, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [121, 107], + "actions" : ["FabricEgress.upf.load_tunnel_params", "nop"], + "base_default_next" : "node_158", + "next_tables" : { + "FabricEgress.upf.load_tunnel_params" : "node_158", + "nop" : "node_158" + }, + "default_entry" : { + "action_id" : 107, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_upf628", + "id" : 95, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 628, + "column" : 16, + "source_fragment" : "terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [161], + "actions" : ["upf628"], + "base_default_next" : "tbl_int128", + "next_tables" : { + "upf628" : "tbl_int128" + }, + "default_entry" : { + "action_id" : 161, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_int128", + "id" : 96, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 128, + "column" : 4, + "source_fragment" : "egress_headers_t hdr = hdr_v1model.egress; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [162], + "actions" : ["int128"], + "base_default_next" : "FabricEgress.int_egress.queue_latency_thresholds", + "next_tables" : { + "int128" : "FabricEgress.int_egress.queue_latency_thresholds" + }, + "default_entry" : { + "action_id" : 162, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.int_egress.queue_latency_thresholds", + "id" : 97, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 159, + "column" : 10, + "source_fragment" : "queue_latency_thresholds" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "egress_qid", + "target" : ["scalars", "int_egress_egress_qid"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "hop_latency_upper", + "target" : ["scalars", "key_0"], + "mask" : null + }, + { + "match_type" : "range", + "name" : "hop_latency_lower", + "target" : ["scalars", "key_1"], + "mask" : null + } + ], + "match_type" : "range", + "type" : "simple", + "max_size" : 128, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [128, 129, 108], + "actions" : ["FabricEgress.int_egress.check_quota", "FabricEgress.int_egress.reset_quota", "nop"], + "base_default_next" : "FabricEgress.int_egress.config", + "next_tables" : { + "FabricEgress.int_egress.check_quota" : "FabricEgress.int_egress.config", + "FabricEgress.int_egress.reset_quota" : "FabricEgress.int_egress.config", + "nop" : "FabricEgress.int_egress.config" + }, + "default_entry" : { + "action_id" : 108, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "FabricEgress.int_egress.config", + "id" : 98, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 183, + "column" : 10, + "source_fragment" : "config" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [130], + "actions" : ["FabricEgress.int_egress.set_config"], + "base_default_next" : "tbl_int373", + "next_tables" : { + "FabricEgress.int_egress.set_config" : "tbl_int373" + }, + "default_entry" : { + "action_id" : 130, + "action_const" : false, + "action_data" : ["0xffffff00", "0xffffc0000000"], + "action_entry_const" : false + } + }, + { + "name" : "tbl_int373", + "id" : 99, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 373, + "column" : 38, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [164], + "actions" : ["int373"], + "base_default_next" : "node_164", + "next_tables" : { + "int373" : "node_164" + }, + "default_entry" : { + "action_id" : 164, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.int_egress.report", + "id" : 100, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 260, + "column" : 10, + "source_fragment" : "report" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "bmd_type", + "target" : ["int_egress_fabric_md_int_report_md", "bmd_type"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "mirror_type", + "target" : ["int_egress_fabric_md_int_report_md", "mirror_type"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "int_report_type", + "target" : ["int_egress_fabric_md_int_report_md", "report_type"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 6, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [131, 132, 133, 134, 109], + "actions" : ["FabricEgress.int_egress.do_local_report_encap", "FabricEgress.int_egress.do_local_report_encap_mpls", "FabricEgress.int_egress.do_drop_report_encap", "FabricEgress.int_egress.do_drop_report_encap_mpls", "nop"], + "base_default_next" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "next_tables" : { + "FabricEgress.int_egress.do_local_report_encap" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "FabricEgress.int_egress.do_local_report_encap_mpls" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "FabricEgress.int_egress.do_drop_report_encap" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "FabricEgress.int_egress.do_drop_report_encap_mpls" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "nop" : "FabricEgress.int_egress.adjust_int_report_hdr_length" + }, + "default_entry" : { + "action_id" : 109, + "action_const" : false, + "action_data" : [], + "action_entry_const" : false + } + }, + { + "name" : "FabricEgress.int_egress.int_metadata", + "id" : 101, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 315, + "column" : 10, + "source_fragment" : "int_metadata" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "int_report_type", + "target" : ["_egress_bridged36", "_int_bmd_report_type21"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "drop_ctl", + "target" : ["scalars", "userMetadata._drop_ctl2"], + "mask" : null + }, + { + "match_type" : "exact", + "name" : "queue_report", + "target" : ["scalars", "userMetadata._egress_int_md_queue_report43"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 2, + "with_counters" : true, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [135, 110], + "actions" : ["FabricEgress.int_egress.init_int_metadata", "nop"], + "base_default_next" : null, + "next_tables" : { + "__HIT__" : "tbl_int383", + "__MISS__" : "FabricEgress.int_egress.adjust_int_report_hdr_length" + }, + "default_entry" : { + "action_id" : 110, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 327, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 0, false): init_int_metadata(INT_REPORT_TYPE_FLOW)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + }, + { + "match_type" : "exact", + "key" : "0x00" + } + ], + "action_entry" : { + "action_id" : 135, + "action_data" : ["0x1"] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 329, + "column" : 12, + "source_fragment" : "(INT_REPORT_TYPE_FLOW, 1, false): init_int_metadata(INT_REPORT_TYPE_DROP)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x01" + }, + { + "match_type" : "exact", + "key" : "0x00" + } + ], + "action_entry" : { + "action_id" : 135, + "action_data" : ["0x4"] + }, + "priority" : 2 + } + ] + }, + { + "name" : "tbl_int383", + "id" : 102, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 383, + "column" : 16, + "source_fragment" : "clone_preserving_field_list(CloneType.E2E, ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [163], + "actions" : ["int383"], + "base_default_next" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "next_tables" : { + "int383" : "FabricEgress.int_egress.adjust_int_report_hdr_length" + }, + "default_entry" : { + "action_id" : 163, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.int_egress.adjust_int_report_hdr_length", + "id" : 103, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 347, + "column" : 10, + "source_fragment" : "adjust_int_report_hdr_length" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "is_int_wip", + "target" : ["int_egress_fabric_md_bridged", "_int_bmd_wip_type26"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 2, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [111, 136], + "actions" : ["nop", "FabricEgress.int_egress.adjust_ip_udp_len"], + "base_default_next" : "tbl_slicing189", + "next_tables" : { + "nop" : "tbl_slicing189", + "FabricEgress.int_egress.adjust_ip_udp_len" : "tbl_slicing189" + }, + "default_entry" : { + "action_id" : 111, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + }, + "entries" : [ + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 358, + "column" : 12, + "source_fragment" : "INT_IS_WIP: adjust_ip_udp_len(INT_WIP_ADJUST_IP_BYTES, INT_WIP_ADJUST_UDP_BYTES)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x01" + } + ], + "action_entry" : { + "action_id" : 136, + "action_data" : ["0xfff2", "0xffde"] + }, + "priority" : 1 + }, + { + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 359, + "column" : 12, + "source_fragment" : "INT_IS_WIP_WITH_MPLS: adjust_ip_udp_len(INT_WIP_ADJUST_IP_MPLS_BYTES, INT_WIP_ADJUST_UDP_MPLS_BYTES)" + }, + "match_key" : [ + { + "match_type" : "exact", + "key" : "0x02" + } + ], + "action_entry" : { + "action_id" : 136, + "action_data" : ["0xffee", "0xffda"] + }, + "priority" : 2 + } + ] + }, + { + "name" : "tbl_slicing189", + "id" : 104, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 189, + "column" : 4, + "source_fragment" : "bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc; ..." + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [166], + "actions" : ["slicing189"], + "base_default_next" : "FabricEgress.dscp_rewriter.rewriter", + "next_tables" : { + "slicing189" : "FabricEgress.dscp_rewriter.rewriter" + }, + "default_entry" : { + "action_id" : 166, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "FabricEgress.dscp_rewriter.rewriter", + "id" : 105, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 201, + "column" : 10, + "source_fragment" : "rewriter" + }, + "key" : [ + { + "match_type" : "exact", + "name" : "eg_port", + "target" : ["standard_metadata", "egress_port"], + "mask" : null + } + ], + "match_type" : "exact", + "type" : "simple", + "max_size" : 512, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [119, 120, 106], + "actions" : ["FabricEgress.dscp_rewriter.rewrite", "FabricEgress.dscp_rewriter.clear", "nop"], + "base_default_next" : null, + "next_tables" : { + "__HIT__" : "node_171", + "__MISS__" : "node_173" + }, + "default_entry" : { + "action_id" : 106, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_slicing217", + "id" : 106, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 217, + "column" : 30, + "source_fragment" : "=" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [165], + "actions" : ["slicing217"], + "base_default_next" : "node_173", + "next_tables" : { + "slicing217" : "node_173" + }, + "default_entry" : { + "action_id" : 165, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model170", + "id" : 107, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 170, + "column" : 12, + "source_fragment" : "recirculate_preserving_field_list(NO_PRESERVATION)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [167], + "actions" : ["fabric_v1model170"], + "base_default_next" : "node_175", + "next_tables" : { + "fabric_v1model170" : "node_175" + }, + "default_entry" : { + "action_id" : 167, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + }, + { + "name" : "tbl_fabric_v1model174", + "id" : 108, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 174, + "column" : 12, + "source_fragment" : "mark_to_drop(standard_md)" + }, + "key" : [], + "match_type" : "exact", + "type" : "simple", + "max_size" : 1024, + "with_counters" : false, + "support_timeout" : false, + "direct_meters" : null, + "action_ids" : [168], + "actions" : ["fabric_v1model174"], + "base_default_next" : null, + "next_tables" : { + "fabric_v1model174" : null + }, + "default_entry" : { + "action_id" : 168, + "action_const" : true, + "action_data" : [], + "action_entry_const" : true + } + } + ], + "action_profiles" : [], + "conditionals" : [ + { + "name" : "node_97", + "id" : 31, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 135, + "column" : 12, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._skip_egress0"] + } + } + }, + "true_next" : "tbl_fabric_v1model136", + "false_next" : "node_99" + }, + { + "name" : "node_99", + "id" : 32, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 140, + "column" : 13, + "source_fragment" : "standard_md.instance_type == 2" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "instance_type"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00000002" + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator14", + "false_next" : "node_109" + }, + { + "name" : "node_101", + "id" : 33, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 145, + "column" : 11, + "source_fragment" : "hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_gtpu12", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_vxlan15", "$valid$"] + } + } + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator148", + "false_next" : "node_103" + }, + { + "name" : "node_103", + "id" : 34, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 164, + "column" : 12, + "source_fragment" : "(bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._recirc_preserved_report_type47"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "true_next" : "tbl_parser_emulator_parse_int_ingress_drop", + "false_next" : "tbl_parser_emulator_parse_int_report_mirror" + }, + { + "name" : "node_109", + "id" : 35, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 150, + "column" : 11, + "source_fragment" : "(bit<8>)fabric_md.egress.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator14_0", + "false_next" : "FabricEgress.pkt_io_egress.switch_info" + }, + { + "name" : "node_111", + "id" : 36, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 145, + "column" : 11, + "source_fragment" : "hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_gtpu12", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_vxlan15", "$valid$"] + } + } + } + } + }, + "true_next" : "tbl_int_tna_parser_emulator148_0", + "false_next" : "node_113" + }, + { + "name" : "node_113", + "id" : 37, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4", + "line" : 164, + "column" : 12, + "source_fragment" : "(bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "expression", + "value" : { + "op" : "&", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_int_bmd_report_type21"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xff" + } + } + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "true_next" : "tbl_parser_emulator_parse_int_ingress_drop_0", + "false_next" : "tbl_parser_emulator_parse_int_report_mirror_0" + }, + { + "name" : "node_120", + "id" : 38, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 50, + "column" : 12, + "source_fragment" : "standard_md.egress_port == fabric_md.cpu_port" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["standard_metadata", "egress_port"] + }, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_cpu_port37"] + } + } + }, + "true_next" : "tbl_packetio51", + "false_next" : "node_122" + }, + { + "name" : "node_122", + "id" : 39, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4", + "line" : 58, + "column" : 12, + "source_fragment" : "hdr.fake_ethernet.isValid() && ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_fake_ethernet2", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_fake_ethernet2", "ether_type"] + }, + "right" : { + "type" : "hexstr", + "value" : "0xbf03" + } + } + } + } + }, + "true_next" : "tbl_packetio60", + "false_next" : "node_124" + }, + { + "name" : "node_124", + "id" : 40, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4", + "line" : 67, + "column" : 12, + "source_fragment" : "bmd_type == BridgedMdType_t.INGRESS_TO_EGRESS" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + }, + "true_next" : "FabricEgress.stats.flows", + "false_next" : "node_126" + }, + { + "name" : "node_126", + "id" : 41, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 280, + "column" : 12, + "source_fragment" : "fabric_md.bridged.base.is_multicast ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_is_multicast4"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_ig_port3"] + }, + "right" : { + "type" : "field", + "value" : ["standard_metadata", "egress_port"] + } + } + } + } + }, + "true_next" : "tbl_next283", + "false_next" : "node_128" + }, + { + "name" : "node_128", + "id" : 42, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 288, + "column" : 12, + "source_fragment" : "fabric_md.bridged.base.mpls_label == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_mpls_label2"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x000000" + } + } + }, + "true_next" : "node_129", + "false_next" : "tbl_egress_next_set_mpls" + }, + { + "name" : "node_129", + "id" : 43, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 289, + "column" : 16, + "source_fragment" : "hdr.mpls.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_mpls6", "$valid$"] + } + } + }, + "true_next" : "tbl_egress_next_pop_mpls_if_present", + "false_next" : "node_132" + }, + { + "name" : "node_132", + "id" : 44, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 159, + "column" : 39, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._egress_is_int_recirc45"] + } + } + }, + "false_next" : "FabricEgress.egress_next.egress_vlan", + "true_next" : "node_134" + }, + { + "name" : "node_134", + "id" : 45, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 322, + "column" : 12, + "source_fragment" : "hdr.mpls.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_mpls6", "$valid$"] + } + } + }, + "true_next" : "tbl_next323", + "false_next" : "node_138" + }, + { + "name" : "node_136", + "id" : 46, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 324, + "column" : 16, + "source_fragment" : "hdr.mpls.ttl == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_mpls6", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "tbl_next325", + "false_next" : "node_148" + }, + { + "name" : "node_138", + "id" : 47, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 331, + "column" : 16, + "source_fragment" : "hdr.ipv4.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + } + } + }, + "true_next" : "node_139", + "false_next" : "node_143" + }, + { + "name" : "node_139", + "id" : 48, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 319, + "column" : 28, + "source_fragment" : "(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP) || ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + } + } + }, + "false_next" : "tbl_next333", + "true_next" : "node_141" + }, + { + "name" : "node_141", + "id" : 49, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 335, + "column" : 20, + "source_fragment" : "hdr.ipv4.ttl == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv47", "ttl"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "tbl_next336", + "false_next" : "node_148" + }, + { + "name" : "node_143", + "id" : 50, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 341, + "column" : 23, + "source_fragment" : "hdr.ipv6.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "and", + "left" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv68", "$valid$"] + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "!=", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_base_fwd_type5"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + } + } + }, + "true_next" : "node_144", + "false_next" : "node_148" + }, + { + "name" : "node_144", + "id" : 51, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 319, + "column" : 28, + "source_fragment" : "(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP) || ..." + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "or", + "left" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x04" + } + } + }, + "right" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_egress_bridged36", "_bmd_type0"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x02" + } + } + } + } + }, + "false_next" : "tbl_next343", + "true_next" : "node_146" + }, + { + "name" : "node_146", + "id" : 52, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4", + "line" : 345, + "column" : 20, + "source_fragment" : "hdr.ipv6.hop_limit == 0" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["_ingress_ipv68", "hop_limit"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x00" + } + } + }, + "true_next" : "tbl_next346", + "false_next" : "node_148" + }, + { + "name" : "node_148", + "id" : 53, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 607, + "column" : 13, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_upf17"] + } + } + }, + "false_next" : "node_149", + "true_next" : "tbl_int128" + }, + { + "name" : "node_149", + "id" : 54, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 608, + "column" : 16, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_needs_gtpu_encap16"] + } + } + }, + "true_next" : "node_150", + "false_next" : "node_158" + }, + { + "name" : "node_150", + "id" : 55, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 609, + "column" : 20, + "source_fragment" : "hdr.udp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_udp10", "$valid$"] + } + } + }, + "true_next" : "tbl_upf610", + "false_next" : "node_152" + }, + { + "name" : "node_152", + "id" : 56, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 614, + "column" : 20, + "source_fragment" : "hdr.tcp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_tcp9", "$valid$"] + } + } + }, + "true_next" : "tbl_upf615", + "false_next" : "node_154" + }, + { + "name" : "node_154", + "id" : 57, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 619, + "column" : 20, + "source_fragment" : "hdr.icmp.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_icmp11", "$valid$"] + } + } + }, + "true_next" : "tbl_upf620", + "false_next" : "FabricEgress.upf.gtpu_encap" + }, + { + "name" : "node_158", + "id" : 58, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4", + "line" : 627, + "column" : 17, + "source_fragment" : "fabric_md.bridged" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_bridged36", "_upf_skip_egress_upf_ctr18"] + } + } + }, + "false_next" : "tbl_upf628", + "true_next" : "tbl_int128" + }, + { + "name" : "node_164", + "id" : 59, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4", + "line" : 375, + "column" : 12, + "source_fragment" : "fabric_md.int_report_md.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["int_egress_fabric_md_int_report_md", "$valid$"] + } + } + }, + "true_next" : "FabricEgress.int_egress.report", + "false_next" : "FabricEgress.int_egress.int_metadata" + }, + { + "name" : "node_171", + "id" : 60, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4", + "line" : 216, + "column" : 16, + "source_fragment" : "hdr.ipv4.isValid()" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + }, + "true_next" : "tbl_slicing217", + "false_next" : "node_173" + }, + { + "name" : "node_173", + "id" : 61, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 168, + "column" : 12, + "source_fragment" : "fabric_md" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["scalars", "userMetadata._do_upf_uplink_recirc1"] + } + } + }, + "true_next" : "tbl_fabric_v1model170", + "false_next" : "node_175" + }, + { + "name" : "node_175", + "id" : 62, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "line" : 173, + "column" : 12, + "source_fragment" : "fabric_md.drop_ctl == 1" + }, + "expression" : { + "type" : "expression", + "value" : { + "op" : "==", + "left" : { + "type" : "field", + "value" : ["scalars", "userMetadata._drop_ctl2"] + }, + "right" : { + "type" : "hexstr", + "value" : "0x01" + } + } + }, + "false_next" : null, + "true_next" : "tbl_fabric_v1model174" + } + ] + } + ], + "checksums" : [ + { + "name" : "cksum", + "id" : 0, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 55, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "target" : ["_ingress_ipv47", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_3", + "verify" : false, + "update" : true, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + } + }, + { + "name" : "cksum_0", + "id" : 1, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 73, + "column" : 8, + "source_fragment" : "update_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "target" : ["_ingress_inner_ipv418", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_4", + "verify" : false, + "update" : true, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "$valid$"] + } + } + } + }, + { + "name" : "cksum_1", + "id" : 2, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 92, + "column" : 8, + "source_fragment" : "update_checksum(hdr.egress.report_ipv4.isValid(), ..." + }, + "target" : ["_egress_report_ipv427", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_5", + "verify" : false, + "update" : true, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_egress_report_ipv427", "$valid$"] + } + } + } + }, + { + "name" : "cksum_2", + "id" : 3, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 13, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.ipv4.isValid(), ..." + }, + "target" : ["_ingress_ipv47", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_6", + "verify" : true, + "update" : false, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_ipv47", "$valid$"] + } + } + } + }, + { + "name" : "cksum_3", + "id" : 4, + "source_info" : { + "filename" : "/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4", + "line" : 31, + "column" : 8, + "source_fragment" : "verify_checksum(hdr.ingress.inner_ipv4.isValid(), ..." + }, + "target" : ["_ingress_inner_ipv418", "hdr_checksum"], + "type" : "generic", + "calculation" : "calc_7", + "verify" : true, + "update" : false, + "if_cond" : { + "type" : "expression", + "value" : { + "op" : "d2b", + "left" : null, + "right" : { + "type" : "field", + "value" : ["_ingress_inner_ipv418", "$valid$"] + } + } + } + } + ], + "force_arith" : [], + "extern_instances" : [], + "field_aliases" : [ + [ + "queueing_metadata.enq_timestamp", + ["standard_metadata", "enq_timestamp"] + ], + [ + "queueing_metadata.enq_qdepth", + ["standard_metadata", "enq_qdepth"] + ], + [ + "queueing_metadata.deq_timedelta", + ["standard_metadata", "deq_timedelta"] + ], + [ + "queueing_metadata.deq_qdepth", + ["standard_metadata", "deq_qdepth"] + ], + [ + "intrinsic_metadata.ingress_global_timestamp", + ["standard_metadata", "ingress_global_timestamp"] + ], + [ + "intrinsic_metadata.egress_global_timestamp", + ["standard_metadata", "egress_global_timestamp"] + ], + [ + "intrinsic_metadata.mcast_grp", + ["standard_metadata", "mcast_grp"] + ], + [ + "intrinsic_metadata.egress_rid", + ["standard_metadata", "egress_rid"] + ], + [ + "intrinsic_metadata.priority", + ["standard_metadata", "priority"] + ] + ], + "program" : "/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4", + "__meta__" : { + "version" : [2, 23], + "compiler" : "https://github.com/p4lang/p4c" + } +} \ No newline at end of file diff --git a/src/tests/p4-sd-fabric-svc-upf/p4src/p4info.txt b/src/tests/p4-sd-fabric-svc-upf/p4src/p4info.txt new file mode 100644 index 0000000000000000000000000000000000000000..d502367c0c2acb101b7ea4c4df11837b0d8c3271 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/p4src/p4info.txt @@ -0,0 +1,2482 @@ +pkg_info { + arch: "v1model" +} +tables { + preamble { + id: 41243186 + name: "FabricIngress.stats.flows" + alias: "FabricIngress.stats.flows" + } + match_fields { + id: 1 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 4 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 21929788 + } + const_default_action_id: 21929788 + direct_resource_ids: 333776332 + size: 1024 +} +tables { + preamble { + id: 43310977 + name: "FabricIngress.filtering.ingress_port_vlan" + alias: "ingress_port_vlan" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + match_fields { + id: 2 + name: "vlan_is_valid" + bitwidth: 1 + match_type: EXACT + } + match_fields { + id: 3 + name: "vlan_id" + bitwidth: 12 + match_type: TERNARY + } + action_refs { + id: 17164167 + } + action_refs { + id: 24158268 + } + action_refs { + id: 24266015 + } + const_default_action_id: 17164167 + direct_resource_ids: 326221069 + size: 1024 +} +tables { + preamble { + id: 49718154 + name: "FabricIngress.filtering.fwd_classifier" + alias: "fwd_classifier" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 3 + name: "eth_type" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_eth_type" + bitwidth: 16 + match_type: EXACT + } + action_refs { + id: 25032921 + } + const_default_action_id: 25032921 + direct_resource_ids: 335473470 + size: 1024 +} +tables { + preamble { + id: 43623757 + name: "FabricIngress.forwarding.bridging" + alias: "bridging" + } + match_fields { + id: 1 + name: "vlan_id" + bitwidth: 12 + match_type: EXACT + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + action_refs { + id: 21791748 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29734112 + direct_resource_ids: 330959985 + size: 1024 +} +tables { + preamble { + id: 37768578 + name: "FabricIngress.forwarding.mpls" + alias: "mpls" + } + match_fields { + id: 1 + name: "mpls_label" + bitwidth: 20 + match_type: EXACT + } + action_refs { + id: 30066030 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29734112 + direct_resource_ids: 318961579 + size: 1024 +} +tables { + preamble { + id: 41754650 + name: "FabricIngress.forwarding.routing_v4" + alias: "routing_v4" + } + match_fields { + id: 1 + name: "ipv4_dst" + bitwidth: 32 + match_type: LPM + } + action_refs { + id: 19792090 + } + action_refs { + id: 29124955 + } + action_refs { + id: 17639597 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 333425635 + size: 1024 +} +tables { + preamble { + id: 49342721 + name: "FabricIngress.forwarding.routing_v6" + alias: "routing_v6" + } + match_fields { + id: 1 + name: "ipv6_dst" + bitwidth: 128 + match_type: LPM + } + action_refs { + id: 21856023 + } + action_refs { + id: 24646532 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 324042090 + size: 1024 +} +tables { + preamble { + id: 36626242 + name: "FabricIngress.pre_next.next_mpls" + alias: "next_mpls" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 22765924 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + direct_resource_ids: 330020245 + size: 1024 +} +tables { + preamble { + id: 48011802 + name: "FabricIngress.pre_next.next_vlan" + alias: "next_vlan" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 33475378 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + direct_resource_ids: 333692067 + size: 1024 +} +tables { + preamble { + id: 44104738 + name: "FabricIngress.acl.acl" + alias: "acl" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: TERNARY + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 3 + name: "eth_src" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 4 + name: "vlan_id" + bitwidth: 12 + match_type: TERNARY + } + match_fields { + id: 5 + name: "eth_type" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 7 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 8 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 9 + name: "icmp_type" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 10 + name: "icmp_code" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 11 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 12 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 13 + name: "ig_port_type" + bitwidth: 2 + match_type: TERNARY + } + action_refs { + id: 23623126 + } + action_refs { + id: 23579892 + } + action_refs { + id: 21161133 + } + action_refs { + id: 23570973 + } + action_refs { + id: 24507494 + } + action_refs { + id: 29607214 + } + const_default_action_id: 29607214 + direct_resource_ids: 319194241 + size: 1024 +} +tables { + preamble { + id: 47960972 + name: "FabricIngress.next.hashed" + alias: "hashed" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 27301117 + } + action_refs { + id: 20985706 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + implementation_id: 289544276 + direct_resource_ids: 322798228 + size: 1024 +} +tables { + preamble { + id: 40619180 + name: "FabricIngress.next.multicast" + alias: "multicast" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 21629581 + } + action_refs { + id: 23637707 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 23637707 + direct_resource_ids: 319194968 + size: 1024 +} +tables { + preamble { + id: 34606298 + name: "FabricIngress.slice_tc_classifier.classifier" + alias: "classifier" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + action_refs { + id: 23786376 + } + action_refs { + id: 25983516 + } + action_refs { + id: 30111108 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30111108 + direct_resource_ids: 334706097 + size: 512 +} +tables { + preamble { + id: 36435258 + name: "FabricIngress.qos.queues" + alias: "queues" + } + match_fields { + id: 1 + name: "slice_tc" + bitwidth: 6 + match_type: EXACT + } + match_fields { + id: 2 + name: "color" + bitwidth: 2 + match_type: TERNARY + } + action_refs { + id: 32116918 + } + action_refs { + id: 28214351 + } + const_default_action_id: 32116918 + direct_resource_ids: 327743278 + size: 128 +} +tables { + preamble { + id: 43965782 + name: "FabricIngress.qos.default_tc" + alias: "default_tc" + } + match_fields { + id: 1 + name: "slice_tc" + bitwidth: 6 + match_type: TERNARY + } + match_fields { + id: 2 + name: "tc_unknown" + bitwidth: 1 + match_type: EXACT + } + action_refs { + id: 23587909 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 16 +} +tables { + preamble { + id: 41155994 + name: "FabricIngress.upf.interfaces" + alias: "interfaces" + } + match_fields { + id: 1 + name: "ipv4_dst_addr" + bitwidth: 32 + match_type: LPM + } + match_fields { + id: 2 + name: "gtpu_is_valid" + bitwidth: 1 + match_type: EXACT + } + action_refs { + id: 30131500 + } + action_refs { + id: 19786139 + } + action_refs { + id: 19466514 + } + action_refs { + id: 30204657 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30204657 + size: 64 +} +tables { + preamble { + id: 37952203 + name: "FabricIngress.upf.downlink_sessions" + alias: "downlink_sessions" + } + match_fields { + id: 1 + name: "ue_addr" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 16984383 + } + action_refs { + id: 31195396 + } + action_refs { + id: 21581660 + } + action_refs { + id: 24509779 + } + action_refs { + id: 32013192 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 32013192 + size: 100000 +} +tables { + preamble { + id: 45463032 + name: "FabricIngress.upf.uplink_sessions" + alias: "uplink_sessions" + } + match_fields { + id: 1 + name: "tunnel_ipv4_dst" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "teid" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 31219743 + } + action_refs { + id: 24328070 + } + action_refs { + id: 20368148 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 20368148 + size: 100000 +} +tables { + preamble { + id: 50169666 + name: "FabricIngress.upf.uplink_terminations" + alias: "uplink_terminations" + } + match_fields { + id: 1 + name: "ue_session_id" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 25805419 + } + action_refs { + id: 28764209 + } + action_refs { + id: 20624836 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 20624836 + size: 100000 +} +tables { + preamble { + id: 35221941 + name: "FabricIngress.upf.downlink_terminations" + alias: "downlink_terminations" + } + match_fields { + id: 1 + name: "ue_session_id" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 23536134 + } + action_refs { + id: 30742995 + } + action_refs { + id: 26608757 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 26608757 + size: 100000 +} +tables { + preamble { + id: 48831175 + name: "FabricIngress.upf.ig_tunnel_peers" + alias: "ig_tunnel_peers" + } + match_fields { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 26011763 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 256 +} +tables { + preamble { + id: 46184415 + name: "FabricIngress.upf.applications" + alias: "applications" + } + match_fields { + id: 1 + name: "slice_id" + bitwidth: 4 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_ipv4_addr" + bitwidth: 32 + match_type: LPM + } + match_fields { + id: 3 + name: "app_l4_port" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 4 + name: "app_ip_proto" + bitwidth: 8 + match_type: TERNARY + } + action_refs { + id: 26631629 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 5 +} +tables { + preamble { + id: 34400315 + name: "FabricIngress.upf.uplink_recirc_rules" + alias: "uplink_recirc_rules" + } + match_fields { + id: 1 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + action_refs { + id: 28119063 + } + action_refs { + id: 19222227 + } + action_refs { + id: 29186084 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29186084 + direct_resource_ids: 335275671 + size: 64 +} +tables { + preamble { + id: 40748488 + name: "FabricIngress.int_watchlist.watchlist" + alias: "watchlist" + } + match_fields { + id: 1 + name: "ipv4_valid" + bitwidth: 1 + match_type: EXACT + } + match_fields { + id: 2 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_sport" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 6 + name: "l4_dport" + bitwidth: 16 + match_type: RANGE + } + action_refs { + id: 25078550 + } + action_refs { + id: 20118842 + } + action_refs { + id: 28396787 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28396787 + direct_resource_ids: 328581521 + size: 64 +} +tables { + preamble { + id: 43851059 + name: "FabricEgress.stats.flows" + alias: "FabricEgress.stats.flows" + } + match_fields { + id: 1 + name: "stats_flow_id" + bitwidth: 10 + match_type: EXACT + } + match_fields { + id: 2 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 26838724 + } + const_default_action_id: 26838724 + direct_resource_ids: 334508337 + size: 1024 +} +tables { + preamble { + id: 35217901 + name: "FabricEgress.pkt_io_egress.switch_info" + alias: "switch_info" + } + action_refs { + id: 32804382 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 1 +} +tables { + preamble { + id: 49262446 + name: "FabricEgress.egress_next.egress_vlan" + alias: "egress_vlan" + } + match_fields { + id: 1 + name: "vlan_id" + bitwidth: 12 + match_type: EXACT + } + match_fields { + id: 2 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 30307755 + } + action_refs { + id: 17183246 + } + action_refs { + id: 30812542 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30812542 + direct_resource_ids: 318892680 + size: 1024 +} +tables { + preamble { + id: 49970092 + name: "FabricEgress.dscp_rewriter.rewriter" + alias: "rewriter" + } + match_fields { + id: 1 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 27951287 + } + action_refs { + id: 24120545 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 512 +} +tables { + preamble { + id: 37756041 + name: "FabricEgress.upf.eg_tunnel_peers" + alias: "eg_tunnel_peers" + } + match_fields { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 28490145 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 256 +} +tables { + preamble { + id: 35202849 + name: "FabricEgress.upf.gtpu_encap" + alias: "gtpu_encap" + } + action_refs { + id: 18154440 + } + action_refs { + id: 25872588 + } + size: 1 +} +tables { + preamble { + id: 36860953 + name: "FabricEgress.int_egress.queue_latency_thresholds" + alias: "queue_latency_thresholds" + } + match_fields { + id: 1 + name: "egress_qid" + bitwidth: 5 + match_type: EXACT + } + match_fields { + id: 2 + name: "hop_latency_upper" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 3 + name: "hop_latency_lower" + bitwidth: 16 + match_type: RANGE + } + action_refs { + id: 22415037 + } + action_refs { + id: 19702294 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 128 +} +tables { + preamble { + id: 40475827 + name: "FabricEgress.int_egress.config" + alias: "config" + } + action_refs { + id: 22425991 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 1 +} +tables { + preamble { + id: 46071383 + name: "FabricEgress.int_egress.report" + alias: "report" + } + match_fields { + id: 1 + name: "bmd_type" + bitwidth: 8 + match_type: EXACT + } + match_fields { + id: 2 + name: "mirror_type" + bitwidth: 3 + match_type: EXACT + } + match_fields { + id: 3 + name: "int_report_type" + bitwidth: 3 + match_type: EXACT + } + action_refs { + id: 30783845 + } + action_refs { + id: 22769901 + } + action_refs { + id: 32486459 + } + action_refs { + id: 25343592 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 325056546 + size: 6 +} +actions { + preamble { + id: 28485346 + name: "nop" + alias: "nop" + } +} +actions { + preamble { + id: 21257015 + name: "NoAction" + alias: "NoAction" + annotations: "@noWarn(\"unused\")" + } +} +actions { + preamble { + id: 21929788 + name: "FabricIngress.stats.count" + alias: "FabricIngress.stats.count" + } + params { + id: 1 + name: "flow_id" + bitwidth: 10 + } +} +actions { + preamble { + id: 17164167 + name: "FabricIngress.filtering.deny" + alias: "deny" + } +} +actions { + preamble { + id: 24158268 + name: "FabricIngress.filtering.permit" + alias: "permit" + } + params { + id: 1 + name: "port_type" + bitwidth: 2 + } +} +actions { + preamble { + id: 24266015 + name: "FabricIngress.filtering.permit_with_internal_vlan" + alias: "permit_with_internal_vlan" + } + params { + id: 1 + name: "vlan_id" + bitwidth: 12 + } + params { + id: 2 + name: "port_type" + bitwidth: 2 + } +} +actions { + preamble { + id: 25032921 + name: "FabricIngress.filtering.set_forwarding_type" + alias: "set_forwarding_type" + } + params { + id: 1 + name: "fwd_type" + bitwidth: 3 + } +} +actions { + preamble { + id: 29734112 + name: "FabricIngress.forwarding.set_int_drop_reason" + alias: "set_int_drop_reason" + } + params { + id: 1 + name: "drop_reason" + bitwidth: 8 + } +} +actions { + preamble { + id: 21791748 + name: "FabricIngress.forwarding.set_next_id_bridging" + alias: "set_next_id_bridging" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 30066030 + name: "FabricIngress.forwarding.pop_mpls_and_next" + alias: "pop_mpls_and_next" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 19792090 + name: "FabricIngress.forwarding.set_next_id_routing_v4" + alias: "set_next_id_routing_v4" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 29124955 + name: "FabricIngress.forwarding.nop_routing_v4" + alias: "nop_routing_v4" + } +} +actions { + preamble { + id: 17639597 + name: "FabricIngress.forwarding.drop_routing_v4" + alias: "drop_routing_v4" + } +} +actions { + preamble { + id: 21856023 + name: "FabricIngress.forwarding.set_next_id_routing_v6" + alias: "set_next_id_routing_v6" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 24646532 + name: "FabricIngress.forwarding.drop_routing_v6" + alias: "drop_routing_v6" + } +} +actions { + preamble { + id: 22765924 + name: "FabricIngress.pre_next.set_mpls_label" + alias: "set_mpls_label" + } + params { + id: 1 + name: "label" + bitwidth: 20 + } +} +actions { + preamble { + id: 33475378 + name: "FabricIngress.pre_next.set_vlan" + alias: "set_vlan" + } + params { + id: 1 + name: "vlan_id" + bitwidth: 12 + } +} +actions { + preamble { + id: 23623126 + name: "FabricIngress.acl.set_next_id_acl" + alias: "set_next_id_acl" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 21161133 + name: "FabricIngress.acl.copy_to_cpu" + alias: "copy_to_cpu" + } +} +actions { + preamble { + id: 23579892 + name: "FabricIngress.acl.punt_to_cpu" + alias: "punt_to_cpu" + } +} +actions { + preamble { + id: 23570973 + name: "FabricIngress.acl.drop" + alias: "acl.drop" + } +} +actions { + preamble { + id: 24507494 + name: "FabricIngress.acl.set_output_port" + alias: "set_output_port" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } +} +actions { + preamble { + id: 29607214 + name: "FabricIngress.acl.nop_acl" + alias: "nop_acl" + } +} +actions { + preamble { + id: 27301117 + name: "FabricIngress.next.output_hashed" + alias: "output_hashed" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } +} +actions { + preamble { + id: 20985706 + name: "FabricIngress.next.routing_hashed" + alias: "routing_hashed" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + params { + id: 2 + name: "smac" + bitwidth: 48 + } + params { + id: 3 + name: "dmac" + bitwidth: 48 + } +} +actions { + preamble { + id: 21629581 + name: "FabricIngress.next.set_mcast_group_id" + alias: "set_mcast_group_id" + } + params { + id: 1 + name: "group_id" + bitwidth: 16 + } +} +actions { + preamble { + id: 23637707 + name: "FabricIngress.next.reset_mcast_group_id" + alias: "reset_mcast_group_id" + } +} +actions { + preamble { + id: 23786376 + name: "FabricIngress.slice_tc_classifier.set_slice_id_tc" + alias: "set_slice_id_tc" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } +} +actions { + preamble { + id: 30111108 + name: "FabricIngress.slice_tc_classifier.no_classification" + alias: "no_classification" + } +} +actions { + preamble { + id: 25983516 + name: "FabricIngress.slice_tc_classifier.trust_dscp" + alias: "trust_dscp" + } +} +actions { + preamble { + id: 32116918 + name: "FabricIngress.qos.set_queue" + alias: "set_queue" + } + params { + id: 1 + name: "qid" + bitwidth: 5 + } +} +actions { + preamble { + id: 28214351 + name: "FabricIngress.qos.meter_drop" + alias: "meter_drop" + } +} +actions { + preamble { + id: 23587909 + name: "FabricIngress.qos.set_default_tc" + alias: "set_default_tc" + } + params { + id: 1 + name: "tc" + bitwidth: 2 + } +} +actions { + preamble { + id: 30131500 + name: "FabricIngress.upf.iface_access" + alias: "iface_access" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } +} +actions { + preamble { + id: 19786139 + name: "FabricIngress.upf.iface_core" + alias: "iface_core" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } +} +actions { + preamble { + id: 19466514 + name: "FabricIngress.upf.iface_dbuf" + alias: "iface_dbuf" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } +} +actions { + preamble { + id: 30204657 + name: "FabricIngress.upf.iface_miss" + alias: "iface_miss" + } +} +actions { + preamble { + id: 20368148 + name: "FabricIngress.upf.set_uplink_session_miss" + alias: "set_uplink_session_miss" + } +} +actions { + preamble { + id: 24328070 + name: "FabricIngress.upf.set_uplink_session_drop" + alias: "set_uplink_session_drop" + } +} +actions { + preamble { + id: 32013192 + name: "FabricIngress.upf.set_downlink_session_miss" + alias: "set_downlink_session_miss" + } +} +actions { + preamble { + id: 24509779 + name: "FabricIngress.upf.set_downlink_session_drop" + alias: "set_downlink_session_drop" + } +} +actions { + preamble { + id: 16984383 + name: "FabricIngress.upf.set_downlink_session" + alias: "set_downlink_session" + } + params { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + } + params { + id: 2 + name: "session_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 31195396 + name: "FabricIngress.upf.set_downlink_session_buf" + alias: "set_downlink_session_buf" + } + params { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + } + params { + id: 2 + name: "session_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 21581660 + name: "FabricIngress.upf.set_downlink_session_buf_drop" + alias: "set_downlink_session_buf_drop" + } +} +actions { + preamble { + id: 31219743 + name: "FabricIngress.upf.set_uplink_session" + alias: "set_uplink_session" + } + params { + id: 1 + name: "session_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 20624836 + name: "FabricIngress.upf.uplink_drop_miss" + alias: "uplink_drop_miss" + } +} +actions { + preamble { + id: 26608757 + name: "FabricIngress.upf.downlink_drop_miss" + alias: "downlink_drop_miss" + } +} +actions { + preamble { + id: 28764209 + name: "FabricIngress.upf.uplink_drop" + alias: "uplink_drop" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } +} +actions { + preamble { + id: 30742995 + name: "FabricIngress.upf.downlink_drop" + alias: "downlink_drop" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } +} +actions { + preamble { + id: 25805419 + name: "FabricIngress.upf.app_fwd" + alias: "app_fwd" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } + params { + id: 3 + name: "app_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 23536134 + name: "FabricIngress.upf.downlink_fwd_encap" + alias: "downlink_fwd_encap" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } + params { + id: 3 + name: "teid" + bitwidth: 32 + } + params { + id: 4 + name: "qfi" + bitwidth: 6 + } + params { + id: 5 + name: "app_meter_idx" + bitwidth: 15 + } +} +actions { + preamble { + id: 26011763 + name: "FabricIngress.upf.set_routing_ipv4_dst" + alias: "set_routing_ipv4_dst" + } + params { + id: 1 + name: "tun_dst_addr" + bitwidth: 32 + } +} +actions { + preamble { + id: 26631629 + name: "FabricIngress.upf.set_app_id" + alias: "set_app_id" + } + params { + id: 1 + name: "app_id" + bitwidth: 8 + } +} +actions { + preamble { + id: 28119063 + name: "FabricIngress.upf.recirc_allow" + alias: "recirc_allow" + } +} +actions { + preamble { + id: 19222227 + name: "FabricIngress.upf.recirc_deny" + alias: "recirc_deny" + } +} +actions { + preamble { + id: 29186084 + name: "FabricIngress.upf.recirc_miss" + alias: "recirc_miss" + } +} +actions { + preamble { + id: 25078550 + name: "FabricIngress.int_watchlist.mark_to_report" + alias: "mark_to_report" + } +} +actions { + preamble { + id: 28396787 + name: "FabricIngress.int_watchlist.no_report" + alias: "no_report" + } +} +actions { + preamble { + id: 20118842 + name: "FabricIngress.int_watchlist.no_report_collector" + alias: "no_report_collector" + } +} +actions { + preamble { + id: 26838724 + name: "FabricEgress.stats.count" + alias: "FabricEgress.stats.count" + } +} +actions { + preamble { + id: 32804382 + name: "FabricEgress.pkt_io_egress.set_switch_info" + alias: "set_switch_info" + } + params { + id: 1 + name: "cpu_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } +} +actions { + preamble { + id: 30307755 + name: "FabricEgress.egress_next.push_vlan" + alias: "push_vlan" + } +} +actions { + preamble { + id: 17183246 + name: "FabricEgress.egress_next.pop_vlan" + alias: "pop_vlan" + } +} +actions { + preamble { + id: 30812542 + name: "FabricEgress.egress_next.drop" + alias: "egress_next.drop" + } +} +actions { + preamble { + id: 27951287 + name: "FabricEgress.dscp_rewriter.rewrite" + alias: "rewrite" + } +} +actions { + preamble { + id: 24120545 + name: "FabricEgress.dscp_rewriter.clear" + alias: "clear" + } +} +actions { + preamble { + id: 28490145 + name: "FabricEgress.upf.load_tunnel_params" + alias: "load_tunnel_params" + } + params { + id: 1 + name: "tunnel_src_port" + bitwidth: 16 + } + params { + id: 2 + name: "tunnel_src_addr" + bitwidth: 32 + } + params { + id: 3 + name: "tunnel_dst_addr" + bitwidth: 32 + } +} +actions { + preamble { + id: 18154440 + name: "FabricEgress.upf.gtpu_only" + alias: "gtpu_only" + } +} +actions { + preamble { + id: 25872588 + name: "FabricEgress.upf.gtpu_with_psc" + alias: "gtpu_with_psc" + } +} +actions { + preamble { + id: 22415037 + name: "FabricEgress.int_egress.check_quota" + alias: "check_quota" + } +} +actions { + preamble { + id: 19702294 + name: "FabricEgress.int_egress.reset_quota" + alias: "reset_quota" + } +} +actions { + preamble { + id: 22425991 + name: "FabricEgress.int_egress.set_config" + alias: "set_config" + } + params { + id: 1 + name: "hop_latency_mask" + bitwidth: 32 + } + params { + id: 2 + name: "timestamp_mask" + bitwidth: 48 + } +} +actions { + preamble { + id: 30783845 + name: "FabricEgress.int_egress.do_local_report_encap" + alias: "do_local_report_encap" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "switch_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 22769901 + name: "FabricEgress.int_egress.do_local_report_encap_mpls" + alias: "do_local_report_encap_mpls" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "mon_label" + bitwidth: 20 + } + params { + id: 5 + name: "switch_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 32486459 + name: "FabricEgress.int_egress.do_drop_report_encap" + alias: "do_drop_report_encap" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "switch_id" + bitwidth: 32 + } +} +actions { + preamble { + id: 25343592 + name: "FabricEgress.int_egress.do_drop_report_encap_mpls" + alias: "do_drop_report_encap_mpls" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "mon_label" + bitwidth: 20 + } + params { + id: 5 + name: "switch_id" + bitwidth: 32 + } +} +action_profiles { + preamble { + id: 289544276 + name: "FabricIngress.next.hashed_profile" + alias: "hashed_profile" + } + table_ids: 47960972 + with_selector: true + size: 16 + max_group_size: 16 +} +counters { + preamble { + id: 309010261 + name: "FabricIngress.filtering.fwd_type_counter" + alias: "fwd_type_counter" + } + spec { + unit: BOTH + } + size: 8 +} +counters { + preamble { + id: 316677328 + name: "FabricIngress.upf.terminations_counter" + alias: "FabricIngress.upf.terminations_counter" + } + spec { + unit: BOTH + } + size: 4096 +} +counters { + preamble { + id: 314209362 + name: "FabricEgress.upf.terminations_counter" + alias: "FabricEgress.upf.terminations_counter" + } + spec { + unit: BOTH + } + size: 4096 +} +direct_counters { + preamble { + id: 333776332 + name: "FabricIngress.stats.flow_counter" + alias: "FabricIngress.stats.flow_counter" + } + spec { + unit: BOTH + } + direct_table_id: 41243186 +} +direct_counters { + preamble { + id: 326221069 + name: "FabricIngress.filtering.ingress_port_vlan_counter" + alias: "ingress_port_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43310977 +} +direct_counters { + preamble { + id: 335473470 + name: "FabricIngress.filtering.fwd_classifier_counter" + alias: "fwd_classifier_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49718154 +} +direct_counters { + preamble { + id: 330959985 + name: "FabricIngress.forwarding.bridging_counter" + alias: "bridging_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43623757 +} +direct_counters { + preamble { + id: 318961579 + name: "FabricIngress.forwarding.mpls_counter" + alias: "mpls_counter" + } + spec { + unit: BOTH + } + direct_table_id: 37768578 +} +direct_counters { + preamble { + id: 333425635 + name: "FabricIngress.forwarding.routing_v4_counter" + alias: "routing_v4_counter" + } + spec { + unit: BOTH + } + direct_table_id: 41754650 +} +direct_counters { + preamble { + id: 324042090 + name: "FabricIngress.forwarding.routing_v6_counter" + alias: "routing_v6_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49342721 +} +direct_counters { + preamble { + id: 330020245 + name: "FabricIngress.pre_next.next_mpls_counter" + alias: "next_mpls_counter" + } + spec { + unit: BOTH + } + direct_table_id: 36626242 +} +direct_counters { + preamble { + id: 333692067 + name: "FabricIngress.pre_next.next_vlan_counter" + alias: "next_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 48011802 +} +direct_counters { + preamble { + id: 319194241 + name: "FabricIngress.acl.acl_counter" + alias: "acl_counter" + } + spec { + unit: BOTH + } + direct_table_id: 44104738 +} +direct_counters { + preamble { + id: 322798228 + name: "FabricIngress.next.hashed_counter" + alias: "hashed_counter" + } + spec { + unit: BOTH + } + direct_table_id: 47960972 +} +direct_counters { + preamble { + id: 319194968 + name: "FabricIngress.next.multicast_counter" + alias: "multicast_counter" + } + spec { + unit: BOTH + } + direct_table_id: 40619180 +} +direct_counters { + preamble { + id: 334706097 + name: "FabricIngress.slice_tc_classifier.classifier_stats" + alias: "classifier_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 34606298 +} +direct_counters { + preamble { + id: 327743278 + name: "FabricIngress.qos.queues_stats" + alias: "queues_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 36435258 +} +direct_counters { + preamble { + id: 335275671 + name: "FabricIngress.upf.recirc_stats" + alias: "recirc_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 34400315 +} +direct_counters { + preamble { + id: 328581521 + name: "FabricIngress.int_watchlist.watchlist_counter" + alias: "watchlist_counter" + } + spec { + unit: BOTH + } + direct_table_id: 40748488 +} +direct_counters { + preamble { + id: 334508337 + name: "FabricEgress.stats.flow_counter" + alias: "FabricEgress.stats.flow_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43851059 +} +direct_counters { + preamble { + id: 318892680 + name: "FabricEgress.egress_next.egress_vlan_counter" + alias: "egress_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49262446 +} +direct_counters { + preamble { + id: 325056546 + name: "FabricEgress.int_egress.report_counter" + alias: "report_counter" + } + spec { + unit: BOTH + } + direct_table_id: 46071383 +} +meters { + preamble { + id: 348573637 + name: "FabricIngress.qos.slice_tc_meter" + alias: "slice_tc_meter" + } + spec { + unit: BYTES + } + size: 64 +} +meters { + preamble { + id: 345152250 + name: "FabricIngress.upf.session_meter" + alias: "session_meter" + } + spec { + unit: BYTES + } + size: 20000 +} +meters { + preamble { + id: 343216442 + name: "FabricIngress.upf.app_meter" + alias: "app_meter" + } + spec { + unit: BYTES + } + size: 20000 +} +controller_packet_metadata { + preamble { + id: 81826293 + name: "packet_in" + alias: "packet_in" + annotations: "@controller_header(\"packet_in\")" + } + metadata { + id: 1 + name: "ingress_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + metadata { + id: 2 + name: "_pad0" + bitwidth: 7 + } +} +controller_packet_metadata { + preamble { + id: 76689799 + name: "packet_out" + alias: "packet_out" + annotations: "@controller_header(\"packet_out\")" + } + metadata { + id: 1 + name: "pad0" + annotations: "@padding" + bitwidth: 7 + } + metadata { + id: 2 + name: "egress_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + metadata { + id: 3 + name: "pad1" + annotations: "@padding" + bitwidth: 3 + } + metadata { + id: 4 + name: "queue_id" + bitwidth: 5 + } + metadata { + id: 5 + name: "pad2" + annotations: "@padding" + bitwidth: 5 + } + metadata { + id: 6 + name: "cpu_loopback_mode" + bitwidth: 2 + } + metadata { + id: 7 + name: "do_forwarding" + bitwidth: 1 + } + metadata { + id: 8 + name: "pad3" + annotations: "@padding" + bitwidth: 16 + } + metadata { + id: 9 + name: "pad4" + annotations: "@padding" + bitwidth: 48 + } + metadata { + id: 10 + name: "ether_type" + bitwidth: 16 + } +} +registers { + preamble { + id: 376533241 + name: "FabricEgress.int_egress.seq_number" + alias: "seq_number" + annotations: "@hidden" + } + type_spec { + bitstring { + bit { + bitwidth: 32 + } + } + } + size: 1024 +} +type_info { + serializable_enums { + key: "BridgedMdType_t" + value { + underlying_type { + bitwidth: 8 + } + members { + name: "INVALID" + value: "\000" + } + members { + name: "INGRESS_TO_EGRESS" + value: "\001" + } + members { + name: "EGRESS_MIRROR" + value: "\002" + } + members { + name: "INGRESS_MIRROR" + value: "\003" + } + members { + name: "INT_INGRESS_DROP" + value: "\004" + } + members { + name: "DEFLECTED" + value: "\005" + } + } + } + serializable_enums { + key: "CpuLoopbackMode_t" + value { + underlying_type { + bitwidth: 2 + } + members { + name: "DISABLED" + value: "\000" + } + members { + name: "DIRECT" + value: "\001" + } + members { + name: "INGRESS" + value: "\002" + } + } + } + serializable_enums { + key: "FabricMirrorType_t" + value { + underlying_type { + bitwidth: 3 + } + members { + name: "INVALID" + value: "\000" + } + members { + name: "INT_REPORT" + value: "\001" + } + members { + name: "PACKET_IN" + value: "\002" + } + } + } + serializable_enums { + key: "PortType_t" + value { + underlying_type { + bitwidth: 2 + } + members { + name: "UNKNOWN" + value: "\000" + } + members { + name: "EDGE" + value: "\001" + } + members { + name: "INFRA" + value: "\002" + } + members { + name: "INTERNAL" + value: "\003" + } + } + } + new_types { + key: "FabricPortId_t" + value { + original_type { + bitstring { + bit { + bitwidth: 9 + } + } + } + } + } +} diff --git a/src/tests/p4-sd-fabric-svc-upf/run_test_01_bootstrap.sh b/src/tests/p4-sd-fabric-svc-upf/run_test_01_bootstrap.sh new file mode 100755 index 0000000000000000000000000000000000000000..ee3121da03ece2e500bf8c096c257c23bd2e6c3c --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/run_test_01_bootstrap.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +# make sure to source the following scripts: +# - my_deploy.sh +# - tfs_runtime_env_vars.sh + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_bootstrap.py diff --git a/src/tests/p4-fabric-tna/run_test_03b_service_deprovision_l2.sh b/src/tests/p4-sd-fabric-svc-upf/run_test_02_service_provision_upf.sh similarity index 77% rename from src/tests/p4-fabric-tna/run_test_03b_service_deprovision_l2.sh rename to src/tests/p4-sd-fabric-svc-upf/run_test_02_service_provision_upf.sh index 4bd4edb4556aebe87dfe84ae073ca8dc81878251..22cfd65dea87ca8010a74b64ed939023d9602f32 100755 --- a/src/tests/p4-fabric-tna/run_test_03b_service_deprovision_l2.sh +++ b/src/tests/p4-sd-fabric-svc-upf/run_test_02_service_provision_upf.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2022-2025 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,4 +14,4 @@ # limitations under the License. source tfs_runtime_env_vars.sh -python3 -m pytest --verbose src/tests/p4-fabric-tna/tests-service/test_functional_service_deprovision_l2.py +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_provision_upf.py diff --git a/src/tests/p4-sd-fabric-svc-upf/run_test_03_service_deprovision_upf.sh b/src/tests/p4-sd-fabric-svc-upf/run_test_03_service_deprovision_upf.sh new file mode 100755 index 0000000000000000000000000000000000000000..248b09f3f6620332f4a67936e591fada8d62bd31 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/run_test_03_service_deprovision_upf.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_deprovision_upf.py diff --git a/src/tests/p4-sd-fabric-svc-upf/run_test_04_cleanup.sh b/src/tests/p4-sd-fabric-svc-upf/run_test_04_cleanup.sh new file mode 100755 index 0000000000000000000000000000000000000000..caf69ba612d54814bd9ae1547cd08adddf329804 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/run_test_04_cleanup.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_cleanup.py diff --git a/src/tests/p4-sd-fabric-svc-upf/run_test_05_purge.sh b/src/tests/p4-sd-fabric-svc-upf/run_test_05_purge.sh new file mode 100755 index 0000000000000000000000000000000000000000..fa46662befa3d0b598d6409e24dd021701e0bfe1 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/run_test_05_purge.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +source tfs_runtime_env_vars.sh +python3 -m pytest --verbose src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_purge.py diff --git a/src/tests/p4-sd-fabric-svc-upf/setup.sh b/src/tests/p4-sd-fabric-svc-upf/setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..d4979ff45c575bb797dea0cc90e9c0520356cc87 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/setup.sh @@ -0,0 +1,22 @@ +#! /bin/bash +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + + +export POD_NAME=$(kubectl get pods -n=tfs | grep device | awk '{print $1}') + +kubectl exec ${POD_NAME} -n=tfs -c=server -- mkdir -p /root/p4 + +kubectl cp src/tests/p4-sd-fabric-svc-upf/p4src/p4info.txt tfs/${POD_NAME}:/root/p4 -c=server +kubectl cp src/tests/p4-sd-fabric-svc-upf/p4src/bmv2.json tfs/${POD_NAME}:/root/p4 -c=server diff --git a/src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_deprovision_upf.py b/src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_deprovision_upf.py new file mode 100644 index 0000000000000000000000000000000000000000..1a6825e1700b56e11fb04da901fa38fe45cfc89a --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_deprovision_upf.py @@ -0,0 +1,88 @@ +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging +from common.proto.context_pb2 import ServiceId, ServiceStatusEnum, ServiceTypeEnum +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Service import json_service_id +from context.client.ContextClient import ContextClient +from service.client.ServiceClient import ServiceClient +from tests.Fixtures import context_client, service_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import * + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +DEV_NB = 5 +P4_DEV_NB = 1 +UE_NB = 1 + +BASIC_UPF_RULES = 22 +PER_UE_RULES = 4 + +def test_service_deletion_upf( + context_client : ContextClient, # pylint: disable=redefined-outer-name + service_client : ServiceClient # pylint: disable=redefined-outer-name +) -> None: + # Get the current number of devices + response = context_client.ListDevices(ADMIN_CONTEXT_ID) + LOGGER.warning('Devices[{:d}] = {:s}'.format(len(response.devices), grpc_message_to_json_string(response))) + + # Total devices + dev_nb = len(response.devices) + assert dev_nb == DEV_NB + + # P4 devices + p4_dev_nb = identify_number_of_p4_devices(response.devices) + assert p4_dev_nb == P4_DEV_NB + + # Get the current number of rules in the P4 devices + p4_rules_before_deletion = get_number_of_rules(response.devices) + + # Get the current number of services + response = context_client.ListServices(ADMIN_CONTEXT_ID) + services_nb_before_deletion = len(response.services) + assert verify_active_service_type(response.services, ServiceTypeEnum.SERVICETYPE_UPF) + + for service in response.services: + # Ignore services of other types + if service.service_type != ServiceTypeEnum.SERVICETYPE_UPF: + continue + + service_id = service.service_id + assert service_id + + service_uuid = service_id.service_uuid.uuid + context_uuid = service_id.context_id.context_uuid.uuid + assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE + + # Delete L2 service + service_client.DeleteService(ServiceId(**json_service_id(service_uuid, json_context_id(context_uuid)))) + + # Get an updated view of the services + response = context_client.ListServices(ADMIN_CONTEXT_ID) + services_nb_after_deletion = len(response.services) + assert services_nb_after_deletion == services_nb_before_deletion - 1, "Exactly one service must be deleted" + + # Get an updated view of the devices + response = context_client.ListDevices(ADMIN_CONTEXT_ID) + p4_rules_after_deletion = get_number_of_rules(response.devices) + + rules_diff = p4_rules_before_deletion - p4_rules_after_deletion + + desired_rules = (P4_DEV_NB * BASIC_UPF_RULES) + (UE_NB * PER_UE_RULES) + + assert p4_rules_after_deletion < p4_rules_before_deletion, "UPF service must contain some rules" + assert rules_diff == desired_rules, \ + "UPF service must contain {} rules per device".format(desired_rules) diff --git a/src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_provision_upf.py b/src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_provision_upf.py new file mode 100644 index 0000000000000000000000000000000000000000..dfbd7567df1ef7946588a389dd15df8a72031c26 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/tests-service/test_functional_service_provision_upf.py @@ -0,0 +1,94 @@ +# Copyright 2022-2026 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging +import os +from common.proto.context_pb2 import ServiceTypeEnum +from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results +from common.tools.grpc.Tools import grpc_message_to_json_string +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from service.client.ServiceClient import ServiceClient +from tests.Fixtures import context_client, device_client, service_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import * + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +DEV_NB = 5 +P4_DEV_NB = 1 +UE_NB = 1 + +BASIC_UPF_RULES = 22 +PER_UE_RULES = 4 + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +DESC_FILE_SERVICE_P4_UPF = os.path.join(TEST_PATH, 'service-upf-ui.json') +assert os.path.exists(DESC_FILE_SERVICE_P4_UPF),\ + "Invalid path to the UPF service descriptor" + +def test_service_creation_upf( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient, # pylint: disable=redefined-outer-name + service_client : ServiceClient # pylint: disable=redefined-outer-name +) -> None: + # Get the current number of services + response = context_client.ListServices(ADMIN_CONTEXT_ID) + services_nb_before = len(response.services) + + # Get the current number of devices + response = context_client.ListDevices(ADMIN_CONTEXT_ID) + LOGGER.warning('Devices[{:d}] = {:s}'.format(len(response.devices), grpc_message_to_json_string(response))) + + # Total devices + dev_nb = len(response.devices) + assert dev_nb == DEV_NB + + # P4 devices + p4_dev_nb = identify_number_of_p4_devices(response.devices) + assert p4_dev_nb == P4_DEV_NB + + # Get the current number of rules in the P4 devices + p4_rules_before = get_number_of_rules(response.devices) + + # Load service + descriptor_loader = DescriptorLoader( + descriptors_file=DESC_FILE_SERVICE_P4_UPF, + context_client=context_client, device_client=device_client, service_client=service_client + ) + results = descriptor_loader.process() + check_descriptor_load_results(results, descriptor_loader) + + # Get an updated view of the services + response = context_client.ListServices(ADMIN_CONTEXT_ID) + services_nb_after = len(response.services) + assert services_nb_after == services_nb_before + 1, "Exactly one service must be in place" + assert verify_active_service_type(response.services, ServiceTypeEnum.SERVICETYPE_UPF) + + # Get an updated view of the devices + response = context_client.ListDevices(ADMIN_CONTEXT_ID) + p4_rules_after = get_number_of_rules(response.devices) + + rules_diff = p4_rules_after - p4_rules_before + + desired_rules = (P4_DEV_NB * BASIC_UPF_RULES) + (UE_NB * PER_UE_RULES) + + assert p4_rules_after > p4_rules_before, "UPF service must install some rules" + assert rules_diff == desired_rules, \ + "UPF service must install {} rules per device".format(desired_rules) diff --git a/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_bootstrap.py b/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_bootstrap.py new file mode 100644 index 0000000000000000000000000000000000000000..b4438d6056896a201077c7d73e458f8aae07bac0 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_bootstrap.py @@ -0,0 +1,80 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging, os, time +from common.proto.context_pb2 import DeviceOperationalStatusEnum, Empty +from common.tools.descriptor.Loader import DescriptorLoader, \ + check_descriptor_load_results, validate_empty_scenario +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from tests.Fixtures import context_client, device_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_TOPOLOGY = os.path.join(TEST_PATH, 'all.json') +assert os.path.exists(DESC_TOPOLOGY), "Invalid path to the topology descriptor" + +def test_scenario_bootstrap( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient # pylint: disable=redefined-outer-name +) -> None: + """ + This test assumes that the environment is in a clean state (empty) + before bootstrapping the P4 topology. + It loads the topology descriptor and verifies that no other services + or slices are created. + """ + validate_empty_scenario(context_client) + + descriptor_loader = DescriptorLoader( + descriptors_file=DESC_TOPOLOGY, context_client=context_client, device_client=device_client) + results = descriptor_loader.process() + check_descriptor_load_results(results, descriptor_loader) + descriptor_loader.validate() + + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + assert len(response.service_ids) == 0 + assert len(response.slice_ids) == 0 + +def test_scenario_devices_enabled( + context_client : ContextClient # pylint: disable=redefined-outer-name +) -> None: + """ + This test validates that the devices are enabled. + """ + DEVICE_OP_STATUS_ENABLED = DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_ENABLED + + num_devices = -1 + num_devices_enabled, num_retry = 0, 0 + while (num_devices != num_devices_enabled) and (num_retry < 10): + time.sleep(1.0) + response = context_client.ListDevices(Empty()) + num_devices = len(response.devices) + num_devices_enabled = 0 + for device in response.devices: + if device.device_operational_status != DEVICE_OP_STATUS_ENABLED: continue + num_devices_enabled += 1 + LOGGER.info('Num Devices enabled: {:d}/{:d}'.format(num_devices_enabled, num_devices)) + num_retry += 1 + assert num_devices_enabled == num_devices diff --git a/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_cleanup.py b/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_cleanup.py new file mode 100644 index 0000000000000000000000000000000000000000..fe4b48493fb9a688b24674f8fa3d8a6ca94f0269 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_cleanup.py @@ -0,0 +1,48 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import os +import logging +from common.tools.descriptor.Loader import DescriptorLoader, validate_empty_scenario +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from tests.Fixtures import context_client, device_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +TEST_PATH = os.path.join( + os.path.dirname(os.path.dirname( + os.path.abspath(__file__) + )) + '/descriptors') +assert os.path.exists(TEST_PATH), "Invalid path to tests" + +# Topology descriptor +DESC_TOPOLOGY = os.path.join(TEST_PATH, 'all.json') +assert os.path.exists(DESC_TOPOLOGY), "Invalid path to the topology descriptor" + +def test_scenario_cleanup( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient # pylint: disable=redefined-outer-name +) -> None: + # Verify the scenario has no services/slices + response = context_client.GetContext(ADMIN_CONTEXT_ID) + + # Unload topology and validate empty scenario + descriptor_loader = DescriptorLoader( + descriptors_file=DESC_TOPOLOGY, context_client=context_client, device_client=device_client) + descriptor_loader.validate() + descriptor_loader.unload() + validate_empty_scenario(context_client) diff --git a/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_purge.py b/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_purge.py new file mode 100644 index 0000000000000000000000000000000000000000..94e2e2388709fbdb569c398e8247f9d01af15ab2 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/tests-setup/test_functional_purge.py @@ -0,0 +1,83 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# 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. + +import logging +from common.proto.context_pb2 import ServiceId, DeviceId, LinkId, ServiceStatusEnum +from common.tools.grpc.Tools import grpc_message_to_json_string +from common.tools.object_factory.Context import json_context_id +from common.tools.object_factory.Device import json_device_id +from common.tools.object_factory.Service import json_service_id +from context.client.ContextClient import ContextClient +from device.client.DeviceClient import DeviceClient +from service.client.ServiceClient import ServiceClient +from tests.Fixtures import context_client, device_client, service_client # pylint: disable=unused-import +from tests.tools.test_tools_p4 import ADMIN_CONTEXT_ID + +LOGGER = logging.getLogger(__name__) +LOGGER.setLevel(logging.DEBUG) + +def test_clean_services( + context_client : ContextClient, # pylint: disable=redefined-outer-name + service_client : ServiceClient # pylint: disable=redefined-outer-name +) -> None: + response = context_client.ListServices(ADMIN_CONTEXT_ID) + LOGGER.warning('Services[{:d}] = {:s}'.format(len(response.services), grpc_message_to_json_string(response))) + + for service in response.services: + service_id = service.service_id + assert service_id + + service_uuid = service_id.service_uuid.uuid + context_uuid = service_id.context_id.context_uuid.uuid + assert service.service_status.service_status == ServiceStatusEnum.SERVICESTATUS_ACTIVE + + # Delete service + service_client.DeleteService(ServiceId(**json_service_id(service_uuid, json_context_id(context_uuid)))) + +def test_clean_links( + context_client : ContextClient, # pylint: disable=redefined-outer-name +) -> None: + response = context_client.ListLinks(ADMIN_CONTEXT_ID) + + for link in response.links: + link_id = link.link_id + + # Delete link + context_client.RemoveLink(LinkId(**link_id)) + +def test_clean_devices( + context_client : ContextClient, # pylint: disable=redefined-outer-name + device_client : DeviceClient # pylint: disable=redefined-outer-name +) -> None: + response = context_client.ListDevices(ADMIN_CONTEXT_ID) + LOGGER.warning('Devices[{:d}] = {:s}'.format(len(response.devices), grpc_message_to_json_string(response))) + + for device in response.devices: + device_uuid = device.device_id.device_uuid.uuid + device_json = json_device_id(device_uuid) + + # Delete device + device_client.DeleteDevice(DeviceId(**device_json)) + +def test_clean_context( + context_client : ContextClient # pylint: disable=redefined-outer-name +) -> None: + # Verify the scenario has no services/slices + response = context_client.ListTopologies(ADMIN_CONTEXT_ID) + + for topology in response.topologies: + topology_id = topology.topology_id + response = context_client.RemoveTopology(topology_id) + + response = context_client.RemoveContext(ADMIN_CONTEXT_ID) diff --git a/src/tests/p4-sd-fabric-svc-upf/topology/README.md b/src/tests/p4-sd-fabric-svc-upf/topology/README.md new file mode 100644 index 0000000000000000000000000000000000000000..1ce9cb1dc508020f699a06be47709692b2481575 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/topology/README.md @@ -0,0 +1,135 @@ +# P4 5G UPF + +For a P4 switch to act as a 5G UPF, you need a machine with at least 3 network interfaces as follows: + +- a management interface `mgmt` for the switch to communicate with the control plane (i.e., TFS controller) +- a left-hand side data plane interface `dp-1` towards the 5G gNB +- a right-hand side data plane interface `dp-2` towards the Data Network + +Also, due to Stratum's restrictions, the desired OS of the machine shall be `Ubuntu server 20.04 LTS`. + +To build Stratum on this machine, follow the steps [here](https://github.com/stratum/stratum/blob/main/stratum/hal/bin/bmv2/README.md). +It is preferred to run Stratum as a binary. + +### Steps to setup the 5G UPF P4 switch + +Follow the steps below to prepare the P4 switch to act as a UPF. + +```bash +nano p4-switch-conf-common.sh + +HOST_IFACE_EXT="mgmt" # Interface towards TFS (management, not part of the switch) +SW_IFACE_DATA_LEFT="dp-1" # Switch interface towards the 5G gNB +SW_IFACE_DATA_RIGHT="dp-2" # Switch interface towards the Data Network +``` + +### 1: Setup environment + +Edit the `p4-switch-setup.sh` script to modify the subnets' information according to your network setup: + +```bash +nano p4-switch-setup.sh + +# Subnets managed by the switch +DOMAIN_IP_LEFT="10.10.1.1/24" # Left-hand side subnet (5G gNB) +DOMAIN_IP_RIGHT="10.10.2.1/24" # Right-hand side subnet (DNN) +``` + +Once your network setup is applied, run the `p4-switch-setup.sh` script as follows: + +```bash +sudo bash p4-switch-setup.sh +``` + +### 2: Deploy Stratum + +First you need to configure the chassis configuration file with the correct network interfaces names. +Ensure that the interface names listed in the chassis configuration file agree with the ones you added in `p4-switch-conf-common.sh`. + +```bash +cat p4-switch-three-port-chassis-config-phy.pb.txt + +# Copyright 2018-present Open Networking Foundation +# SPDX-License-Identifier: Apache-2.0 + +description: "Chassis configuration for a single Stratum bmv2 switch with 3 ports" +chassis { + platform: PLT_P4_SOFT_SWITCH + name: "bmv2-1" +} +nodes { + id: 1 + slot: 1 + index: 1 +} +singleton_ports { + id: 1 + name: "dp-1" + slot: 1 + port: 1 + channel: 1 + speed_bps: 100000000000 + config_params { + admin_state: ADMIN_STATE_ENABLED + } + node: 1 +} +singleton_ports { + id: 2 + name: "dp-2" + slot: 1 + port: 2 + channel: 1 + speed_bps: 100000000000 + config_params { + admin_state: ADMIN_STATE_ENABLED + } + node: 1 +} +singleton_ports { + id: 3 + name: "mgmt" + slot: 1 + port: 3 + channel: 1 + speed_bps: 100000000000 + config_params { + admin_state: ADMIN_STATE_ENABLED + } + node: 1 +} +``` + +To deploy Stratum, do: + +```bash +sudo bash run-stratum.sh +``` + +To run Stratum will verbose logging, open the `run-stratum.sh` and change: + +```bash +LOG_LEVEL="debug" +``` + +Then, re-deploy Stratum as shown above. + +To verify that Stratum has been correctly deployed, you should see the following output: + +``` + config_monitoring_service.cc:94] Pushing the saved chassis config read from p4-switch-three-port-chassis-config-phy.pb.txt... + bmv2_chassis_manager.cc:519] Registered port status callbacks successfully for node 1. + bmv2_chassis_manager.cc:453] State of port 1 in node 1: UP. + bmv2_chassis_manager.cc:453] State of port 2 in node 1: UP. + bmv2_chassis_manager.cc:453] State of port 3 in node 1: UP. + bmv2_switch.cc:74] P4-based forwarding pipeline config pushed successfully to node with ID 1. + hal.cc:220] Stratum external facing services are listening to 0.0.0.0:50000, 0.0.0.0:50001, 0.0.0.0:50101... +``` + +### 3: Restore to the original setup + +When your tests with Stratum and TFS are over, you may want to tear the switch down and kill Stratum. + +```bash +sudo bash p4-switch-tear-down.sh +``` diff --git a/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-conf-common.sh b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-conf-common.sh new file mode 100644 index 0000000000000000000000000000000000000000..d961b920da220caed4368b8c9247be5b3fd98e4e --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-conf-common.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Physical interfaces +HOST_IFACE_EXT="mgmt" # Interface towards TFS (management) +SW_IFACE_DATA_LEFT="dp-1" # Interface towards the 5G gNB (data plane) +SW_IFACE_DATA_RIGHT="dp-2" # Interface towards the Data Network (data plane) + +# Subnets managed by the switch +DOMAIN_IP_LEFT="10.10.1.1/24" # Left-hand side subnet (5G gNB) +DOMAIN_IP_RIGHT="10.10.2.1/24" # Right-hand side subnet (DNN) + +# Transport port where the P4Runtime gRPC server is deployed on the switch +SW_P4RT_GRPC_PORT="50001" + +# Transport port where the P4Runtime gNMI server is deployed on the switch +SW_P4RT_GNMI_PORT="50000" + +# Transport port where Stratum listens to local calls +SW_P4RT_LOCAL_PORT="50101" diff --git a/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-setup.sh b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-setup.sh new file mode 100644 index 0000000000000000000000000000000000000000..55d104f6e251695bf09507975f4a9339674547d2 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-setup.sh @@ -0,0 +1,23 @@ +#!bin/bash + +# You must run this script as root +if [ "$EUID" -ne 0 ]; then + echo "Please run as root" + exit 1 +fi + +source "p4-switch-conf-common.sh" + +kill_stratum() { + pkill stratum +} + +disable_csum_offloading() { + ethtool -K ${SW_IFACE_DATA_LEFT} rx off tx off + ethtool -K ${SW_IFACE_DATA_RIGHT} rx off tx off +} + +kill_stratum +disable_csum_offloading + +exit 0 diff --git a/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-tear-down.sh b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-tear-down.sh new file mode 100644 index 0000000000000000000000000000000000000000..77551c612462a28e4e8f84b932a5f33c79b744ab --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-tear-down.sh @@ -0,0 +1,17 @@ +#!bin/bash + +# You must run this script as root +if [ "$EUID" -ne 0 ]; then + echo "Please run as root" + exit 1 +fi + +source "p4-switch-conf-common.sh" + +kill_stratum() { + pkill stratum +} + +kill_stratum + +exit 0 diff --git a/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-three-port-chassis-config-phy.pb.txt b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-three-port-chassis-config-phy.pb.txt new file mode 100644 index 0000000000000000000000000000000000000000..474196ef903cedfbd5137bfa380dc88a77f50e16 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/topology/p4-switch-three-port-chassis-config-phy.pb.txt @@ -0,0 +1,46 @@ +description: "Chassis configuration for a single Stratum bmv2 switch with 3 ports" +chassis { + platform: PLT_P4_SOFT_SWITCH + name: "bmv2-1" +} +nodes { + id: 1 + slot: 1 + index: 1 +} +singleton_ports { + id: 1 + name: "dp-1" + slot: 1 + port: 1 + channel: 1 + speed_bps: 100000000000 + config_params { + admin_state: ADMIN_STATE_ENABLED + } + node: 1 +} +singleton_ports { + id: 2 + name: "dp-2" + slot: 1 + port: 2 + channel: 1 + speed_bps: 100000000000 + config_params { + admin_state: ADMIN_STATE_ENABLED + } + node: 1 +} +singleton_ports { + id: 3 + name: "mgmt" + slot: 1 + port: 3 + channel: 1 + speed_bps: 100000000000 + config_params { + admin_state: ADMIN_STATE_ENABLED + } + node: 1 +} diff --git a/src/tests/p4-sd-fabric-svc-upf/topology/pipeline_config.pb.txt b/src/tests/p4-sd-fabric-svc-upf/topology/pipeline_config.pb.txt new file mode 100644 index 0000000000000000000000000000000000000000..e127e83445ad11f302dec705e8e4383d0f6f2ed6 --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/topology/pipeline_config.pb.txt @@ -0,0 +1,2490 @@ +node_id_to_config { + key: 1 + value { + p4info { + pkg_info { + arch: "v1model" + } + tables { + preamble { + id: 41243186 + name: "FabricIngress.stats.flows" + alias: "FabricIngress.stats.flows" + } + match_fields { + id: 1 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 4 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 21929788 + } + const_default_action_id: 21929788 + direct_resource_ids: 333776332 + size: 1024 + } + tables { + preamble { + id: 43310977 + name: "FabricIngress.filtering.ingress_port_vlan" + alias: "ingress_port_vlan" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + match_fields { + id: 2 + name: "vlan_is_valid" + bitwidth: 1 + match_type: EXACT + } + match_fields { + id: 3 + name: "vlan_id" + bitwidth: 12 + match_type: TERNARY + } + action_refs { + id: 17164167 + } + action_refs { + id: 24158268 + } + action_refs { + id: 24266015 + } + const_default_action_id: 17164167 + direct_resource_ids: 326221069 + size: 1024 + } + tables { + preamble { + id: 49718154 + name: "FabricIngress.filtering.fwd_classifier" + alias: "fwd_classifier" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: EXACT + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 3 + name: "eth_type" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_eth_type" + bitwidth: 16 + match_type: EXACT + } + action_refs { + id: 25032921 + } + const_default_action_id: 25032921 + direct_resource_ids: 335473470 + size: 1024 + } + tables { + preamble { + id: 43623757 + name: "FabricIngress.forwarding.bridging" + alias: "bridging" + } + match_fields { + id: 1 + name: "vlan_id" + bitwidth: 12 + match_type: EXACT + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + action_refs { + id: 21791748 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29734112 + direct_resource_ids: 330959985 + size: 1024 + } + tables { + preamble { + id: 37768578 + name: "FabricIngress.forwarding.mpls" + alias: "mpls" + } + match_fields { + id: 1 + name: "mpls_label" + bitwidth: 20 + match_type: EXACT + } + action_refs { + id: 30066030 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29734112 + direct_resource_ids: 318961579 + size: 1024 + } + tables { + preamble { + id: 41754650 + name: "FabricIngress.forwarding.routing_v4" + alias: "routing_v4" + } + match_fields { + id: 1 + name: "ipv4_dst" + bitwidth: 32 + match_type: LPM + } + action_refs { + id: 19792090 + } + action_refs { + id: 29124955 + } + action_refs { + id: 17639597 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 333425635 + size: 1024 + } + tables { + preamble { + id: 49342721 + name: "FabricIngress.forwarding.routing_v6" + alias: "routing_v6" + } + match_fields { + id: 1 + name: "ipv6_dst" + bitwidth: 128 + match_type: LPM + } + action_refs { + id: 21856023 + } + action_refs { + id: 24646532 + } + action_refs { + id: 29734112 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 324042090 + size: 1024 + } + tables { + preamble { + id: 36626242 + name: "FabricIngress.pre_next.next_mpls" + alias: "next_mpls" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 22765924 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + direct_resource_ids: 330020245 + size: 1024 + } + tables { + preamble { + id: 48011802 + name: "FabricIngress.pre_next.next_vlan" + alias: "next_vlan" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 33475378 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + direct_resource_ids: 333692067 + size: 1024 + } + tables { + preamble { + id: 44104738 + name: "FabricIngress.acl.acl" + alias: "acl" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: TERNARY + } + match_fields { + id: 2 + name: "eth_dst" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 3 + name: "eth_src" + bitwidth: 48 + match_type: TERNARY + } + match_fields { + id: 4 + name: "vlan_id" + bitwidth: 12 + match_type: TERNARY + } + match_fields { + id: 5 + name: "eth_type" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 7 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 8 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 9 + name: "icmp_type" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 10 + name: "icmp_code" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 11 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 12 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 13 + name: "ig_port_type" + bitwidth: 2 + match_type: TERNARY + } + action_refs { + id: 23623126 + } + action_refs { + id: 23579892 + } + action_refs { + id: 21161133 + } + action_refs { + id: 23570973 + } + action_refs { + id: 24507494 + } + action_refs { + id: 29607214 + } + const_default_action_id: 29607214 + direct_resource_ids: 319194241 + size: 1024 + } + tables { + preamble { + id: 47960972 + name: "FabricIngress.next.hashed" + alias: "hashed" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 27301117 + } + action_refs { + id: 20985706 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + implementation_id: 289544276 + direct_resource_ids: 322798228 + size: 1024 + } + tables { + preamble { + id: 40619180 + name: "FabricIngress.next.multicast" + alias: "multicast" + } + match_fields { + id: 1 + name: "next_id" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 21629581 + } + action_refs { + id: 23637707 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 23637707 + direct_resource_ids: 319194968 + size: 1024 + } + tables { + preamble { + id: 34606298 + name: "FabricIngress.slice_tc_classifier.classifier" + alias: "classifier" + } + match_fields { + id: 1 + name: "ig_port" + bitwidth: 9 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_sport" + bitwidth: 16 + match_type: TERNARY + } + match_fields { + id: 6 + name: "l4_dport" + bitwidth: 16 + match_type: TERNARY + } + action_refs { + id: 23786376 + } + action_refs { + id: 25983516 + } + action_refs { + id: 30111108 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30111108 + direct_resource_ids: 334706097 + size: 512 + } + tables { + preamble { + id: 36435258 + name: "FabricIngress.qos.queues" + alias: "queues" + } + match_fields { + id: 1 + name: "slice_tc" + bitwidth: 6 + match_type: EXACT + } + match_fields { + id: 2 + name: "color" + bitwidth: 2 + match_type: TERNARY + } + action_refs { + id: 32116918 + } + action_refs { + id: 28214351 + } + const_default_action_id: 32116918 + direct_resource_ids: 327743278 + size: 128 + } + tables { + preamble { + id: 43965782 + name: "FabricIngress.qos.default_tc" + alias: "default_tc" + } + match_fields { + id: 1 + name: "slice_tc" + bitwidth: 6 + match_type: TERNARY + } + match_fields { + id: 2 + name: "tc_unknown" + bitwidth: 1 + match_type: EXACT + } + action_refs { + id: 23587909 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 16 + } + tables { + preamble { + id: 41155994 + name: "FabricIngress.upf.interfaces" + alias: "interfaces" + } + match_fields { + id: 1 + name: "ipv4_dst_addr" + bitwidth: 32 + match_type: LPM + } + match_fields { + id: 2 + name: "gtpu_is_valid" + bitwidth: 1 + match_type: EXACT + } + action_refs { + id: 30131500 + } + action_refs { + id: 19786139 + } + action_refs { + id: 19466514 + } + action_refs { + id: 30204657 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30204657 + size: 64 + } + tables { + preamble { + id: 37952203 + name: "FabricIngress.upf.downlink_sessions" + alias: "downlink_sessions" + } + match_fields { + id: 1 + name: "ue_addr" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 16984383 + } + action_refs { + id: 31195396 + } + action_refs { + id: 21581660 + } + action_refs { + id: 24509779 + } + action_refs { + id: 32013192 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 32013192 + size: 100000 + } + tables { + preamble { + id: 45463032 + name: "FabricIngress.upf.uplink_sessions" + alias: "uplink_sessions" + } + match_fields { + id: 1 + name: "tunnel_ipv4_dst" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "teid" + bitwidth: 32 + match_type: EXACT + } + action_refs { + id: 31219743 + } + action_refs { + id: 24328070 + } + action_refs { + id: 20368148 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 20368148 + size: 100000 + } + tables { + preamble { + id: 50169666 + name: "FabricIngress.upf.uplink_terminations" + alias: "uplink_terminations" + } + match_fields { + id: 1 + name: "ue_session_id" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 25805419 + } + action_refs { + id: 28764209 + } + action_refs { + id: 20624836 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 20624836 + size: 100000 + } + tables { + preamble { + id: 35221941 + name: "FabricIngress.upf.downlink_terminations" + alias: "downlink_terminations" + } + match_fields { + id: 1 + name: "ue_session_id" + bitwidth: 32 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 23536134 + } + action_refs { + id: 30742995 + } + action_refs { + id: 26608757 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 26608757 + size: 100000 + } + tables { + preamble { + id: 48831175 + name: "FabricIngress.upf.ig_tunnel_peers" + alias: "ig_tunnel_peers" + } + match_fields { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 26011763 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 256 + } + tables { + preamble { + id: 46184415 + name: "FabricIngress.upf.applications" + alias: "applications" + } + match_fields { + id: 1 + name: "slice_id" + bitwidth: 4 + match_type: EXACT + } + match_fields { + id: 2 + name: "app_ipv4_addr" + bitwidth: 32 + match_type: LPM + } + match_fields { + id: 3 + name: "app_l4_port" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 4 + name: "app_ip_proto" + bitwidth: 8 + match_type: TERNARY + } + action_refs { + id: 26631629 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 5 + } + tables { + preamble { + id: 34400315 + name: "FabricIngress.upf.uplink_recirc_rules" + alias: "uplink_recirc_rules" + } + match_fields { + id: 1 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 2 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + action_refs { + id: 28119063 + } + action_refs { + id: 19222227 + } + action_refs { + id: 29186084 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 29186084 + direct_resource_ids: 335275671 + size: 64 + } + tables { + preamble { + id: 40748488 + name: "FabricIngress.int_watchlist.watchlist" + alias: "watchlist" + } + match_fields { + id: 1 + name: "ipv4_valid" + bitwidth: 1 + match_type: EXACT + } + match_fields { + id: 2 + name: "ipv4_src" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 3 + name: "ipv4_dst" + bitwidth: 32 + match_type: TERNARY + } + match_fields { + id: 4 + name: "ip_proto" + bitwidth: 8 + match_type: TERNARY + } + match_fields { + id: 5 + name: "l4_sport" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 6 + name: "l4_dport" + bitwidth: 16 + match_type: RANGE + } + action_refs { + id: 25078550 + } + action_refs { + id: 20118842 + } + action_refs { + id: 28396787 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28396787 + direct_resource_ids: 328581521 + size: 64 + } + tables { + preamble { + id: 43851059 + name: "FabricEgress.stats.flows" + alias: "FabricEgress.stats.flows" + } + match_fields { + id: 1 + name: "stats_flow_id" + bitwidth: 10 + match_type: EXACT + } + match_fields { + id: 2 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 26838724 + } + const_default_action_id: 26838724 + direct_resource_ids: 334508337 + size: 1024 + } + tables { + preamble { + id: 35217901 + name: "FabricEgress.pkt_io_egress.switch_info" + alias: "switch_info" + } + action_refs { + id: 32804382 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 1 + } + tables { + preamble { + id: 49262446 + name: "FabricEgress.egress_next.egress_vlan" + alias: "egress_vlan" + } + match_fields { + id: 1 + name: "vlan_id" + bitwidth: 12 + match_type: EXACT + } + match_fields { + id: 2 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 30307755 + } + action_refs { + id: 17183246 + } + action_refs { + id: 30812542 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 30812542 + direct_resource_ids: 318892680 + size: 1024 + } + tables { + preamble { + id: 49970092 + name: "FabricEgress.dscp_rewriter.rewriter" + alias: "rewriter" + } + match_fields { + id: 1 + name: "eg_port" + bitwidth: 9 + match_type: EXACT + } + action_refs { + id: 27951287 + } + action_refs { + id: 24120545 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 512 + } + tables { + preamble { + id: 37756041 + name: "FabricEgress.upf.eg_tunnel_peers" + alias: "eg_tunnel_peers" + } + match_fields { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + match_type: EXACT + } + action_refs { + id: 28490145 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + const_default_action_id: 28485346 + size: 256 + } + tables { + preamble { + id: 35202849 + name: "FabricEgress.upf.gtpu_encap" + alias: "gtpu_encap" + } + action_refs { + id: 18154440 + } + action_refs { + id: 25872588 + } + size: 1 + } + tables { + preamble { + id: 36860953 + name: "FabricEgress.int_egress.queue_latency_thresholds" + alias: "queue_latency_thresholds" + } + match_fields { + id: 1 + name: "egress_qid" + bitwidth: 5 + match_type: EXACT + } + match_fields { + id: 2 + name: "hop_latency_upper" + bitwidth: 16 + match_type: RANGE + } + match_fields { + id: 3 + name: "hop_latency_lower" + bitwidth: 16 + match_type: RANGE + } + action_refs { + id: 22415037 + } + action_refs { + id: 19702294 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 128 + } + tables { + preamble { + id: 40475827 + name: "FabricEgress.int_egress.config" + alias: "config" + } + action_refs { + id: 22425991 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + size: 1 + } + tables { + preamble { + id: 46071383 + name: "FabricEgress.int_egress.report" + alias: "report" + } + match_fields { + id: 1 + name: "bmd_type" + bitwidth: 8 + match_type: EXACT + } + match_fields { + id: 2 + name: "mirror_type" + bitwidth: 3 + match_type: EXACT + } + match_fields { + id: 3 + name: "int_report_type" + bitwidth: 3 + match_type: EXACT + } + action_refs { + id: 30783845 + } + action_refs { + id: 22769901 + } + action_refs { + id: 32486459 + } + action_refs { + id: 25343592 + } + action_refs { + id: 28485346 + annotations: "@defaultonly" + scope: DEFAULT_ONLY + } + direct_resource_ids: 325056546 + size: 6 + } + actions { + preamble { + id: 28485346 + name: "nop" + alias: "nop" + } + } + actions { + preamble { + id: 21257015 + name: "NoAction" + alias: "NoAction" + annotations: "@noWarn(\"unused\")" + } + } + actions { + preamble { + id: 21929788 + name: "FabricIngress.stats.count" + alias: "FabricIngress.stats.count" + } + params { + id: 1 + name: "flow_id" + bitwidth: 10 + } + } + actions { + preamble { + id: 17164167 + name: "FabricIngress.filtering.deny" + alias: "deny" + } + } + actions { + preamble { + id: 24158268 + name: "FabricIngress.filtering.permit" + alias: "permit" + } + params { + id: 1 + name: "port_type" + bitwidth: 2 + } + } + actions { + preamble { + id: 24266015 + name: "FabricIngress.filtering.permit_with_internal_vlan" + alias: "permit_with_internal_vlan" + } + params { + id: 1 + name: "vlan_id" + bitwidth: 12 + } + params { + id: 2 + name: "port_type" + bitwidth: 2 + } + } + actions { + preamble { + id: 25032921 + name: "FabricIngress.filtering.set_forwarding_type" + alias: "set_forwarding_type" + } + params { + id: 1 + name: "fwd_type" + bitwidth: 3 + } + } + actions { + preamble { + id: 29734112 + name: "FabricIngress.forwarding.set_int_drop_reason" + alias: "set_int_drop_reason" + } + params { + id: 1 + name: "drop_reason" + bitwidth: 8 + } + } + actions { + preamble { + id: 21791748 + name: "FabricIngress.forwarding.set_next_id_bridging" + alias: "set_next_id_bridging" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 30066030 + name: "FabricIngress.forwarding.pop_mpls_and_next" + alias: "pop_mpls_and_next" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 19792090 + name: "FabricIngress.forwarding.set_next_id_routing_v4" + alias: "set_next_id_routing_v4" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 29124955 + name: "FabricIngress.forwarding.nop_routing_v4" + alias: "nop_routing_v4" + } + } + actions { + preamble { + id: 17639597 + name: "FabricIngress.forwarding.drop_routing_v4" + alias: "drop_routing_v4" + } + } + actions { + preamble { + id: 21856023 + name: "FabricIngress.forwarding.set_next_id_routing_v6" + alias: "set_next_id_routing_v6" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 24646532 + name: "FabricIngress.forwarding.drop_routing_v6" + alias: "drop_routing_v6" + } + } + actions { + preamble { + id: 22765924 + name: "FabricIngress.pre_next.set_mpls_label" + alias: "set_mpls_label" + } + params { + id: 1 + name: "label" + bitwidth: 20 + } + } + actions { + preamble { + id: 33475378 + name: "FabricIngress.pre_next.set_vlan" + alias: "set_vlan" + } + params { + id: 1 + name: "vlan_id" + bitwidth: 12 + } + } + actions { + preamble { + id: 23623126 + name: "FabricIngress.acl.set_next_id_acl" + alias: "set_next_id_acl" + } + params { + id: 1 + name: "next_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 21161133 + name: "FabricIngress.acl.copy_to_cpu" + alias: "copy_to_cpu" + } + } + actions { + preamble { + id: 23579892 + name: "FabricIngress.acl.punt_to_cpu" + alias: "punt_to_cpu" + } + } + actions { + preamble { + id: 23570973 + name: "FabricIngress.acl.drop" + alias: "acl.drop" + } + } + actions { + preamble { + id: 24507494 + name: "FabricIngress.acl.set_output_port" + alias: "set_output_port" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + } + actions { + preamble { + id: 29607214 + name: "FabricIngress.acl.nop_acl" + alias: "nop_acl" + } + } + actions { + preamble { + id: 27301117 + name: "FabricIngress.next.output_hashed" + alias: "output_hashed" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + } + actions { + preamble { + id: 20985706 + name: "FabricIngress.next.routing_hashed" + alias: "routing_hashed" + } + params { + id: 1 + name: "port_num" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + params { + id: 2 + name: "smac" + bitwidth: 48 + } + params { + id: 3 + name: "dmac" + bitwidth: 48 + } + } + actions { + preamble { + id: 21629581 + name: "FabricIngress.next.set_mcast_group_id" + alias: "set_mcast_group_id" + } + params { + id: 1 + name: "group_id" + bitwidth: 16 + } + } + actions { + preamble { + id: 23637707 + name: "FabricIngress.next.reset_mcast_group_id" + alias: "reset_mcast_group_id" + } + } + actions { + preamble { + id: 23786376 + name: "FabricIngress.slice_tc_classifier.set_slice_id_tc" + alias: "set_slice_id_tc" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } + } + actions { + preamble { + id: 30111108 + name: "FabricIngress.slice_tc_classifier.no_classification" + alias: "no_classification" + } + } + actions { + preamble { + id: 25983516 + name: "FabricIngress.slice_tc_classifier.trust_dscp" + alias: "trust_dscp" + } + } + actions { + preamble { + id: 32116918 + name: "FabricIngress.qos.set_queue" + alias: "set_queue" + } + params { + id: 1 + name: "qid" + bitwidth: 5 + } + } + actions { + preamble { + id: 28214351 + name: "FabricIngress.qos.meter_drop" + alias: "meter_drop" + } + } + actions { + preamble { + id: 23587909 + name: "FabricIngress.qos.set_default_tc" + alias: "set_default_tc" + } + params { + id: 1 + name: "tc" + bitwidth: 2 + } + } + actions { + preamble { + id: 30131500 + name: "FabricIngress.upf.iface_access" + alias: "iface_access" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } + } + actions { + preamble { + id: 19786139 + name: "FabricIngress.upf.iface_core" + alias: "iface_core" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } + } + actions { + preamble { + id: 19466514 + name: "FabricIngress.upf.iface_dbuf" + alias: "iface_dbuf" + } + params { + id: 1 + name: "slice_id" + bitwidth: 4 + } + } + actions { + preamble { + id: 30204657 + name: "FabricIngress.upf.iface_miss" + alias: "iface_miss" + } + } + actions { + preamble { + id: 20368148 + name: "FabricIngress.upf.set_uplink_session_miss" + alias: "set_uplink_session_miss" + } + } + actions { + preamble { + id: 24328070 + name: "FabricIngress.upf.set_uplink_session_drop" + alias: "set_uplink_session_drop" + } + } + actions { + preamble { + id: 32013192 + name: "FabricIngress.upf.set_downlink_session_miss" + alias: "set_downlink_session_miss" + } + } + actions { + preamble { + id: 24509779 + name: "FabricIngress.upf.set_downlink_session_drop" + alias: "set_downlink_session_drop" + } + } + actions { + preamble { + id: 16984383 + name: "FabricIngress.upf.set_downlink_session" + alias: "set_downlink_session" + } + params { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + } + params { + id: 2 + name: "session_meter_idx" + bitwidth: 15 + } + } + actions { + preamble { + id: 31195396 + name: "FabricIngress.upf.set_downlink_session_buf" + alias: "set_downlink_session_buf" + } + params { + id: 1 + name: "tun_peer_id" + bitwidth: 8 + } + params { + id: 2 + name: "session_meter_idx" + bitwidth: 15 + } + } + actions { + preamble { + id: 21581660 + name: "FabricIngress.upf.set_downlink_session_buf_drop" + alias: "set_downlink_session_buf_drop" + } + } + actions { + preamble { + id: 31219743 + name: "FabricIngress.upf.set_uplink_session" + alias: "set_uplink_session" + } + params { + id: 1 + name: "session_meter_idx" + bitwidth: 15 + } + } + actions { + preamble { + id: 20624836 + name: "FabricIngress.upf.uplink_drop_miss" + alias: "uplink_drop_miss" + } + } + actions { + preamble { + id: 26608757 + name: "FabricIngress.upf.downlink_drop_miss" + alias: "downlink_drop_miss" + } + } + actions { + preamble { + id: 28764209 + name: "FabricIngress.upf.uplink_drop" + alias: "uplink_drop" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + } + actions { + preamble { + id: 30742995 + name: "FabricIngress.upf.downlink_drop" + alias: "downlink_drop" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + } + actions { + preamble { + id: 25805419 + name: "FabricIngress.upf.app_fwd" + alias: "app_fwd" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } + params { + id: 3 + name: "app_meter_idx" + bitwidth: 15 + } + } + actions { + preamble { + id: 23536134 + name: "FabricIngress.upf.downlink_fwd_encap" + alias: "downlink_fwd_encap" + } + params { + id: 1 + name: "ctr_id" + bitwidth: 12 + } + params { + id: 2 + name: "tc" + bitwidth: 2 + } + params { + id: 3 + name: "teid" + bitwidth: 32 + } + params { + id: 4 + name: "qfi" + bitwidth: 6 + } + params { + id: 5 + name: "app_meter_idx" + bitwidth: 15 + } + } + actions { + preamble { + id: 26011763 + name: "FabricIngress.upf.set_routing_ipv4_dst" + alias: "set_routing_ipv4_dst" + } + params { + id: 1 + name: "tun_dst_addr" + bitwidth: 32 + } + } + actions { + preamble { + id: 26631629 + name: "FabricIngress.upf.set_app_id" + alias: "set_app_id" + } + params { + id: 1 + name: "app_id" + bitwidth: 8 + } + } + actions { + preamble { + id: 28119063 + name: "FabricIngress.upf.recirc_allow" + alias: "recirc_allow" + } + } + actions { + preamble { + id: 19222227 + name: "FabricIngress.upf.recirc_deny" + alias: "recirc_deny" + } + } + actions { + preamble { + id: 29186084 + name: "FabricIngress.upf.recirc_miss" + alias: "recirc_miss" + } + } + actions { + preamble { + id: 25078550 + name: "FabricIngress.int_watchlist.mark_to_report" + alias: "mark_to_report" + } + } + actions { + preamble { + id: 28396787 + name: "FabricIngress.int_watchlist.no_report" + alias: "no_report" + } + } + actions { + preamble { + id: 20118842 + name: "FabricIngress.int_watchlist.no_report_collector" + alias: "no_report_collector" + } + } + actions { + preamble { + id: 26838724 + name: "FabricEgress.stats.count" + alias: "FabricEgress.stats.count" + } + } + actions { + preamble { + id: 32804382 + name: "FabricEgress.pkt_io_egress.set_switch_info" + alias: "set_switch_info" + } + params { + id: 1 + name: "cpu_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + } + actions { + preamble { + id: 30307755 + name: "FabricEgress.egress_next.push_vlan" + alias: "push_vlan" + } + } + actions { + preamble { + id: 17183246 + name: "FabricEgress.egress_next.pop_vlan" + alias: "pop_vlan" + } + } + actions { + preamble { + id: 30812542 + name: "FabricEgress.egress_next.drop" + alias: "egress_next.drop" + } + } + actions { + preamble { + id: 27951287 + name: "FabricEgress.dscp_rewriter.rewrite" + alias: "rewrite" + } + } + actions { + preamble { + id: 24120545 + name: "FabricEgress.dscp_rewriter.clear" + alias: "clear" + } + } + actions { + preamble { + id: 28490145 + name: "FabricEgress.upf.load_tunnel_params" + alias: "load_tunnel_params" + } + params { + id: 1 + name: "tunnel_src_port" + bitwidth: 16 + } + params { + id: 2 + name: "tunnel_src_addr" + bitwidth: 32 + } + params { + id: 3 + name: "tunnel_dst_addr" + bitwidth: 32 + } + } + actions { + preamble { + id: 18154440 + name: "FabricEgress.upf.gtpu_only" + alias: "gtpu_only" + } + } + actions { + preamble { + id: 25872588 + name: "FabricEgress.upf.gtpu_with_psc" + alias: "gtpu_with_psc" + } + } + actions { + preamble { + id: 22415037 + name: "FabricEgress.int_egress.check_quota" + alias: "check_quota" + } + } + actions { + preamble { + id: 19702294 + name: "FabricEgress.int_egress.reset_quota" + alias: "reset_quota" + } + } + actions { + preamble { + id: 22425991 + name: "FabricEgress.int_egress.set_config" + alias: "set_config" + } + params { + id: 1 + name: "hop_latency_mask" + bitwidth: 32 + } + params { + id: 2 + name: "timestamp_mask" + bitwidth: 48 + } + } + actions { + preamble { + id: 30783845 + name: "FabricEgress.int_egress.do_local_report_encap" + alias: "do_local_report_encap" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "switch_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 22769901 + name: "FabricEgress.int_egress.do_local_report_encap_mpls" + alias: "do_local_report_encap_mpls" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "mon_label" + bitwidth: 20 + } + params { + id: 5 + name: "switch_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 32486459 + name: "FabricEgress.int_egress.do_drop_report_encap" + alias: "do_drop_report_encap" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "switch_id" + bitwidth: 32 + } + } + actions { + preamble { + id: 25343592 + name: "FabricEgress.int_egress.do_drop_report_encap_mpls" + alias: "do_drop_report_encap_mpls" + } + params { + id: 1 + name: "src_ip" + bitwidth: 32 + } + params { + id: 2 + name: "mon_ip" + bitwidth: 32 + } + params { + id: 3 + name: "mon_port" + bitwidth: 16 + } + params { + id: 4 + name: "mon_label" + bitwidth: 20 + } + params { + id: 5 + name: "switch_id" + bitwidth: 32 + } + } + action_profiles { + preamble { + id: 289544276 + name: "FabricIngress.next.hashed_profile" + alias: "hashed_profile" + } + table_ids: 47960972 + with_selector: true + size: 16 + max_group_size: 16 + } + counters { + preamble { + id: 309010261 + name: "FabricIngress.filtering.fwd_type_counter" + alias: "fwd_type_counter" + } + spec { + unit: BOTH + } + size: 8 + } + counters { + preamble { + id: 316677328 + name: "FabricIngress.upf.terminations_counter" + alias: "FabricIngress.upf.terminations_counter" + } + spec { + unit: BOTH + } + size: 4096 + } + counters { + preamble { + id: 314209362 + name: "FabricEgress.upf.terminations_counter" + alias: "FabricEgress.upf.terminations_counter" + } + spec { + unit: BOTH + } + size: 4096 + } + direct_counters { + preamble { + id: 333776332 + name: "FabricIngress.stats.flow_counter" + alias: "FabricIngress.stats.flow_counter" + } + spec { + unit: BOTH + } + direct_table_id: 41243186 + } + direct_counters { + preamble { + id: 326221069 + name: "FabricIngress.filtering.ingress_port_vlan_counter" + alias: "ingress_port_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43310977 + } + direct_counters { + preamble { + id: 335473470 + name: "FabricIngress.filtering.fwd_classifier_counter" + alias: "fwd_classifier_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49718154 + } + direct_counters { + preamble { + id: 330959985 + name: "FabricIngress.forwarding.bridging_counter" + alias: "bridging_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43623757 + } + direct_counters { + preamble { + id: 318961579 + name: "FabricIngress.forwarding.mpls_counter" + alias: "mpls_counter" + } + spec { + unit: BOTH + } + direct_table_id: 37768578 + } + direct_counters { + preamble { + id: 333425635 + name: "FabricIngress.forwarding.routing_v4_counter" + alias: "routing_v4_counter" + } + spec { + unit: BOTH + } + direct_table_id: 41754650 + } + direct_counters { + preamble { + id: 324042090 + name: "FabricIngress.forwarding.routing_v6_counter" + alias: "routing_v6_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49342721 + } + direct_counters { + preamble { + id: 330020245 + name: "FabricIngress.pre_next.next_mpls_counter" + alias: "next_mpls_counter" + } + spec { + unit: BOTH + } + direct_table_id: 36626242 + } + direct_counters { + preamble { + id: 333692067 + name: "FabricIngress.pre_next.next_vlan_counter" + alias: "next_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 48011802 + } + direct_counters { + preamble { + id: 319194241 + name: "FabricIngress.acl.acl_counter" + alias: "acl_counter" + } + spec { + unit: BOTH + } + direct_table_id: 44104738 + } + direct_counters { + preamble { + id: 322798228 + name: "FabricIngress.next.hashed_counter" + alias: "hashed_counter" + } + spec { + unit: BOTH + } + direct_table_id: 47960972 + } + direct_counters { + preamble { + id: 319194968 + name: "FabricIngress.next.multicast_counter" + alias: "multicast_counter" + } + spec { + unit: BOTH + } + direct_table_id: 40619180 + } + direct_counters { + preamble { + id: 334706097 + name: "FabricIngress.slice_tc_classifier.classifier_stats" + alias: "classifier_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 34606298 + } + direct_counters { + preamble { + id: 327743278 + name: "FabricIngress.qos.queues_stats" + alias: "queues_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 36435258 + } + direct_counters { + preamble { + id: 335275671 + name: "FabricIngress.upf.recirc_stats" + alias: "recirc_stats" + } + spec { + unit: PACKETS + } + direct_table_id: 34400315 + } + direct_counters { + preamble { + id: 328581521 + name: "FabricIngress.int_watchlist.watchlist_counter" + alias: "watchlist_counter" + } + spec { + unit: BOTH + } + direct_table_id: 40748488 + } + direct_counters { + preamble { + id: 334508337 + name: "FabricEgress.stats.flow_counter" + alias: "FabricEgress.stats.flow_counter" + } + spec { + unit: BOTH + } + direct_table_id: 43851059 + } + direct_counters { + preamble { + id: 318892680 + name: "FabricEgress.egress_next.egress_vlan_counter" + alias: "egress_vlan_counter" + } + spec { + unit: BOTH + } + direct_table_id: 49262446 + } + direct_counters { + preamble { + id: 325056546 + name: "FabricEgress.int_egress.report_counter" + alias: "report_counter" + } + spec { + unit: BOTH + } + direct_table_id: 46071383 + } + meters { + preamble { + id: 348573637 + name: "FabricIngress.qos.slice_tc_meter" + alias: "slice_tc_meter" + } + spec { + unit: BYTES + } + size: 64 + } + meters { + preamble { + id: 345152250 + name: "FabricIngress.upf.session_meter" + alias: "session_meter" + } + spec { + unit: BYTES + } + size: 20000 + } + meters { + preamble { + id: 343216442 + name: "FabricIngress.upf.app_meter" + alias: "app_meter" + } + spec { + unit: BYTES + } + size: 20000 + } + controller_packet_metadata { + preamble { + id: 81826293 + name: "packet_in" + alias: "packet_in" + annotations: "@controller_header(\"packet_in\")" + } + metadata { + id: 1 + name: "ingress_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + metadata { + id: 2 + name: "_pad0" + bitwidth: 7 + } + } + controller_packet_metadata { + preamble { + id: 76689799 + name: "packet_out" + alias: "packet_out" + annotations: "@controller_header(\"packet_out\")" + } + metadata { + id: 1 + name: "pad0" + annotations: "@padding" + bitwidth: 7 + } + metadata { + id: 2 + name: "egress_port" + bitwidth: 9 + type_name { + name: "FabricPortId_t" + } + } + metadata { + id: 3 + name: "pad1" + annotations: "@padding" + bitwidth: 3 + } + metadata { + id: 4 + name: "queue_id" + bitwidth: 5 + } + metadata { + id: 5 + name: "pad2" + annotations: "@padding" + bitwidth: 5 + } + metadata { + id: 6 + name: "cpu_loopback_mode" + bitwidth: 2 + } + metadata { + id: 7 + name: "do_forwarding" + bitwidth: 1 + } + metadata { + id: 8 + name: "pad3" + annotations: "@padding" + bitwidth: 16 + } + metadata { + id: 9 + name: "pad4" + annotations: "@padding" + bitwidth: 48 + } + metadata { + id: 10 + name: "ether_type" + bitwidth: 16 + } + } + registers { + preamble { + id: 376533241 + name: "FabricEgress.int_egress.seq_number" + alias: "seq_number" + annotations: "@hidden" + } + type_spec { + bitstring { + bit { + bitwidth: 32 + } + } + } + size: 1024 + } + type_info { + serializable_enums { + key: "BridgedMdType_t" + value { + underlying_type { + bitwidth: 8 + } + members { + name: "INVALID" + value: "\000" + } + members { + name: "INGRESS_TO_EGRESS" + value: "\001" + } + members { + name: "EGRESS_MIRROR" + value: "\002" + } + members { + name: "INGRESS_MIRROR" + value: "\003" + } + members { + name: "INT_INGRESS_DROP" + value: "\004" + } + members { + name: "DEFLECTED" + value: "\005" + } + } + } + serializable_enums { + key: "CpuLoopbackMode_t" + value { + underlying_type { + bitwidth: 2 + } + members { + name: "DISABLED" + value: "\000" + } + members { + name: "DIRECT" + value: "\001" + } + members { + name: "INGRESS" + value: "\002" + } + } + } + serializable_enums { + key: "FabricMirrorType_t" + value { + underlying_type { + bitwidth: 3 + } + members { + name: "INVALID" + value: "\000" + } + members { + name: "INT_REPORT" + value: "\001" + } + members { + name: "PACKET_IN" + value: "\002" + } + } + } + serializable_enums { + key: "PortType_t" + value { + underlying_type { + bitwidth: 2 + } + members { + name: "UNKNOWN" + value: "\000" + } + members { + name: "EDGE" + value: "\001" + } + members { + name: "INFRA" + value: "\002" + } + members { + name: "INTERNAL" + value: "\003" + } + } + } + new_types { + key: "FabricPortId_t" + value { + original_type { + bitstring { + bit { + bitwidth: 9 + } + } + } + } + } + } + } + p4_device_config: "{\n \"header_types\" : [\n {\n \"name\" : \"scalars_0\",\n \"id\" : 0,\n \"fields\" : [\n [\"tmp_2\", 16, false],\n [\"tmp_4\", 1, false],\n [\"tmp_6\", 16, false],\n [\"tmp_12\", 3, false],\n [\"tmp_13\", 8, false],\n [\"gtpu_ext_len_0\", 8, false],\n [\"tmp_3\", 16, false],\n [\"tmp_5\", 16, false],\n [\"tmp_7\", 4, false],\n [\"tmp_8\", 112, false],\n [\"tmp_9\", 112, false],\n [\"tmp_10\", 112, false],\n [\"tmp_11\", 64, false],\n [\"tmp_14\", 32, false],\n [\"tmp_15\", 32, false],\n [\"tmp_16\", 32, false],\n [\"tmp_17\", 32, false],\n [\"tmp_18\", 8, false],\n [\"tmp_19\", 32, false],\n [\"tmp_20\", 32, false],\n [\"tmp_21\", 32, false],\n [\"tmp_22\", 32, false],\n [\"tmp_23\", 48, false],\n [\"tmp_24\", 48, false],\n [\"tmp_25\", 16, false],\n [\"tmp_26\", 32, false],\n [\"tmp_27\", 32, false],\n [\"tmp_28\", 8, false],\n [\"tmp_29\", 16, false],\n [\"tmp_30\", 16, false],\n [\"tmp_31\", 32, false],\n [\"qos_packet_color\", 2, false],\n [\"upf_is_uplink\", 1, false],\n [\"upf_term_hit\", 1, false],\n [\"upf_sess_hit\", 1, false],\n [\"upf_app_ipv4_addr\", 32, false],\n [\"upf_app_l4_port\", 16, false],\n [\"upf_app_ip_proto\", 8, false],\n [\"upf_internal_app_id\", 8, false],\n [\"upf_ue_session_id\", 32, false],\n [\"upf_session_meter_idx_internal\", 15, false],\n [\"upf_app_meter_idx_internal\", 15, false],\n [\"tmp_32\", 32, false],\n [\"tmp_33\", 32, false],\n [\"tmp_34\", 32, false],\n [\"tmp_35\", 32, false],\n [\"tmp_36\", 32, false],\n [\"tmp_37\", 32, false],\n [\"tmp_38\", 32, false],\n [\"tmp_39\", 32, false],\n [\"tmp_40\", 32, false],\n [\"tmp_41\", 32, false],\n [\"dscp_rewriter_tmp_dscp\", 6, false],\n [\"int_egress_fabric_md_pkt_length\", 16, false],\n [\"int_egress_egress_qid\", 5, false],\n [\"int_egress_reg\", 32, false],\n [\"key_0\", 16, false],\n [\"key_1\", 16, false],\n [\"userMetadata._skip_egress0\", 1, false],\n [\"userMetadata._do_upf_uplink_recirc1\", 1, false],\n [\"userMetadata._drop_ctl2\", 1, false],\n [\"userMetadata._int_mirror_type3\", 3, false],\n [\"userMetadata._ingress_ecmp_hash5\", 32, false],\n [\"userMetadata._ingress_lkp_eth_dst6\", 48, false],\n [\"userMetadata._ingress_lkp_eth_src7\", 48, false],\n [\"userMetadata._ingress_lkp_eth_type8\", 16, false],\n [\"userMetadata._ingress_lkp_vlan_id9\", 12, false],\n [\"userMetadata._ingress_lkp_is_ipv410\", 1, false],\n [\"userMetadata._ingress_lkp_ipv4_src11\", 32, false],\n [\"userMetadata._ingress_lkp_ipv4_dst12\", 32, false],\n [\"userMetadata._ingress_lkp_ip_proto13\", 8, false],\n [\"userMetadata._ingress_lkp_l4_sport14\", 16, false],\n [\"userMetadata._ingress_lkp_l4_dport15\", 16, false],\n [\"userMetadata._ingress_lkp_icmp_type16\", 8, false],\n [\"userMetadata._ingress_lkp_icmp_code17\", 8, false],\n [\"userMetadata._ingress_routing_ipv4_dst18\", 32, false],\n [\"userMetadata._ingress_skip_forwarding19\", 1, false],\n [\"userMetadata._ingress_skip_next20\", 1, false],\n [\"userMetadata._ingress_next_id21\", 32, false],\n [\"userMetadata._ingress_egress_port_set22\", 1, false],\n [\"userMetadata._ingress_punt_to_cpu23\", 1, false],\n [\"userMetadata._ingress_ipv4_checksum_err24\", 1, false],\n [\"userMetadata._ingress_inner_ipv4_checksum_err25\", 1, false],\n [\"userMetadata._ingress_slice_id26\", 4, false],\n [\"userMetadata._ingress_tc27\", 2, false],\n [\"userMetadata._ingress_tc_unknown28\", 1, false],\n [\"userMetadata._ingress_is_upf_hit29\", 1, false],\n [\"userMetadata._ingress_upf_slice_id30\", 4, false],\n [\"userMetadata._ingress_upf_tc31\", 2, false],\n [\"userMetadata._ingress_upf_meter_color32\", 2, false],\n [\"userMetadata._ingress_ig_port_type33\", 2, false],\n [\"userMetadata._ingress_mirror_mirror_session_id34\", 10, false],\n [\"userMetadata._ingress_mirror_bmd_type35\", 8, false],\n [\"userMetadata._egress_cpu_port37\", 9, false],\n [\"userMetadata._egress_inner_ipv4_checksum_err38\", 1, false],\n [\"userMetadata._egress_int_md_hop_latency40\", 32, false],\n [\"userMetadata._egress_int_md_timestamp41\", 48, false],\n [\"userMetadata._egress_int_md_vlan_stripped42\", 1, false],\n [\"userMetadata._egress_int_md_queue_report43\", 1, false],\n [\"userMetadata._egress_int_ipv4_len44\", 16, false],\n [\"userMetadata._egress_is_int_recirc45\", 1, false],\n [\"userMetadata._egress_pkt_length46\", 16, false],\n [\"userMetadata._recirc_preserved_report_type47\", 3, false],\n [\"userMetadata._recirc_preserved_egress_port48\", 9, false],\n [\"userMetadata._recirc_preserved_drop_reason49\", 8, false],\n [\"userMetadata._recirc_preserved_ingress_port50\", 9, false],\n [\"_padding_1\", 3, false]\n ]\n },\n {\n \"name\" : \"fake_ethernet_t\",\n \"id\" : 1,\n \"fields\" : [\n [\"_pad0\", 48, false],\n [\"_pad1\", 48, false],\n [\"ether_type\", 16, false]\n ]\n },\n {\n \"name\" : \"packet_out_header_t\",\n \"id\" : 2,\n \"fields\" : [\n [\"pad0\", 7, false],\n [\"egress_port\", 9, false],\n [\"pad1\", 3, false],\n [\"queue_id\", 5, false],\n [\"pad2\", 5, false],\n [\"cpu_loopback_mode\", 2, false],\n [\"do_forwarding\", 1, false],\n [\"pad3\", 16, false],\n [\"pad4\", 48, false],\n [\"ether_type\", 16, false]\n ]\n },\n {\n \"name\" : \"gtpu_t\",\n \"id\" : 3,\n \"fields\" : [\n [\"version\", 3, false],\n [\"pt\", 1, false],\n [\"spare\", 1, false],\n [\"ex_flag\", 1, false],\n [\"seq_flag\", 1, false],\n [\"npdu_flag\", 1, false],\n [\"msgtype\", 8, false],\n [\"msglen\", 16, false],\n [\"teid\", 32, false]\n ]\n },\n {\n \"name\" : \"ethernet_t\",\n \"id\" : 4,\n \"fields\" : [\n [\"dst_addr\", 48, false],\n [\"src_addr\", 48, false]\n ]\n },\n {\n \"name\" : \"eth_type_t\",\n \"id\" : 5,\n \"fields\" : [\n [\"value\", 16, false]\n ]\n },\n {\n \"name\" : \"ipv4_t\",\n \"id\" : 6,\n \"fields\" : [\n [\"version\", 4, false],\n [\"ihl\", 4, false],\n [\"dscp\", 6, false],\n [\"ecn\", 2, false],\n [\"total_len\", 16, false],\n [\"identification\", 16, false],\n [\"flags\", 3, false],\n [\"frag_offset\", 13, false],\n [\"ttl\", 8, false],\n [\"protocol\", 8, false],\n [\"hdr_checksum\", 16, false],\n [\"src_addr\", 32, false],\n [\"dst_addr\", 32, false]\n ]\n },\n {\n \"name\" : \"udp_t\",\n \"id\" : 7,\n \"fields\" : [\n [\"sport\", 16, false],\n [\"dport\", 16, false],\n [\"len\", 16, false],\n [\"checksum\", 16, false]\n ]\n },\n {\n \"name\" : \"report_fixed_header_t\",\n \"id\" : 8,\n \"fields\" : [\n [\"ver\", 4, false],\n [\"nproto\", 4, false],\n [\"dqf\", 3, false],\n [\"rsvd\", 15, false],\n [\"hw_id\", 6, false],\n [\"seq_no\", 32, false],\n [\"ig_tstamp\", 32, false]\n ]\n },\n {\n \"name\" : \"common_report_header_t\",\n \"id\" : 9,\n \"fields\" : [\n [\"switch_id\", 32, false],\n [\"pad1\", 7, false],\n [\"ig_port\", 9, false],\n [\"pad2\", 7, false],\n [\"eg_port\", 9, false],\n [\"pad3\", 3, false],\n [\"queue_id\", 5, false]\n ]\n },\n {\n \"name\" : \"local_report_header_t\",\n \"id\" : 10,\n \"fields\" : [\n [\"pad1\", 5, false],\n [\"queue_occupancy\", 19, false],\n [\"eg_tstamp\", 32, false]\n ]\n },\n {\n \"name\" : \"drop_report_header_t\",\n \"id\" : 11,\n \"fields\" : [\n [\"drop_reason\", 8, false],\n [\"pad\", 16, false]\n ]\n },\n {\n \"name\" : \"mpls_t\",\n \"id\" : 12,\n \"fields\" : [\n [\"label\", 20, false],\n [\"tc\", 3, false],\n [\"bos\", 1, false],\n [\"ttl\", 8, false]\n ]\n },\n {\n \"name\" : \"bridged_metadata_t\",\n \"id\" : 13,\n \"fields\" : [\n [\"_bmd_type0\", 8, false],\n [\"_base_inner_hash1\", 32, false],\n [\"_base_mpls_label2\", 20, false],\n [\"_base_ig_port3\", 9, false],\n [\"_base_is_multicast4\", 1, 0],\n [\"_base_fwd_type5\", 3, false],\n [\"_base_vlan_id6\", 12, false],\n [\"_base_encap_presence7\", 2, false],\n [\"_base_mpls_ttl8\", 8, false],\n [\"_base_ig_tstamp9\", 48, false],\n [\"_base_ip_eth_type10\", 16, false],\n [\"_base_stats_flow_id11\", 10, false],\n [\"_base_slice_tc12\", 6, false],\n [\"_upf_tun_peer_id13\", 8, false],\n [\"_upf_upf_ctr_id14\", 12, false],\n [\"_upf_qfi15\", 6, false],\n [\"_upf_needs_gtpu_encap16\", 1, 0],\n [\"_upf_skip_upf17\", 1, 0],\n [\"_upf_skip_egress_upf_ctr18\", 1, 0],\n [\"_upf_teid19\", 32, false],\n [\"_upf__pad20\", 4, false],\n [\"_int_bmd_report_type21\", 3, false],\n [\"_int_bmd_mirror_session_id22\", 10, false],\n [\"_int_bmd_drop_reason23\", 8, false],\n [\"_int_bmd_queue_id24\", 5, false],\n [\"_int_bmd_egress_port25\", 9, false],\n [\"_int_bmd_wip_type26\", 8, false],\n [\"__pad027\", 1, false],\n [\"__pad128\", 7, false],\n [\"__pad229\", 5, false]\n ]\n },\n {\n \"name\" : \"int_report_metadata_t\",\n \"id\" : 14,\n \"fields\" : [\n [\"bmd_type\", 8, false],\n [\"_pad0\", 5, false],\n [\"mirror_type\", 3, false],\n [\"_pad1\", 7, false],\n [\"ig_port\", 9, false],\n [\"_pad2\", 7, false],\n [\"eg_port\", 9, false],\n [\"_pad3\", 3, false],\n [\"queue_id\", 5, false],\n [\"_pad4\", 5, false],\n [\"queue_occupancy\", 19, false],\n [\"ig_tstamp\", 32, false],\n [\"eg_tstamp\", 32, false],\n [\"drop_reason\", 8, false],\n [\"ip_eth_type\", 16, false],\n [\"_pad5\", 6, false],\n [\"encap_presence\", 2, false],\n [\"report_type\", 3, false],\n [\"_pad6\", 5, false],\n [\"flow_hash\", 32, false]\n ]\n },\n {\n \"name\" : \"int_metadata_t\",\n \"id\" : 15,\n \"fields\" : [\n [\"hop_latency\", 32, false],\n [\"timestamp\", 48, false],\n [\"vlan_stripped\", 1, 0],\n [\"queue_report\", 1, 0],\n [\"_padding\", 6, false]\n ]\n },\n {\n \"name\" : \"standard_metadata\",\n \"id\" : 16,\n \"fields\" : [\n [\"ingress_port\", 9, false],\n [\"egress_spec\", 9, false],\n [\"egress_port\", 9, false],\n [\"instance_type\", 32, false],\n [\"packet_length\", 32, false],\n [\"enq_timestamp\", 32, false],\n [\"enq_qdepth\", 19, false],\n [\"deq_timedelta\", 32, false],\n [\"deq_qdepth\", 19, false],\n [\"ingress_global_timestamp\", 48, false],\n [\"egress_global_timestamp\", 48, false],\n [\"mcast_grp\", 16, false],\n [\"egress_rid\", 16, false],\n [\"checksum_error\", 1, false],\n [\"parser_error\", 32, false],\n [\"priority\", 3, false],\n [\"_padding_0\", 3, false]\n ]\n },\n {\n \"name\" : \"packet_in_header_t\",\n \"id\" : 17,\n \"fields\" : [\n [\"ingress_port\", 9, false],\n [\"_pad0\", 7, false]\n ]\n },\n {\n \"name\" : \"vlan_tag_t\",\n \"id\" : 18,\n \"fields\" : [\n [\"eth_type\", 16, false],\n [\"pri\", 3, false],\n [\"cfi\", 1, false],\n [\"vlan_id\", 12, false]\n ]\n },\n {\n \"name\" : \"ipv6_t\",\n \"id\" : 19,\n \"fields\" : [\n [\"version\", 4, false],\n [\"traffic_class\", 8, false],\n [\"flow_label\", 20, false],\n [\"payload_len\", 16, false],\n [\"next_hdr\", 8, false],\n [\"hop_limit\", 8, false],\n [\"src_addr\", 128, false],\n [\"dst_addr\", 128, false]\n ]\n },\n {\n \"name\" : \"tcp_t\",\n \"id\" : 20,\n \"fields\" : [\n [\"sport\", 16, false],\n [\"dport\", 16, false]\n ]\n },\n {\n \"name\" : \"icmp_t\",\n \"id\" : 21,\n \"fields\" : [\n [\"icmp_type\", 8, false],\n [\"icmp_code\", 8, false]\n ]\n },\n {\n \"name\" : \"gtpu_options_t\",\n \"id\" : 22,\n \"fields\" : [\n [\"seq_num\", 16, false],\n [\"n_pdu_num\", 8, false],\n [\"next_ext\", 8, false]\n ]\n },\n {\n \"name\" : \"gtpu_ext_psc_t\",\n \"id\" : 23,\n \"fields\" : [\n [\"len\", 8, false],\n [\"type\", 4, false],\n [\"spare0\", 4, false],\n [\"ppp\", 1, false],\n [\"rqi\", 1, false],\n [\"qfi\", 6, false],\n [\"next_ext\", 8, false]\n ]\n },\n {\n \"name\" : \"vxlan_t\",\n \"id\" : 24,\n \"fields\" : [\n [\"flags\", 8, false],\n [\"reserved\", 24, false],\n [\"vni\", 24, false],\n [\"reserved_2\", 8, false]\n ]\n }\n ],\n \"headers\" : [\n {\n \"name\" : \"tmp\",\n \"id\" : 0,\n \"header_type\" : \"fake_ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"tmp_0\",\n \"id\" : 1,\n \"header_type\" : \"packet_out_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"tmp_1\",\n \"id\" : 2,\n \"header_type\" : \"fake_ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"gtpu_0\",\n \"id\" : 3,\n \"header_type\" : \"gtpu_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_report_ethernet\",\n \"id\" : 4,\n \"header_type\" : \"ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_report_eth_type\",\n \"id\" : 5,\n \"header_type\" : \"eth_type_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_report_ipv4\",\n \"id\" : 6,\n \"header_type\" : \"ipv4_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_report_udp\",\n \"id\" : 7,\n \"header_type\" : \"udp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_report_fixed_header\",\n \"id\" : 8,\n \"header_type\" : \"report_fixed_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_common_report_header\",\n \"id\" : 9,\n \"header_type\" : \"common_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_local_report_header\",\n \"id\" : 10,\n \"header_type\" : \"local_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"parser_emulator_hdr_drop_report_header\",\n \"id\" : 11,\n \"header_type\" : \"drop_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_report_eth_type\",\n \"id\" : 12,\n \"header_type\" : \"eth_type_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_report_mpls\",\n \"id\" : 13,\n \"header_type\" : \"mpls_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_report_ipv4\",\n \"id\" : 14,\n \"header_type\" : \"ipv4_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_report_udp\",\n \"id\" : 15,\n \"header_type\" : \"udp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_report_fixed_header\",\n \"id\" : 16,\n \"header_type\" : \"report_fixed_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_common_report_header\",\n \"id\" : 17,\n \"header_type\" : \"common_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_local_report_header\",\n \"id\" : 18,\n \"header_type\" : \"local_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_drop_report_header\",\n \"id\" : 19,\n \"header_type\" : \"drop_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_hdr_eth_type\",\n \"id\" : 20,\n \"header_type\" : \"eth_type_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_fabric_md_bridged\",\n \"id\" : 21,\n \"header_type\" : \"bridged_metadata_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_fabric_md_int_report_md\",\n \"id\" : 22,\n \"header_type\" : \"int_report_metadata_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"int_egress_fabric_md_int_md\",\n \"id\" : 23,\n \"header_type\" : \"int_metadata_t\",\n \"metadata\" : true,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"scalars\",\n \"id\" : 24,\n \"header_type\" : \"scalars_0\",\n \"metadata\" : true,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"standard_metadata\",\n \"id\" : 25,\n \"header_type\" : \"standard_metadata\",\n \"metadata\" : true,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_packet_out0\",\n \"id\" : 26,\n \"header_type\" : \"packet_out_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_packet_in1\",\n \"id\" : 27,\n \"header_type\" : \"packet_in_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_fake_ethernet2\",\n \"id\" : 28,\n \"header_type\" : \"fake_ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_ethernet3\",\n \"id\" : 29,\n \"header_type\" : \"ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_vlan_tag4\",\n \"id\" : 30,\n \"header_type\" : \"vlan_tag_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_eth_type5\",\n \"id\" : 31,\n \"header_type\" : \"eth_type_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_mpls6\",\n \"id\" : 32,\n \"header_type\" : \"mpls_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_ipv47\",\n \"id\" : 33,\n \"header_type\" : \"ipv4_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_ipv68\",\n \"id\" : 34,\n \"header_type\" : \"ipv6_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_tcp9\",\n \"id\" : 35,\n \"header_type\" : \"tcp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_udp10\",\n \"id\" : 36,\n \"header_type\" : \"udp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_icmp11\",\n \"id\" : 37,\n \"header_type\" : \"icmp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_gtpu12\",\n \"id\" : 38,\n \"header_type\" : \"gtpu_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_gtpu_options13\",\n \"id\" : 39,\n \"header_type\" : \"gtpu_options_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_gtpu_ext_psc14\",\n \"id\" : 40,\n \"header_type\" : \"gtpu_ext_psc_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_vxlan15\",\n \"id\" : 41,\n \"header_type\" : \"vxlan_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_inner_ethernet16\",\n \"id\" : 42,\n \"header_type\" : \"ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_inner_eth_type17\",\n \"id\" : 43,\n \"header_type\" : \"eth_type_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_inner_ipv418\",\n \"id\" : 44,\n \"header_type\" : \"ipv4_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_inner_tcp19\",\n \"id\" : 45,\n \"header_type\" : \"tcp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_inner_udp20\",\n \"id\" : 46,\n \"header_type\" : \"udp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_inner_icmp21\",\n \"id\" : 47,\n \"header_type\" : \"icmp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_packet_in22\",\n \"id\" : 48,\n \"header_type\" : \"packet_in_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_fake_ethernet23\",\n \"id\" : 49,\n \"header_type\" : \"fake_ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_report_ethernet24\",\n \"id\" : 50,\n \"header_type\" : \"ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_report_eth_type25\",\n \"id\" : 51,\n \"header_type\" : \"eth_type_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_report_mpls26\",\n \"id\" : 52,\n \"header_type\" : \"mpls_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_report_ipv427\",\n \"id\" : 53,\n \"header_type\" : \"ipv4_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_report_udp28\",\n \"id\" : 54,\n \"header_type\" : \"udp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_report_fixed_header29\",\n \"id\" : 55,\n \"header_type\" : \"report_fixed_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_common_report_header30\",\n \"id\" : 56,\n \"header_type\" : \"common_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_local_report_header31\",\n \"id\" : 57,\n \"header_type\" : \"local_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_drop_report_header32\",\n \"id\" : 58,\n \"header_type\" : \"drop_report_header_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_ethernet33\",\n \"id\" : 59,\n \"header_type\" : \"ethernet_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_vlan_tag34\",\n \"id\" : 60,\n \"header_type\" : \"vlan_tag_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_eth_type35\",\n \"id\" : 61,\n \"header_type\" : \"eth_type_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_mpls36\",\n \"id\" : 62,\n \"header_type\" : \"mpls_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_outer_ipv437\",\n \"id\" : 63,\n \"header_type\" : \"ipv4_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_outer_udp38\",\n \"id\" : 64,\n \"header_type\" : \"udp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_outer_gtpu39\",\n \"id\" : 65,\n \"header_type\" : \"gtpu_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_outer_gtpu_options40\",\n \"id\" : 66,\n \"header_type\" : \"gtpu_options_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_outer_gtpu_ext_psc41\",\n \"id\" : 67,\n \"header_type\" : \"gtpu_ext_psc_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_ipv442\",\n \"id\" : 68,\n \"header_type\" : \"ipv4_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_ipv643\",\n \"id\" : 69,\n \"header_type\" : \"ipv6_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_udp44\",\n \"id\" : 70,\n \"header_type\" : \"udp_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_ingress_bridged4\",\n \"id\" : 71,\n \"header_type\" : \"bridged_metadata_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_bridged36\",\n \"id\" : 72,\n \"header_type\" : \"bridged_metadata_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n },\n {\n \"name\" : \"_egress_int_report_md39\",\n \"id\" : 73,\n \"header_type\" : \"int_report_metadata_t\",\n \"metadata\" : false,\n \"pi_omit\" : true\n }\n ],\n \"header_stacks\" : [],\n \"header_union_types\" : [],\n \"header_unions\" : [],\n \"header_union_stacks\" : [],\n \"field_lists\" : [\n {\n \"id\" : 1,\n \"name\" : \"field_list241\",\n \"elements\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_report_type47\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_egress_port48\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_drop_reason49\"]\n }\n ]\n },\n {\n \"id\" : 2,\n \"name\" : \"field_list231\",\n \"elements\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_ingress_port50\"]\n }\n ]\n },\n {\n \"id\" : 3,\n \"name\" : \"empty\",\n \"elements\" : []\n },\n {\n \"id\" : 4,\n \"name\" : \"empty_0\",\n \"elements\" : []\n },\n {\n \"id\" : 5,\n \"name\" : \"empty_1\",\n \"elements\" : []\n }\n ],\n \"errors\" : [\n [\"NoError\", 1],\n [\"PacketTooShort\", 2],\n [\"NoMatch\", 3],\n [\"StackOutOfBounds\", 4],\n [\"HeaderTooShort\", 5],\n [\"ParserTimeout\", 6],\n [\"ParserInvalidArgument\", 7],\n [\"PacketRejectedByParser\", 8]\n ],\n \"enums\" : [],\n \"parsers\" : [\n {\n \"name\" : \"parser\",\n \"id\" : 0,\n \"init_state\" : \"start\",\n \"parse_states\" : [\n {\n \"name\" : \"start\",\n \"id\" : 0,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_pkt_length46\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"packet_length\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000ffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_bridged4\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_bmd_type0\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ig_port3\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"ingress_port\"]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_ingress_port50\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"ingress_port\"]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ig_tstamp9\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"ingress_global_timestamp\"]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_egress_port_set22\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_punt_to_cpu23\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ip_eth_type10\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_wip_type26\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_encap_presence7\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_meter_color32\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_8\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 112]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"tmp\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp\", \"_pad0\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_8\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp\", \"_pad1\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_8\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x10\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp\", \"ether_type\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_8\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_2\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_8\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf02\",\n \"mask\" : null,\n \"next_state\" : \"parse_fake_ethernet\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf03\",\n \"mask\" : null,\n \"next_state\" : \"parse_fake_ethernet_and_accept\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf01\",\n \"mask\" : null,\n \"next_state\" : \"check_packet_out\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf04\",\n \"mask\" : null,\n \"next_state\" : \"parse_int_wip_ipv4\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf05\",\n \"mask\" : null,\n \"next_state\" : \"parse_int_wip_mpls\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_ethernet\"\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_2\"]\n }\n ]\n },\n {\n \"name\" : \"check_packet_out\",\n \"id\" : 1,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 112]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"tmp_0\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"pad0\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x69\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x7f\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"egress_port\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x60\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01ff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"pad1\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x5d\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x07\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"queue_id\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x58\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1f\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"pad2\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x53\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1f\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"cpu_loopback_mode\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x51\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x03\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"do_forwarding\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x50\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"pad3\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"pad4\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x10\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_0\", \"ether_type\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_4\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x50\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\",\n \"mask\" : null,\n \"next_state\" : \"parse_packet_out_and_accept\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"strip_packet_out\"\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_4\"]\n }\n ]\n },\n {\n \"name\" : \"parse_int_wip_ipv4\",\n \"id\" : 2,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ethernet3\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_eth_type5\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_wip_type26\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_ttl8\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x41\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000070\"\n }\n ],\n \"op\" : \"advance\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_ipv4\"\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_int_wip_mpls\",\n \"id\" : 3,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ethernet3\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_eth_type5\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8847\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_wip_type26\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000070\"\n }\n ],\n \"op\" : \"advance\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_mpls\"\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_packet_out_and_accept\",\n \"id\" : 4,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_packet_out0\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"strip_packet_out\",\n \"id\" : 5,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000070\"\n }\n ],\n \"op\" : \"advance\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_ethernet\"\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_fake_ethernet\",\n \"id\" : 6,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_fake_ethernet2\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_10\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 112]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"tmp_1\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_1\", \"_pad0\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_10\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_1\", \"_pad1\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_10\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x10\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"tmp_1\", \"ether_type\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_10\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_6\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_10\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf04\",\n \"mask\" : null,\n \"next_state\" : \"parse_int_wip_ipv4\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf05\",\n \"mask\" : null,\n \"next_state\" : \"parse_int_wip_mpls\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_ethernet\"\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_6\"]\n }\n ]\n },\n {\n \"name\" : \"parse_fake_ethernet_and_accept\",\n \"id\" : 7,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_fake_ethernet2\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_ethernet\",\n \"id\" : 8,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_ethernet3\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_3\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 16]\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x88a8\",\n \"mask\" : null,\n \"next_state\" : \"parse_vlan_tag\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8100\",\n \"mask\" : \"0xefff\",\n \"next_state\" : \"parse_vlan_tag\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_untagged\"\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_3\"]\n }\n ]\n },\n {\n \"name\" : \"parse_vlan_tag\",\n \"id\" : 9,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_vlan_tag4\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_vlan_tag4\", \"vlan_id\"]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_5\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 16]\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_eth_type\"\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_5\"]\n }\n ]\n },\n {\n \"name\" : \"parse_untagged\",\n \"id\" : 10,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0ffe\"\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_eth_type\"\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_eth_type\",\n \"id\" : 11,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_eth_type5\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8847\",\n \"mask\" : null,\n \"next_state\" : \"parse_mpls\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\",\n \"mask\" : null,\n \"next_state\" : \"parse_non_mpls\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x86dd\",\n \"mask\" : null,\n \"next_state\" : \"parse_non_mpls\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n }\n ]\n },\n {\n \"name\" : \"parse_mpls\",\n \"id\" : 12,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_mpls6\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"label\"]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_ttl8\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"ttl\"]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_7\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 4]\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\",\n \"mask\" : null,\n \"next_state\" : \"parse_ipv4\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x06\",\n \"mask\" : null,\n \"next_state\" : \"parse_ipv6\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"reject_packet\"\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_7\"]\n }\n ]\n },\n {\n \"name\" : \"reject_packet\",\n \"id\" : 13,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"bool\",\n \"value\" : false\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8\"\n }\n ],\n \"op\" : \"verify\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_non_mpls\",\n \"id\" : 14,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_ttl8\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x41\"\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\",\n \"mask\" : null,\n \"next_state\" : \"parse_ipv4\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x86dd\",\n \"mask\" : null,\n \"next_state\" : \"parse_ipv6\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n }\n ]\n },\n {\n \"name\" : \"parse_ipv4\",\n \"id\" : 15,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_ipv47\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dst_addr\"]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ip_eth_type10\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\"\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x06\",\n \"mask\" : null,\n \"next_state\" : \"parse_tcp\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\",\n \"mask\" : null,\n \"next_state\" : \"parse_udp\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\",\n \"mask\" : null,\n \"next_state\" : \"parse_icmp\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"protocol\"]\n }\n ]\n },\n {\n \"name\" : \"parse_ipv6\",\n \"id\" : 16,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_ipv68\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ip_eth_type10\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x86dd\"\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x06\",\n \"mask\" : null,\n \"next_state\" : \"parse_tcp\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\",\n \"mask\" : null,\n \"next_state\" : \"parse_udp\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3a\",\n \"mask\" : null,\n \"next_state\" : \"parse_icmp\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv68\", \"next_hdr\"]\n }\n ]\n },\n {\n \"name\" : \"parse_icmp\",\n \"id\" : 17,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_icmp11\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_tcp\",\n \"id\" : 18,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_tcp9\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_udp\",\n \"id\" : 19,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_udp10\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 64]\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"gtpu_0\"\n }\n ],\n \"op\" : \"add_header\"\n }\n ],\n \"op\" : \"primitive\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"version\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3d\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x07\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"pt\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3c\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"spare\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3b\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"ex_flag\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3a\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"seq_flag\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x39\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"npdu_flag\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x38\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"msgtype\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x30\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"msglen\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x20\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"gtpu_0\", \"teid\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_12\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3d\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x07\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_13\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_11\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x30\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffffffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x086801ff\",\n \"mask\" : null,\n \"next_state\" : \"parse_gtpu\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x12b50000\",\n \"mask\" : \"0xffff0000\",\n \"next_state\" : \"parse_vxlan\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"dport\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_12\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_13\"]\n }\n ]\n },\n {\n \"name\" : \"parse_gtpu\",\n \"id\" : 20,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_gtpu12\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\",\n \"mask\" : null,\n \"next_state\" : \"set_gtpu_only\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_gtpu_options\"\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"ex_flag\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"seq_flag\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"npdu_flag\"]\n }\n ]\n },\n {\n \"name\" : \"set_gtpu_only\",\n \"id\" : 21,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_encap_presence7\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : \"parse_inner_ipv4\"\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_gtpu_options\",\n \"id\" : 22,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_gtpu_options13\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"gtpu_ext_len_0\"]\n },\n {\n \"type\" : \"lookahead\",\n \"value\" : [0, 8]\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8501\",\n \"mask\" : null,\n \"next_state\" : \"parse_gtpu_ext_psc\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_options13\", \"next_ext\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"gtpu_ext_len_0\"]\n }\n ]\n },\n {\n \"name\" : \"parse_gtpu_ext_psc\",\n \"id\" : 23,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_gtpu_ext_psc14\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_encap_presence7\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"op\" : \"set\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\",\n \"mask\" : null,\n \"next_state\" : \"parse_inner_ipv4\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"next_ext\"]\n }\n ]\n },\n {\n \"name\" : \"parse_vxlan\",\n \"id\" : 24,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_vxlan15\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_encap_presence7\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x03\"\n }\n ],\n \"op\" : \"set\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_inner_ethernet16\"\n }\n ],\n \"op\" : \"extract\"\n },\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_inner_eth_type17\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\",\n \"mask\" : null,\n \"next_state\" : \"parse_inner_ipv4\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_eth_type17\", \"value\"]\n }\n ]\n },\n {\n \"name\" : \"parse_inner_ipv4\",\n \"id\" : 25,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_inner_ipv418\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x06\",\n \"mask\" : null,\n \"next_state\" : \"parse_inner_tcp\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\",\n \"mask\" : null,\n \"next_state\" : \"parse_inner_udp\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\",\n \"mask\" : null,\n \"next_state\" : \"parse_inner_icmp\"\n },\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"protocol\"]\n }\n ]\n },\n {\n \"name\" : \"parse_inner_tcp\",\n \"id\" : 26,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_inner_tcp19\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_inner_udp\",\n \"id\" : 27,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_inner_udp20\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n },\n {\n \"name\" : \"parse_inner_icmp\",\n \"id\" : 28,\n \"parser_ops\" : [\n {\n \"parameters\" : [\n {\n \"type\" : \"regular\",\n \"value\" : \"_ingress_inner_icmp21\"\n }\n ],\n \"op\" : \"extract\"\n }\n ],\n \"transitions\" : [\n {\n \"type\" : \"default\",\n \"value\" : null,\n \"mask\" : null,\n \"next_state\" : null\n }\n ],\n \"transition_key\" : []\n }\n ]\n }\n ],\n \"parse_vsets\" : [],\n \"deparsers\" : [\n {\n \"name\" : \"deparser\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/parser.p4\",\n \"line\" : 321,\n \"column\" : 8,\n \"source_fragment\" : \"FabricDeparser\"\n },\n \"order\" : [\"_ingress_fake_ethernet2\", \"_ingress_packet_in1\", \"_egress_report_ethernet24\", \"_egress_report_eth_type25\", \"_egress_report_mpls26\", \"_egress_report_ipv427\", \"_egress_report_udp28\", \"_egress_report_fixed_header29\", \"_egress_common_report_header30\", \"_egress_local_report_header31\", \"_egress_drop_report_header32\", \"_ingress_ethernet3\", \"_ingress_vlan_tag4\", \"_ingress_eth_type5\", \"_ingress_mpls6\", \"_ingress_ipv47\", \"_ingress_ipv68\", \"_ingress_tcp9\", \"_ingress_udp10\", \"_ingress_icmp11\", \"_ingress_gtpu12\", \"_ingress_gtpu_options13\", \"_ingress_gtpu_ext_psc14\", \"_ingress_vxlan15\", \"_ingress_inner_ethernet16\", \"_ingress_inner_eth_type17\", \"_ingress_inner_ipv418\", \"_ingress_inner_tcp19\", \"_ingress_inner_udp20\", \"_ingress_inner_icmp21\"],\n \"primitives\" : []\n }\n ],\n \"meter_arrays\" : [\n {\n \"name\" : \"FabricIngress.qos.slice_tc_meter\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 104,\n \"column\" : 41,\n \"source_fragment\" : \"slice_tc_meter\"\n },\n \"is_direct\" : false,\n \"size\" : 64,\n \"rate_count\" : 2,\n \"type\" : \"bytes\"\n },\n {\n \"name\" : \"FabricIngress.upf.session_meter\",\n \"id\" : 1,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 22,\n \"column\" : 34,\n \"source_fragment\" : \"session_meter\"\n },\n \"is_direct\" : false,\n \"size\" : 20000,\n \"rate_count\" : 2,\n \"type\" : \"bytes\"\n },\n {\n \"name\" : \"FabricIngress.upf.app_meter\",\n \"id\" : 2,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 23,\n \"column\" : 34,\n \"source_fragment\" : \"app_meter\"\n },\n \"is_direct\" : false,\n \"size\" : 20000,\n \"rate_count\" : 2,\n \"type\" : \"bytes\"\n }\n ],\n \"counter_arrays\" : [\n {\n \"name\" : \"FabricIngress.stats.flow_counter\",\n \"id\" : 0,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.stats.flows\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4\",\n \"line\" : 14,\n \"column\" : 50,\n \"source_fragment\" : \"flow_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.filtering.ingress_port_vlan_counter\",\n \"id\" : 1,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.filtering.ingress_port_vlan\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 17,\n \"column\" : 50,\n \"source_fragment\" : \"ingress_port_vlan_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.filtering.fwd_classifier_counter\",\n \"id\" : 2,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.filtering.fwd_classifier\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 71,\n \"column\" : 50,\n \"source_fragment\" : \"fwd_classifier_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.filtering.fwd_type_counter\",\n \"id\" : 3,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 78,\n \"column\" : 46,\n \"source_fragment\" : \"fwd_type_counter\"\n },\n \"size\" : 8,\n \"is_direct\" : false\n },\n {\n \"name\" : \"FabricIngress.forwarding.bridging_counter\",\n \"id\" : 4,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.forwarding.bridging\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 29,\n \"column\" : 50,\n \"source_fragment\" : \"bridging_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.forwarding.mpls_counter\",\n \"id\" : 5,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.forwarding.mpls\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 64,\n \"column\" : 50,\n \"source_fragment\" : \"mpls_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.forwarding.routing_v4_counter\",\n \"id\" : 6,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.forwarding.routing_v4\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 98,\n \"column\" : 50,\n \"source_fragment\" : \"routing_v4_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.forwarding.routing_v6_counter\",\n \"id\" : 7,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.forwarding.routing_v6\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 142,\n \"column\" : 50,\n \"source_fragment\" : \"routing_v6_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.pre_next.next_mpls_counter\",\n \"id\" : 8,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.pre_next.next_mpls\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4\",\n \"line\" : 15,\n \"column\" : 50,\n \"source_fragment\" : \"next_mpls_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.pre_next.next_vlan_counter\",\n \"id\" : 9,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.pre_next.next_vlan\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4\",\n \"line\" : 39,\n \"column\" : 50,\n \"source_fragment\" : \"next_vlan_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.acl.acl_counter\",\n \"id\" : 10,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.acl.acl\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 19,\n \"column\" : 50,\n \"source_fragment\" : \"acl_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.next.hashed_counter\",\n \"id\" : 11,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.next.hashed\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 115,\n \"column\" : 50,\n \"source_fragment\" : \"hashed_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.next.multicast_counter\",\n \"id\" : 12,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.next.multicast\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 148,\n \"column\" : 50,\n \"source_fragment\" : \"multicast_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.slice_tc_classifier.classifier_stats\",\n \"id\" : 13,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.slice_tc_classifier.classifier\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 20,\n \"column\" : 40,\n \"source_fragment\" : \"classifier_stats\"\n }\n },\n {\n \"name\" : \"FabricIngress.qos.queues_stats\",\n \"id\" : 14,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.qos.queues\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 106,\n \"column\" : 40,\n \"source_fragment\" : \"queues_stats\"\n }\n },\n {\n \"name\" : \"FabricIngress.upf.terminations_counter\",\n \"id\" : 15,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 20,\n \"column\" : 49,\n \"source_fragment\" : \"terminations_counter\"\n },\n \"size\" : 4096,\n \"is_direct\" : false\n },\n {\n \"name\" : \"FabricIngress.upf.recirc_stats\",\n \"id\" : 16,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.upf.uplink_recirc_rules\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 356,\n \"column\" : 40,\n \"source_fragment\" : \"recirc_stats\"\n }\n },\n {\n \"name\" : \"FabricIngress.int_watchlist.watchlist_counter\",\n \"id\" : 17,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.int_watchlist.watchlist\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 15,\n \"column\" : 50,\n \"source_fragment\" : \"watchlist_counter\"\n }\n },\n {\n \"name\" : \"FabricIngress.int_ingress.drop_report_counter\",\n \"id\" : 18,\n \"is_direct\" : true,\n \"binding\" : \"FabricIngress.int_ingress.drop_report\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 64,\n \"column\" : 50,\n \"source_fragment\" : \"drop_report_counter\"\n }\n },\n {\n \"name\" : \"FabricEgress.stats.flow_counter\",\n \"id\" : 19,\n \"is_direct\" : true,\n \"binding\" : \"FabricEgress.stats.flows\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4\",\n \"line\" : 47,\n \"column\" : 50,\n \"source_fragment\" : \"flow_counter\"\n }\n },\n {\n \"name\" : \"FabricEgress.egress_next.egress_vlan_counter\",\n \"id\" : 20,\n \"is_direct\" : true,\n \"binding\" : \"FabricEgress.egress_next.egress_vlan\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 241,\n \"column\" : 50,\n \"source_fragment\" : \"egress_vlan_counter\"\n }\n },\n {\n \"name\" : \"FabricEgress.upf.terminations_counter\",\n \"id\" : 21,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 477,\n \"column\" : 49,\n \"source_fragment\" : \"terminations_counter\"\n },\n \"size\" : 4096,\n \"is_direct\" : false\n },\n {\n \"name\" : \"FabricEgress.int_egress.report_counter\",\n \"id\" : 22,\n \"is_direct\" : true,\n \"binding\" : \"FabricEgress.int_egress.report\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 131,\n \"column\" : 50,\n \"source_fragment\" : \"report_counter\"\n }\n },\n {\n \"name\" : \"FabricEgress.int_egress.int_metadata_counter\",\n \"id\" : 23,\n \"is_direct\" : true,\n \"binding\" : \"FabricEgress.int_egress.int_metadata\",\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 132,\n \"column\" : 50,\n \"source_fragment\" : \"int_metadata_counter\"\n }\n }\n ],\n \"register_arrays\" : [\n {\n \"name\" : \"FabricEgress.int_egress.seq_number\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 138,\n \"column\" : 28,\n \"source_fragment\" : \"seq_number\"\n },\n \"size\" : 1024,\n \"bitwidth\" : 32\n }\n ],\n \"calculations\" : [\n {\n \"name\" : \"calc\",\n \"id\" : 0,\n \"algo\" : \"crc32\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_18\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_19\"]\n }\n ]\n },\n {\n \"name\" : \"calc_0\",\n \"id\" : 1,\n \"algo\" : \"crc32\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_20\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_21\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_22\"]\n }\n ]\n },\n {\n \"name\" : \"calc_1\",\n \"id\" : 2,\n \"algo\" : \"crc32\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_23\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_24\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_25\"]\n }\n ]\n },\n {\n \"name\" : \"calc_2\",\n \"id\" : 3,\n \"algo\" : \"crc32\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_26\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_27\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_28\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_29\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_30\"]\n }\n ]\n },\n {\n \"name\" : \"calc_3\",\n \"id\" : 4,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 55,\n \"column\" : 8,\n \"source_fragment\" : \"update_checksum(hdr.ingress.ipv4.isValid(), ...\"\n },\n \"algo\" : \"csum16\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"version\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ihl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dscp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ecn\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"total_len\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"identification\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"flags\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"frag_offset\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ttl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"protocol\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"src_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dst_addr\"]\n }\n ]\n },\n {\n \"name\" : \"calc_4\",\n \"id\" : 5,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 73,\n \"column\" : 8,\n \"source_fragment\" : \"update_checksum(hdr.ingress.inner_ipv4.isValid(), ...\"\n },\n \"algo\" : \"csum16\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"version\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"ihl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"dscp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"ecn\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"identification\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"flags\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"frag_offset\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"ttl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"protocol\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"src_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"dst_addr\"]\n }\n ]\n },\n {\n \"name\" : \"calc_5\",\n \"id\" : 6,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 92,\n \"column\" : 8,\n \"source_fragment\" : \"update_checksum(hdr.egress.report_ipv4.isValid(), ...\"\n },\n \"algo\" : \"csum16\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"version\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"ihl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"dscp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"ecn\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"total_len\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"identification\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"flags\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"frag_offset\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"ttl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"protocol\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"src_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"dst_addr\"]\n }\n ]\n },\n {\n \"name\" : \"calc_6\",\n \"id\" : 7,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 13,\n \"column\" : 8,\n \"source_fragment\" : \"verify_checksum(hdr.ingress.ipv4.isValid(), ...\"\n },\n \"algo\" : \"csum16\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"version\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ihl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dscp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ecn\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"total_len\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"identification\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"flags\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"frag_offset\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ttl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"protocol\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"src_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dst_addr\"]\n }\n ]\n },\n {\n \"name\" : \"calc_7\",\n \"id\" : 8,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 31,\n \"column\" : 8,\n \"source_fragment\" : \"verify_checksum(hdr.ingress.inner_ipv4.isValid(), ...\"\n },\n \"algo\" : \"csum16\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"version\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"ihl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"dscp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"ecn\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"identification\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"flags\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"frag_offset\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"ttl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"protocol\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"src_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"dst_addr\"]\n }\n ]\n }\n ],\n \"learn_lists\" : [],\n \"actions\" : [\n {\n \"name\" : \"nop\",\n \"id\" : 0,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 1,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 2,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 3,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 4,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 5,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 6,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"NoAction\",\n \"id\" : 7,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricIngress.stats.count\",\n \"id\" : 8,\n \"runtime_data\" : [\n {\n \"name\" : \"flow_id\",\n \"bitwidth\" : 10\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_stats_flow_id11\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4\",\n \"line\" : 17,\n \"column\" : 22,\n \"source_fragment\" : \"= flow_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.pkt_io.do_packet_out\",\n \"id\" : 9,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_packet_out0\", \"egress_port\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01ff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 13,\n \"column\" : 8,\n \"source_fragment\" : \"standard_md.egress_spec = (PortId_t)hdr.packet_out.egress_port\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_egress_port48\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_packet_out0\", \"egress_port\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 14,\n \"column\" : 37,\n \"source_fragment\" : \"= hdr.packet_out.egress_port; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_egress_port_set22\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 15,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_packet_out0\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 16,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.packet_out.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._skip_egress0\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 17,\n \"column\" : 20,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_bridged4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 19,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.setInvalid()\"\n }\n },\n {\n \"op\" : \"exit\",\n \"parameters\" : [],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 20,\n \"column\" : 8,\n \"source_fragment\" : \"exit\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.filtering.deny\",\n \"id\" : 10,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 22,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 23,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ig_port_type33\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 100,\n \"column\" : 14,\n \"source_fragment\" : \"0x0, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x37\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 250,\n \"column\" : 41,\n \"source_fragment\" : \"55, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.filtering.permit\",\n \"id\" : 11,\n \"runtime_data\" : [\n {\n \"name\" : \"port_type\",\n \"bitwidth\" : 2\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ig_port_type33\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 33,\n \"column\" : 31,\n \"source_fragment\" : \"= port_type; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.filtering.permit_with_internal_vlan\",\n \"id\" : 12,\n \"runtime_data\" : [\n {\n \"name\" : \"vlan_id\",\n \"bitwidth\" : 12\n },\n {\n \"name\" : \"port_type\",\n \"bitwidth\" : 2\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 38,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.vlan_id = vlan_id\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ig_port_type33\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 33,\n \"column\" : 31,\n \"source_fragment\" : \"= port_type; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.filtering.set_forwarding_type\",\n \"id\" : 13,\n \"runtime_data\" : [\n {\n \"name\" : \"fwd_type\",\n \"bitwidth\" : 3\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_fwd_type5\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 74,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.fwd_type = fwd_type\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.set_int_drop_reason\",\n \"id\" : 14,\n \"runtime_data\" : [\n {\n \"name\" : \"drop_reason\",\n \"bitwidth\" : 8\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 17,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.set_int_drop_reason\",\n \"id\" : 15,\n \"runtime_data\" : [\n {\n \"name\" : \"drop_reason\",\n \"bitwidth\" : 8\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 17,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.set_int_drop_reason\",\n \"id\" : 16,\n \"runtime_data\" : [\n {\n \"name\" : \"drop_reason\",\n \"bitwidth\" : 8\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 17,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.set_int_drop_reason\",\n \"id\" : 17,\n \"runtime_data\" : [\n {\n \"name\" : \"drop_reason\",\n \"bitwidth\" : 8\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 17,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.int_bmd.drop_reason = (IntDropReason_t)drop_reason\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.set_next_id_bridging\",\n \"id\" : 18,\n \"runtime_data\" : [\n {\n \"name\" : \"next_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_next_id21\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 23,\n \"column\" : 26,\n \"source_fragment\" : \"= next_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.pop_mpls_and_next\",\n \"id\" : 19,\n \"runtime_data\" : [\n {\n \"name\" : \"next_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_mpls6\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 67,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.mpls.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ip_eth_type10\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 68,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.eth_type.value = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 69,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.mpls_label = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_next_id21\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 23,\n \"column\" : 26,\n \"source_fragment\" : \"= next_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.set_next_id_routing_v4\",\n \"id\" : 20,\n \"runtime_data\" : [\n {\n \"name\" : \"next_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_next_id21\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 23,\n \"column\" : 26,\n \"source_fragment\" : \"= next_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.nop_routing_v4\",\n \"id\" : 21,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricIngress.forwarding.drop_routing_v4\",\n \"id\" : 22,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 111,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 113,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.set_next_id_routing_v6\",\n \"id\" : 23,\n \"runtime_data\" : [\n {\n \"name\" : \"next_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_next_id21\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 23,\n \"column\" : 26,\n \"source_fragment\" : \"= next_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.forwarding.drop_routing_v6\",\n \"id\" : 24,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 150,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 152,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.pre_next.set_mpls_label\",\n \"id\" : 25,\n \"runtime_data\" : [\n {\n \"name\" : \"label\",\n \"bitwidth\" : 20\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4\",\n \"line\" : 18,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.mpls_label = label\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.pre_next.set_vlan\",\n \"id\" : 26,\n \"runtime_data\" : [\n {\n \"name\" : \"vlan_id\",\n \"bitwidth\" : 12\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4\",\n \"line\" : 42,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.vlan_id = vlan_id\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.acl.set_next_id_acl\",\n \"id\" : 27,\n \"runtime_data\" : [\n {\n \"name\" : \"next_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_next_id21\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 22,\n \"column\" : 26,\n \"source_fragment\" : \"= next_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 26,\n \"column\" : 28,\n \"source_fragment\" : \"= false; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 27,\n \"column\" : 17,\n \"source_fragment\" : \"= 0; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.acl.copy_to_cpu\",\n \"id\" : 28,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"clone_ingress_pkt_to_egress\",\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000001ff\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x2\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 31,\n \"column\" : 8,\n \"source_fragment\" : \"clone_preserving_field_list(CloneType.I2E, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.acl.punt_to_cpu\",\n \"id\" : 29,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"clone_ingress_pkt_to_egress\",\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000001ff\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x2\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 31,\n \"column\" : 8,\n \"source_fragment\" : \"clone_preserving_field_list(CloneType.I2E, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 40,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_punt_to_cpu23\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 41,\n \"column\" : 30,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 42,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.acl.drop\",\n \"id\" : 30,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 46,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 47,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x50\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 252,\n \"column\" : 27,\n \"source_fragment\" : \"80, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.acl.set_output_port\",\n \"id\" : 31,\n \"runtime_data\" : [\n {\n \"name\" : \"port_num\",\n \"bitwidth\" : 9\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01ff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 62,\n \"column\" : 8,\n \"source_fragment\" : \"standard_md.egress_spec = (PortId_t) port_num\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_egress_port48\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 63,\n \"column\" : 37,\n \"source_fragment\" : \"= port_num; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_egress_port_set22\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 64,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 65,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 66,\n \"column\" : 17,\n \"source_fragment\" : \"= 0; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.acl.nop_acl\",\n \"id\" : 32,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricIngress.next.output_hashed\",\n \"id\" : 33,\n \"runtime_data\" : [\n {\n \"name\" : \"port_num\",\n \"bitwidth\" : 9\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01ff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 16,\n \"column\" : 8,\n \"source_fragment\" : \"standard_md.egress_spec = (PortId_t)port_num\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_egress_port48\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 17,\n \"column\" : 37,\n \"source_fragment\" : \"= port_num; // Needed by INT. ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_egress_port_set22\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 18,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.next.routing_hashed\",\n \"id\" : 34,\n \"runtime_data\" : [\n {\n \"name\" : \"port_num\",\n \"bitwidth\" : 9\n },\n {\n \"name\" : \"smac\",\n \"bitwidth\" : 48\n },\n {\n \"name\" : \"dmac\",\n \"bitwidth\" : 48\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ethernet3\", \"src_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 23,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ethernet.src_addr = smac; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ethernet3\", \"dst_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 28,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ethernet.dst_addr = dmac; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01ff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 16,\n \"column\" : 8,\n \"source_fragment\" : \"standard_md.egress_spec = (PortId_t)port_num\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_egress_port48\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 17,\n \"column\" : 37,\n \"source_fragment\" : \"= port_num; // Needed by INT. ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_egress_port_set22\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 18,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.next.set_mcast_group_id\",\n \"id\" : 35,\n \"runtime_data\" : [\n {\n \"name\" : \"group_id\",\n \"bitwidth\" : 16\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"mcast_grp\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 151,\n \"column\" : 8,\n \"source_fragment\" : \"standard_md.mcast_grp = group_id\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_is_multicast4\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 152,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.is_multicast = true\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.next.reset_mcast_group_id\",\n \"id\" : 36,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"mcast_grp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 157,\n \"column\" : 8,\n \"source_fragment\" : \"standard_md.mcast_grp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_is_multicast4\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 158,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.is_multicast = false\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.slice_tc_classifier.set_slice_id_tc\",\n \"id\" : 37,\n \"runtime_data\" : [\n {\n \"name\" : \"slice_id\",\n \"bitwidth\" : 4\n },\n {\n \"name\" : \"tc\",\n \"bitwidth\" : 2\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_slice_id26\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 23,\n \"column\" : 27,\n \"source_fragment\" : \"= slice_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc27\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 24,\n \"column\" : 21,\n \"source_fragment\" : \"= tc; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc_unknown28\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 25,\n \"column\" : 29,\n \"source_fragment\" : \"= false; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.slice_tc_classifier.no_classification\",\n \"id\" : 38,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_slice_id26\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 57,\n \"column\" : 36,\n \"source_fragment\" : \"0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc27\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 58,\n \"column\" : 24,\n \"source_fragment\" : \"0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc_unknown28\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 25,\n \"column\" : 29,\n \"source_fragment\" : \"= false; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc_unknown28\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 31,\n \"column\" : 29,\n \"source_fragment\" : \"= true; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.slice_tc_classifier.trust_dscp\",\n \"id\" : 39,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_slice_id26\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dscp\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x2\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0f\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 38,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr.ipv4.dscp[4 +2 -1:2]; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc27\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dscp\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x03\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 39,\n \"column\" : 21,\n \"source_fragment\" : \"= hdr.ipv4.dscp[2 -1:0]; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc_unknown28\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 40,\n \"column\" : 29,\n \"source_fragment\" : \"= false; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.qos.use_upf\",\n \"id\" : 40,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_slice_tc12\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"|\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"<<\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_slice_id30\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x2\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_tc31\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x07\"\n }\n }\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 81,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.slice_tc = fabric_md.upf_slice_id++fabric_md.upf_tc\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.qos.use_default\",\n \"id\" : 41,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_slice_tc12\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"|\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"<<\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_slice_id26\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x2\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc27\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x07\"\n }\n }\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 86,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.slice_tc = fabric_md.slice_id++fabric_md.tc\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.qos.set_queue\",\n \"id\" : 42,\n \"runtime_data\" : [\n {\n \"name\" : \"qid\",\n \"bitwidth\" : 5\n }\n ],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricIngress.qos.meter_drop\",\n \"id\" : 43,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 115,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xa0\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 269,\n \"column\" : 36,\n \"source_fragment\" : \"160, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.qos.set_default_tc\",\n \"id\" : 44,\n \"runtime_data\" : [\n {\n \"name\" : \"tc\",\n \"bitwidth\" : 2\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_slice_tc12\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"|\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"<<\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_slice_tc12\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x2\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x2\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x07\"\n }\n }\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 146,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.slice_tc = fabric_md.bridged.base.slice_tc[4 +2 -1:2]++tc\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.iface_access\",\n \"id\" : 45,\n \"runtime_data\" : [\n {\n \"name\" : \"slice_id\",\n \"bitwidth\" : 4\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_skip_upf17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 85,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_upf = false\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_is_upf_hit29\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 86,\n \"column\" : 29,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_slice_id30\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 87,\n \"column\" : 31,\n \"source_fragment\" : \"= slice_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.iface_core\",\n \"id\" : 46,\n \"runtime_data\" : [\n {\n \"name\" : \"slice_id\",\n \"bitwidth\" : 4\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_skip_upf17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 85,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_upf = false\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_is_upf_hit29\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 86,\n \"column\" : 29,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_slice_id30\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 87,\n \"column\" : 31,\n \"source_fragment\" : \"= slice_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.iface_dbuf\",\n \"id\" : 47,\n \"runtime_data\" : [\n {\n \"name\" : \"slice_id\",\n \"bitwidth\" : 4\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_skip_upf17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 85,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_upf = false\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_is_upf_hit29\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 86,\n \"column\" : 29,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_slice_id30\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 87,\n \"column\" : 31,\n \"source_fragment\" : \"= slice_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ip_eth_type10\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 114,\n \"column\" : 31,\n \"source_fragment\" : \"0x0800; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"dst_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 62,\n \"column\" : 35,\n \"source_fragment\" : \"= hdr.inner_ipv4.dst_addr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ipv47\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 64,\n \"column\" : 17,\n \"source_fragment\" : \"= hdr.inner_ipv4; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 65,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_ipv4.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_udp20\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 66,\n \"column\" : 16,\n \"source_fragment\" : \"= hdr.inner_udp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_udp20\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 67,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_udp.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_tcp9\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_tcp19\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 68,\n \"column\" : 16,\n \"source_fragment\" : \"= hdr.inner_tcp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_tcp19\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 69,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_tcp.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_icmp11\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_icmp21\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 70,\n \"column\" : 17,\n \"source_fragment\" : \"= hdr.inner_icmp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_icmp21\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 71,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_icmp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu12\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 72,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_options13\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 73,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_options.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_ext_psc14\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 74,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_encap_presence7\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 80,\n \"column\" : 11,\n \"source_fragment\" : \"0x0, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.iface_miss\",\n \"id\" : 48,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_skip_upf17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 104,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_upf = true\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_uplink_session_miss\",\n \"id\" : 49,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x86\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 261,\n \"column\" : 38,\n \"source_fragment\" : \"134, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_uplink_session_drop\",\n \"id\" : 50,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 136,\n \"column\" : 8,\n \"source_fragment\" : \"sess_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x87\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 262,\n \"column\" : 38,\n \"source_fragment\" : \"135, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_downlink_session_miss\",\n \"id\" : 51,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x84\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 259,\n \"column\" : 38,\n \"source_fragment\" : \"132, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_downlink_session_drop\",\n \"id\" : 52,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 151,\n \"column\" : 8,\n \"source_fragment\" : \"sess_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x85\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 260,\n \"column\" : 38,\n \"source_fragment\" : \"133, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_downlink_session\",\n \"id\" : 53,\n \"runtime_data\" : [\n {\n \"name\" : \"tun_peer_id\",\n \"bitwidth\" : 8\n },\n {\n \"name\" : \"session_meter_idx\",\n \"bitwidth\" : 15\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 159,\n \"column\" : 8,\n \"source_fragment\" : \"sess_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_ue_session_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 161,\n \"column\" : 8,\n \"source_fragment\" : \"ue_session_id = fabric_md.routing_ipv4_dst; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_session_meter_idx_internal\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 162,\n \"column\" : 8,\n \"source_fragment\" : \"session_meter_idx_internal = session_meter_idx\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_tun_peer_id13\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 163,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.tun_peer_id = tun_peer_id\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_downlink_session_buf\",\n \"id\" : 54,\n \"runtime_data\" : [\n {\n \"name\" : \"tun_peer_id\",\n \"bitwidth\" : 8\n },\n {\n \"name\" : \"session_meter_idx\",\n \"bitwidth\" : 15\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 167,\n \"column\" : 8,\n \"source_fragment\" : \"sess_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_ue_session_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 169,\n \"column\" : 8,\n \"source_fragment\" : \"ue_session_id = fabric_md.routing_ipv4_dst; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_session_meter_idx_internal\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 170,\n \"column\" : 8,\n \"source_fragment\" : \"session_meter_idx_internal = session_meter_idx\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_tun_peer_id13\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 171,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.tun_peer_id = tun_peer_id\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_skip_egress_upf_ctr18\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 175,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_egress_upf_ctr = true\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_downlink_session_buf_drop\",\n \"id\" : 55,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 179,\n \"column\" : 8,\n \"source_fragment\" : \"sess_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_ue_session_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 182,\n \"column\" : 8,\n \"source_fragment\" : \"ue_session_id = fabric_md.routing_ipv4_dst; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x88\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 263,\n \"column\" : 43,\n \"source_fragment\" : \"136, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_uplink_session\",\n \"id\" : 56,\n \"runtime_data\" : [\n {\n \"name\" : \"session_meter_idx\",\n \"bitwidth\" : 15\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 190,\n \"column\" : 8,\n \"source_fragment\" : \"sess_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_ue_session_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 192,\n \"column\" : 8,\n \"source_fragment\" : \"ue_session_id = fabric_md.lkp.ipv4_src; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_session_meter_idx_internal\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 193,\n \"column\" : 8,\n \"source_fragment\" : \"session_meter_idx_internal = session_meter_idx\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ip_eth_type10\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 114,\n \"column\" : 31,\n \"source_fragment\" : \"0x0800; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"dst_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 62,\n \"column\" : 35,\n \"source_fragment\" : \"= hdr.inner_ipv4.dst_addr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ipv47\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 64,\n \"column\" : 17,\n \"source_fragment\" : \"= hdr.inner_ipv4; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 65,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_ipv4.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_udp20\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 66,\n \"column\" : 16,\n \"source_fragment\" : \"= hdr.inner_udp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_udp20\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 67,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_udp.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_tcp9\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_tcp19\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 68,\n \"column\" : 16,\n \"source_fragment\" : \"= hdr.inner_tcp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_tcp19\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 69,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_tcp.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_icmp11\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_icmp21\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 70,\n \"column\" : 17,\n \"source_fragment\" : \"= hdr.inner_icmp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_icmp21\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 71,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_icmp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu12\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 72,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_options13\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 73,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_options.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_ext_psc14\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 74,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_encap_presence7\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 80,\n \"column\" : 11,\n \"source_fragment\" : \"0x0, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.uplink_drop_miss\",\n \"id\" : 57,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8b\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 266,\n \"column\" : 42,\n \"source_fragment\" : \"139, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.downlink_drop_miss\",\n \"id\" : 58,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x89\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 264,\n \"column\" : 42,\n \"source_fragment\" : \"137, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.uplink_drop\",\n \"id\" : 59,\n \"runtime_data\" : [\n {\n \"name\" : \"ctr_id\",\n \"bitwidth\" : 12\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_upf_ctr_id14\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 46,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.upf_ctr_id = ctr_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_term_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 47,\n \"column\" : 8,\n \"source_fragment\" : \"term_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8c\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 267,\n \"column\" : 42,\n \"source_fragment\" : \"140, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.downlink_drop\",\n \"id\" : 60,\n \"runtime_data\" : [\n {\n \"name\" : \"ctr_id\",\n \"bitwidth\" : 12\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 39,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 40,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 41,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_upf_ctr_id14\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 46,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.upf_ctr_id = ctr_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_term_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 47,\n \"column\" : 8,\n \"source_fragment\" : \"term_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8a\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 265,\n \"column\" : 42,\n \"source_fragment\" : \"138, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.app_fwd\",\n \"id\" : 61,\n \"runtime_data\" : [\n {\n \"name\" : \"ctr_id\",\n \"bitwidth\" : 12\n },\n {\n \"name\" : \"tc\",\n \"bitwidth\" : 2\n },\n {\n \"name\" : \"app_meter_idx\",\n \"bitwidth\" : 15\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_upf_ctr_id14\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 46,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.upf_ctr_id = ctr_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_term_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 47,\n \"column\" : 8,\n \"source_fragment\" : \"term_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_tc31\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 265,\n \"column\" : 25,\n \"source_fragment\" : \"= tc; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_meter_idx_internal\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 266,\n \"column\" : 8,\n \"source_fragment\" : \"app_meter_idx_internal = app_meter_idx\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc_unknown28\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 267,\n \"column\" : 29,\n \"source_fragment\" : \"= false; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.downlink_fwd_encap\",\n \"id\" : 62,\n \"runtime_data\" : [\n {\n \"name\" : \"ctr_id\",\n \"bitwidth\" : 12\n },\n {\n \"name\" : \"tc\",\n \"bitwidth\" : 2\n },\n {\n \"name\" : \"teid\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"qfi\",\n \"bitwidth\" : 6\n },\n {\n \"name\" : \"app_meter_idx\",\n \"bitwidth\" : 15\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_upf_ctr_id14\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 46,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.upf_ctr_id = ctr_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_term_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 47,\n \"column\" : 8,\n \"source_fragment\" : \"term_hit = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_tc31\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 265,\n \"column\" : 25,\n \"source_fragment\" : \"= tc; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_meter_idx_internal\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 4\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 266,\n \"column\" : 8,\n \"source_fragment\" : \"app_meter_idx_internal = app_meter_idx; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_tc_unknown28\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 267,\n \"column\" : 29,\n \"source_fragment\" : \"= false; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_needs_gtpu_encap16\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 54,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.needs_gtpu_encap = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_teid19\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 55,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.teid = teid; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_qfi15\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 3\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 56,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.qfi = qfi; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_routing_ipv4_dst\",\n \"id\" : 63,\n \"runtime_data\" : [\n {\n \"name\" : \"tun_dst_addr\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 314,\n \"column\" : 35,\n \"source_fragment\" : \"= tun_dst_addr; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.set_app_id\",\n \"id\" : 64,\n \"runtime_data\" : [\n {\n \"name\" : \"app_id\",\n \"bitwidth\" : 8\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_internal_app_id\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 334,\n \"column\" : 8,\n \"source_fragment\" : \"internal_app_id = app_id\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.recirc_allow\",\n \"id\" : 65,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01fe\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4\",\n \"line\" : 36,\n \"column\" : 42,\n \"source_fragment\" : \"510; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0ffe\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 147,\n \"column\" : 34,\n \"source_fragment\" : \"12w4094; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._do_upf_uplink_recirc1\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 364,\n \"column\" : 29,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_egress_port_set22\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 365,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 366,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 367,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.recirc_deny\",\n \"id\" : 66,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x96\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 268,\n \"column\" : 41,\n \"source_fragment\" : \"150, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._do_upf_uplink_recirc1\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 375,\n \"column\" : 29,\n \"source_fragment\" : \"= false; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 376,\n \"column\" : 34,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 377,\n \"column\" : 28,\n \"source_fragment\" : \"= true; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.upf.recirc_miss\",\n \"id\" : 67,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricIngress.int_watchlist.mark_to_report\",\n \"id\" : 68,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_report_type21\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 223,\n \"column\" : 45,\n \"source_fragment\" : \"1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_report_type47\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 223,\n \"column\" : 45,\n \"source_fragment\" : \"1; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.int_watchlist.no_report\",\n \"id\" : 69,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_report_type21\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 219,\n \"column\" : 50,\n \"source_fragment\" : \"0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_report_type47\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 219,\n \"column\" : 50,\n \"source_fragment\" : \"0; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.int_watchlist.no_report_collector\",\n \"id\" : 70,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_report_type21\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 219,\n \"column\" : 50,\n \"source_fragment\" : \"0; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.int_ingress.report_drop\",\n \"id\" : 71,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_bmd_type0\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 169,\n \"column\" : 23,\n \"source_fragment\" : \"4, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_report_type21\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 221,\n \"column\" : 45,\n \"source_fragment\" : \"4; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0ffe\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 147,\n \"column\" : 34,\n \"source_fragment\" : \"12w4094; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 71,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.mpls_label = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_skip_upf17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 73,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_upf = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 79,\n \"column\" : 17,\n \"source_fragment\" : \"= 0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01fe\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4\",\n \"line\" : 36,\n \"column\" : 42,\n \"source_fragment\" : \"510; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model64\",\n \"id\" : 72,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"exit\",\n \"parameters\" : [],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 64,\n \"column\" : 12,\n \"source_fragment\" : \"exit\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model61\",\n \"id\" : 73,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"mark_to_drop\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"standard_metadata\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 61,\n \"column\" : 8,\n \"source_fragment\" : \"mark_to_drop(standard_md)\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model70\",\n \"id\" : 74,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_ig_port3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01fe\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4\",\n \"line\" : 36,\n \"column\" : 42,\n \"source_fragment\" : \"510; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init21\",\n \"id\" : 75,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_vlan_id9\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_vlan_tag4\", \"vlan_id\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 21,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr.vlan_tag.vlan_id; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init15\",\n \"id\" : 76,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_eth_dst6\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ethernet3\", \"dst_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 15,\n \"column\" : 23,\n \"source_fragment\" : \"= hdr.ethernet.dst_addr; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_eth_src7\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ethernet3\", \"src_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 16,\n \"column\" : 23,\n \"source_fragment\" : \"= hdr.ethernet.src_addr; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_eth_type8\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 17,\n \"column\" : 24,\n \"source_fragment\" : \"= hdr.eth_type.value; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_vlan_id9\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 19,\n \"column\" : 23,\n \"source_fragment\" : \"= 0; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init38\",\n \"id\" : 77,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_tcp19\", \"sport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 38,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.inner_tcp.sport; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_tcp19\", \"dport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 39,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.inner_tcp.dport; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init41\",\n \"id\" : 78,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_udp20\", \"sport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 41,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.inner_udp.sport; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_udp20\", \"dport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 42,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.inner_udp.dport; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init44\",\n \"id\" : 79,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_type16\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_icmp21\", \"icmp_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 44,\n \"column\" : 33,\n \"source_fragment\" : \"= hdr.inner_icmp.icmp_type; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_code17\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_icmp21\", \"icmp_code\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 45,\n \"column\" : 33,\n \"source_fragment\" : \"= hdr.inner_icmp.icmp_code; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init33\",\n \"id\" : 80,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_is_ipv410\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 33,\n \"column\" : 27,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"src_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 34,\n \"column\" : 28,\n \"source_fragment\" : \"= hdr.inner_ipv4.src_addr; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"dst_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 35,\n \"column\" : 28,\n \"source_fragment\" : \"= hdr.inner_ipv4.dst_addr; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"protocol\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 36,\n \"column\" : 28,\n \"source_fragment\" : \"= hdr.inner_ipv4.protocol; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init53\",\n \"id\" : 81,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_tcp9\", \"sport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 53,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.tcp.sport; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_tcp9\", \"dport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 54,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.tcp.dport; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init56\",\n \"id\" : 82,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"sport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 56,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.udp.sport; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"dport\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 57,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.udp.dport; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init59\",\n \"id\" : 83,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_type16\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_icmp11\", \"icmp_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 59,\n \"column\" : 33,\n \"source_fragment\" : \"= hdr.icmp.icmp_type; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_code17\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_icmp11\", \"icmp_code\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 60,\n \"column\" : 33,\n \"source_fragment\" : \"= hdr.icmp.icmp_code; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init48\",\n \"id\" : 84,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_is_ipv410\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 48,\n \"column\" : 27,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"src_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 49,\n \"column\" : 28,\n \"source_fragment\" : \"= hdr.ipv4.src_addr; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dst_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 50,\n \"column\" : 28,\n \"source_fragment\" : \"= hdr.ipv4.dst_addr; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"protocol\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 51,\n \"column\" : 28,\n \"source_fragment\" : \"= hdr.ipv4.protocol; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"lookup_md_init24\",\n \"id\" : 85,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_is_ipv410\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 24,\n \"column\" : 23,\n \"source_fragment\" : \"= false; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 25,\n \"column\" : 24,\n \"source_fragment\" : \"= 0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 26,\n \"column\" : 24,\n \"source_fragment\" : \"= 0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 27,\n \"column\" : 24,\n \"source_fragment\" : \"= 0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 28,\n \"column\" : 24,\n \"source_fragment\" : \"= 0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 29,\n \"column\" : 24,\n \"source_fragment\" : \"= 0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_type16\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 30,\n \"column\" : 25,\n \"source_fragment\" : \"= 0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_code17\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 31,\n \"column\" : 25,\n \"source_fragment\" : \"= 0; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf409\",\n \"id\" : 86,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_is_uplink\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 409,\n \"column\" : 20,\n \"source_fragment\" : \"is_uplink = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ipv4_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 410,\n \"column\" : 20,\n \"source_fragment\" : \"app_ipv4_addr = fabric_md.lkp.ipv4_dst; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_l4_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 411,\n \"column\" : 20,\n \"source_fragment\" : \"app_l4_port = fabric_md.lkp.l4_dport; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ip_proto\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 412,\n \"column\" : 20,\n \"source_fragment\" : \"app_ip_proto = fabric_md.lkp.ip_proto; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf418\",\n \"id\" : 87,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ipv4_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 418,\n \"column\" : 20,\n \"source_fragment\" : \"app_ipv4_addr = fabric_md.lkp.ipv4_src; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_l4_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 419,\n \"column\" : 20,\n \"source_fragment\" : \"app_l4_port = fabric_md.lkp.l4_sport; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ip_proto\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 420,\n \"column\" : 20,\n \"source_fragment\" : \"app_ip_proto = fabric_md.lkp.ip_proto; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf424\",\n \"id\" : 88,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ipv4_addr\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 424,\n \"column\" : 20,\n \"source_fragment\" : \"app_ipv4_addr = fabric_md.lkp.ipv4_src; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_l4_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 425,\n \"column\" : 20,\n \"source_fragment\" : \"app_l4_port = fabric_md.lkp.l4_sport; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ip_proto\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 426,\n \"column\" : 20,\n \"source_fragment\" : \"app_ip_proto = fabric_md.lkp.ip_proto; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf443\",\n \"id\" : 89,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_skip_egress_upf_ctr18\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 443,\n \"column\" : 16,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_egress_upf_ctr = true\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf448\",\n \"id\" : 90,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_14\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_session_meter_idx_internal\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 448,\n \"column\" : 44,\n \"source_fragment\" : \"(bit<32>) session_meter_idx_internal\"\n }\n },\n {\n \"op\" : \"execute_meter\",\n \"parameters\" : [\n {\n \"type\" : \"meter_array\",\n \"value\" : \"FabricIngress.upf.session_meter\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_14\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_meter_color32\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 448,\n \"column\" : 16,\n \"source_fragment\" : \"session_meter.execute_meter((bit<32>) session_meter_idx_internal, fabric_md.upf_meter_color)\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf445\",\n \"id\" : 91,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_15\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_meter_idx_internal\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 445,\n \"column\" : 36,\n \"source_fragment\" : \"(bit<32>) app_meter_idx_internal\"\n }\n },\n {\n \"op\" : \"execute_meter\",\n \"parameters\" : [\n {\n \"type\" : \"meter_array\",\n \"value\" : \"FabricIngress.upf.app_meter\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_15\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_meter_color32\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 445,\n \"column\" : 12,\n \"source_fragment\" : \"app_meter.execute_meter((bit<32>) app_meter_idx_internal, fabric_md.upf_meter_color)\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf461\",\n \"id\" : 92,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_16\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_upf_ctr_id14\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 461,\n \"column\" : 43,\n \"source_fragment\" : \"(bit<32>)fabric_md.bridged.upf.upf_ctr_id\"\n }\n },\n {\n \"op\" : \"count\",\n \"parameters\" : [\n {\n \"type\" : \"counter_array\",\n \"value\" : \"FabricIngress.upf.terminations_counter\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_16\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 461,\n \"column\" : 16,\n \"source_fragment\" : \"terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf25\",\n \"id\" : 93,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_is_uplink\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 25,\n \"column\" : 4,\n \"source_fragment\" : \"bool is_uplink = false;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_term_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 26,\n \"column\" : 4,\n \"source_fragment\" : \"bool term_hit = false;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : false\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 27,\n \"column\" : 4,\n \"source_fragment\" : \"bool sess_hit = false;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ipv4_addr\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 28,\n \"column\" : 4,\n \"source_fragment\" : \"bit<32> app_ipv4_addr = 0;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_l4_port\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 29,\n \"column\" : 4,\n \"source_fragment\" : \"l4_port_t app_l4_port = 0;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_ip_proto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 30,\n \"column\" : 4,\n \"source_fragment\" : \"bit<8> app_ip_proto = 0;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_internal_app_id\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 55,\n \"column\" : 30,\n \"source_fragment\" : \"0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_ue_session_id\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 32,\n \"column\" : 4,\n \"source_fragment\" : \"ue_session_id_t ue_session_id = 0;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_session_meter_idx_internal\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 72,\n \"column\" : 54,\n \"source_fragment\" : \"0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_app_meter_idx_internal\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 73,\n \"column\" : 46,\n \"source_fragment\" : \"0; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"filtering100\",\n \"id\" : 94,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 100,\n \"column\" : 31,\n \"source_fragment\" : \"(bit<32>)fabric_md.bridged.base.fwd_type\"\n }\n },\n {\n \"op\" : \"count\",\n \"parameters\" : [\n {\n \"type\" : \"counter_array\",\n \"value\" : \"FabricIngress.filtering.fwd_type_counter\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_17\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 100,\n \"column\" : 8,\n \"source_fragment\" : \"fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type)\"\n }\n }\n ]\n },\n {\n \"name\" : \"hasher28\",\n \"id\" : 95,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_18\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_tun_peer_id13\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 32,\n \"column\" : 17,\n \"source_fragment\" : \"fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_19\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_teid19\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 32,\n \"column\" : 52,\n \"source_fragment\" : \"fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"modify_field_with_hash_based_offset\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ecmp_hash5\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n },\n {\n \"type\" : \"calculation\",\n \"value\" : \"calc\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 28,\n \"column\" : 12,\n \"source_fragment\" : \"hash( ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"hasher39\",\n \"id\" : 96,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_20\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"src_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 43,\n \"column\" : 17,\n \"source_fragment\" : \"hdr.ipv4.src_addr\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_21\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dst_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 43,\n \"column\" : 36,\n \"source_fragment\" : \"hdr.ipv4.dst_addr\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_22\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"teid\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 43,\n \"column\" : 55,\n \"source_fragment\" : \"hdr.gtpu.teid\"\n }\n },\n {\n \"op\" : \"modify_field_with_hash_based_offset\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ecmp_hash5\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n },\n {\n \"type\" : \"calculation\",\n \"value\" : \"calc_0\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 39,\n \"column\" : 12,\n \"source_fragment\" : \"hash( ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"hasher50\",\n \"id\" : 97,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ecmp_hash5\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_inner_hash1\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 50,\n \"column\" : 32,\n \"source_fragment\" : \"= fabric_md.bridged.base.inner_hash; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"hasher66\",\n \"id\" : 98,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_inner_hash1\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 66,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.bridged.base.inner_hash = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_23\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ethernet3\", \"dst_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 71,\n \"column\" : 17,\n \"source_fragment\" : \"hdr.ethernet.dst_addr\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_24\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ethernet3\", \"src_addr\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 71,\n \"column\" : 40,\n \"source_fragment\" : \"hdr.ethernet.src_addr\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_25\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 71,\n \"column\" : 63,\n \"source_fragment\" : \"hdr.eth_type.value\"\n }\n },\n {\n \"op\" : \"modify_field_with_hash_based_offset\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ecmp_hash5\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n },\n {\n \"type\" : \"calculation\",\n \"value\" : \"calc_1\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 67,\n \"column\" : 12,\n \"source_fragment\" : \"hash( ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"hasher17\",\n \"id\" : 99,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_26\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 91,\n \"column\" : 34,\n \"source_fragment\" : \"fabric_md\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_27\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 91,\n \"column\" : 34,\n \"source_fragment\" : \"fabric_md\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_28\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 91,\n \"column\" : 34,\n \"source_fragment\" : \"fabric_md\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_29\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 91,\n \"column\" : 34,\n \"source_fragment\" : \"fabric_md\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_30\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 91,\n \"column\" : 34,\n \"source_fragment\" : \"fabric_md\"\n }\n },\n {\n \"op\" : \"modify_field_with_hash_based_offset\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_inner_hash1\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000000\"\n },\n {\n \"type\" : \"calculation\",\n \"value\" : \"calc_2\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 17,\n \"column\" : 8,\n \"source_fragment\" : \"hash( ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"slicing174\",\n \"id\" : 100,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_31\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_slice_tc12\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 174,\n \"column\" : 41,\n \"source_fragment\" : \"(bit<32>) fabric_md.bridged.base.slice_tc\"\n }\n },\n {\n \"op\" : \"execute_meter\",\n \"parameters\" : [\n {\n \"type\" : \"meter_array\",\n \"value\" : \"FabricIngress.qos.slice_tc_meter\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_31\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"qos_packet_color\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 174,\n \"column\" : 12,\n \"source_fragment\" : \"slice_tc_meter.execute_meter((bit<32>) fabric_md.bridged.base.slice_tc, packet_color)\"\n }\n }\n ]\n },\n {\n \"name\" : \"slicing177\",\n \"id\" : 101,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"qos_packet_color\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/define_v1model.p4\",\n \"line\" : 25,\n \"column\" : 10,\n \"source_fragment\" : \"2 ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"int112\",\n \"id\" : 102,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_egress_port25\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 112,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.int_bmd.egress_port = standard_md.egress_spec\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_int_bmd_queue_id24\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 113,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.int_bmd.queue_id = 0\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model110\",\n \"id\" : 103,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"mark_to_drop\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"standard_metadata\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 110,\n \"column\" : 12,\n \"source_fragment\" : \"mark_to_drop(standard_md)\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model106\",\n \"id\" : 104,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_bridged36\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_bridged4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 106,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.egress.bridged = fabric_md\"\n }\n }\n ]\n },\n {\n \"name\" : \"nop\",\n \"id\" : 105,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 106,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 107,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 108,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 109,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 110,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"nop\",\n \"id\" : 111,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricEgress.stats.count\",\n \"id\" : 112,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricEgress.pkt_io_egress.set_switch_info\",\n \"id\" : 113,\n \"runtime_data\" : [\n {\n \"name\" : \"cpu_port\",\n \"bitwidth\" : 9\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_cpu_port37\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"local\",\n \"value\" : 0\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01ff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 36,\n \"column\" : 27,\n \"source_fragment\" : \"= (PortId_t)cpu_port; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.egress_next.pop_mpls_if_present\",\n \"id\" : 114,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_mpls6\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 198,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.mpls.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_ip_eth_type10\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 200,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.eth_type.value = fabric_md.bridged\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.egress_next.set_mpls\",\n \"id\" : 115,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_mpls6\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 205,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.mpls.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"label\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_mpls_label2\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 206,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.mpls.label = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"tc\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 207,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.mpls.tc = 3w0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"bos\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 208,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.mpls.bos = 1w1\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"ttl\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_mpls_ttl8\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 209,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.mpls.ttl = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_eth_type5\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8847\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 112,\n \"column\" : 31,\n \"source_fragment\" : \"0x8847; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.egress_next.push_vlan\",\n \"id\" : 116,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_vlan_tag4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 217,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.vlan_tag.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_vlan_tag4\", \"eth_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8100\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 111,\n \"column\" : 31,\n \"source_fragment\" : \"0x8100; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_vlan_tag4\", \"vlan_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_vlan_id6\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 221,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.vlan_tag.vlan_id = fabric_md.bridged\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.egress_next.pop_vlan\",\n \"id\" : 117,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_vlan_tag4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 249,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.vlan_tag.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.egress_next.drop\",\n \"id\" : 118,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 254,\n \"column\" : 17,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_drop_reason49\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x82\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 257,\n \"column\" : 35,\n \"source_fragment\" : \"130, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.dscp_rewriter.rewrite\",\n \"id\" : 119,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricEgress.dscp_rewriter.clear\",\n \"id\" : 120,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"dscp_rewriter_tmp_dscp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 198,\n \"column\" : 8,\n \"source_fragment\" : \"tmp_dscp = 0\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.upf.load_tunnel_params\",\n \"id\" : 121,\n \"runtime_data\" : [\n {\n \"name\" : \"tunnel_src_port\",\n \"bitwidth\" : 16\n },\n {\n \"name\" : \"tunnel_src_addr\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"tunnel_dst_addr\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"src_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 486,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.src_addr = tunnel_src_addr\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dst_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 487,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.dst_addr = tunnel_dst_addr\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"sport\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 488,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.udp.sport = tunnel_src_port\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.upf.gtpu_only\",\n \"id\" : 122,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 551,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_ipv4.setValid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ipv47\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 552,\n \"column\" : 23,\n \"source_fragment\" : \"= hdr.ipv4; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 553,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.udp.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu12\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 554,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 506,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.version = 4w4\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ihl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 507,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.ihl = 4w5\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dscp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 508,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.dscp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ecn\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 509,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.ecn = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"identification\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1513\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 511,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.identification = 0x1513\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"flags\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 512,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.flags = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"frag_offset\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 513,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.frag_offset = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 150,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"protocol\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 134,\n \"column\" : 25,\n \"source_fragment\" : \"17; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"dport\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0868\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 86,\n \"column\" : 30,\n \"source_fragment\" : \"2152; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 87,\n \"column\" : 22,\n \"source_fragment\" : \"3w1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"pt\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 89,\n \"column\" : 37,\n \"source_fragment\" : \"1w1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"spare\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 527,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.spare = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"seq_flag\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 529,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.seq_flag = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"npdu_flag\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 530,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.npdu_flag = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"msgtype\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 88,\n \"column\" : 25,\n \"source_fragment\" : \"0xff; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"teid\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_teid19\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 533,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.teid = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_options13\", \"seq_num\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 535,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_options.seq_num = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_options13\", \"n_pdu_num\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 536,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_options.n_pdu_num = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_options13\", \"next_ext\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x85\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 91,\n \"column\" : 33,\n \"source_fragment\" : \"0x85; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"len\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 94,\n \"column\" : 32,\n \"source_fragment\" : \"8w1; // 1*4-octets ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 92,\n \"column\" : 36,\n \"source_fragment\" : \"4w0; // Downlink ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"spare0\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 541,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.spare0 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"ppp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 542,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.ppp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"rqi\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 543,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.rqi = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"next_ext\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 90,\n \"column\" : 34,\n \"source_fragment\" : \"0x0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"total_len\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0024\"\n },\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 563,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.total_len = 20 + 8 + 8 ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"len\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0010\"\n },\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 565,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.udp.len = 8 + 8 ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"msglen\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 567,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.msglen = hdr.inner_ipv4.total_len\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"encap_presence\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 81,\n \"column\" : 16,\n \"source_fragment\" : \"0x1, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.upf.gtpu_with_psc\",\n \"id\" : 123,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_options13\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 577,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_options.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_ext_psc14\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 578,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 551,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.inner_ipv4.setValid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ipv418\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ipv47\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 552,\n \"column\" : 23,\n \"source_fragment\" : \"= hdr.ipv4; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 553,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.udp.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu12\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 554,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 506,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.version = 4w4\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ihl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 507,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.ihl = 4w5\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dscp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 508,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.dscp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ecn\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 509,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.ecn = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"identification\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1513\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 511,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.identification = 0x1513\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"flags\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 512,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.flags = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"frag_offset\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 513,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.frag_offset = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 150,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"protocol\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 134,\n \"column\" : 25,\n \"source_fragment\" : \"17; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"dport\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0868\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 86,\n \"column\" : 30,\n \"source_fragment\" : \"2152; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 87,\n \"column\" : 22,\n \"source_fragment\" : \"3w1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"pt\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 89,\n \"column\" : 37,\n \"source_fragment\" : \"1w1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"spare\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 527,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.spare = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"seq_flag\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 529,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.seq_flag = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"npdu_flag\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 530,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.npdu_flag = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"msgtype\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 88,\n \"column\" : 25,\n \"source_fragment\" : \"0xff; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"teid\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_teid19\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 533,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.teid = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_options13\", \"seq_num\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 535,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_options.seq_num = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_options13\", \"n_pdu_num\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 536,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_options.n_pdu_num = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_options13\", \"next_ext\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x85\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 91,\n \"column\" : 33,\n \"source_fragment\" : \"0x85; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"len\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 94,\n \"column\" : 32,\n \"source_fragment\" : \"8w1; // 1*4-octets ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 92,\n \"column\" : 36,\n \"source_fragment\" : \"4w0; // Downlink ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"spare0\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 541,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.spare0 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"ppp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 542,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.ppp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"rqi\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 543,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.rqi = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"next_ext\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 90,\n \"column\" : 34,\n \"source_fragment\" : \"0x0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"total_len\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x002c\"\n },\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 580,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.ipv4.total_len = 20 + 8 + 8 ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"len\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0018\"\n },\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 583,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.udp.len = 8 + 8 ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"msglen\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0008\"\n },\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"total_len\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 586,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.msglen = 4 + 4 ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"ex_flag\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 588,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu.ex_flag = 1\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu_ext_psc14\", \"qfi\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_qfi15\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 589,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.gtpu_ext_psc.qfi = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"encap_presence\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 82,\n \"column\" : 20,\n \"source_fragment\" : \"0x2, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.parser_emulator.parse_int_ingress_drop\",\n \"id\" : 124,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 20,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ethernet.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 25,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_eth_type.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 37,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 38,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.version = 4w4\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ihl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 39,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ihl = 4w5\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"dscp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 40,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dscp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ecn\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 41,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ecn = 2w0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"flags\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 44,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.flags = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"frag_offset\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 45,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.frag_offset = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 150,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"protocol\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 134,\n \"column\" : 25,\n \"source_fragment\" : \"17; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 53,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_udp\", \"sport\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 54,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.sport = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 60,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ver\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 61,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ver = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 203,\n \"column\" : 52,\n \"source_fragment\" : \"2; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"rsvd\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 66,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.rsvd = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 71,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_int_report_md39\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 79,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"ip_eth_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 114,\n \"column\" : 31,\n \"source_fragment\" : \"0x0800; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"report_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 221,\n \"column\" : 45,\n \"source_fragment\" : \"4; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"mirror_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 178,\n \"column\" : 14,\n \"source_fragment\" : \"0, ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_drop_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 85,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"bmd_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 169,\n \"column\" : 23,\n \"source_fragment\" : \"4, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"encap_presence\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_encap_presence7\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 93,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.encap_presence = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"flow_hash\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_inner_hash1\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 94,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.flow_hash = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_drop_report_header\", \"drop_reason\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_int_bmd_drop_reason23\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 97,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.drop_reason = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ig_tstamp\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_ig_tstamp9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 99,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"ig_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_ig_port3\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 101,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.ig_port = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"eg_port\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 102,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.eg_port = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"queue_id\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 103,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.queue_id = 0\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.parser_emulator.parse_int_ingress_drop\",\n \"id\" : 125,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 20,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ethernet.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 25,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_eth_type.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 37,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 38,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.version = 4w4\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ihl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 39,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ihl = 4w5\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"dscp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 40,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dscp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ecn\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 41,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ecn = 2w0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"flags\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 44,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.flags = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"frag_offset\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 45,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.frag_offset = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 150,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"protocol\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 134,\n \"column\" : 25,\n \"source_fragment\" : \"17; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 53,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_udp\", \"sport\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 54,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.sport = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 60,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ver\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 61,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ver = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 203,\n \"column\" : 52,\n \"source_fragment\" : \"2; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"rsvd\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 66,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.rsvd = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 71,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_int_report_md39\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 79,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"ip_eth_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0800\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 114,\n \"column\" : 31,\n \"source_fragment\" : \"0x0800; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"report_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 221,\n \"column\" : 45,\n \"source_fragment\" : \"4; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"mirror_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 178,\n \"column\" : 14,\n \"source_fragment\" : \"0, ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_drop_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 85,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"bmd_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 169,\n \"column\" : 23,\n \"source_fragment\" : \"4, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"encap_presence\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_encap_presence7\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 93,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.encap_presence = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"flow_hash\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_inner_hash1\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 94,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.flow_hash = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_drop_report_header\", \"drop_reason\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_int_bmd_drop_reason23\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 97,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.drop_reason = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ig_tstamp\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_ig_tstamp9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 99,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"ig_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_ig_port3\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 101,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.ig_port = fabric_md.bridged\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"eg_port\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 102,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.eg_port = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"queue_id\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 103,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.queue_id = 0\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.parser_emulator.parse_int_report_mirror\",\n \"id\" : 126,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 20,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ethernet.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 25,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_eth_type.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 37,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 38,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.version = 4w4\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ihl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 39,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ihl = 4w5\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"dscp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 40,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dscp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ecn\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 41,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ecn = 2w0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"flags\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 44,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.flags = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"frag_offset\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 45,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.frag_offset = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 150,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"protocol\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 134,\n \"column\" : 25,\n \"source_fragment\" : \"17; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 53,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_udp\", \"sport\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 54,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.sport = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 60,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ver\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 61,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ver = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 203,\n \"column\" : 52,\n \"source_fragment\" : \"2; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"rsvd\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 66,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.rsvd = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 71,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_bmd_type0\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"bmd_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 110,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0ffe\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 147,\n \"column\" : 34,\n \"source_fragment\" : \"12w4094; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 112,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.mpls_label = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_skip_upf17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 114,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_upf = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ig_tstamp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"ig_tstamp\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 118,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"ig_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"ig_port\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 121,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"eg_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"eg_port\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 122,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"queue_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"queue_id\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 123,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 126,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_local_report_header\", \"queue_occupancy\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"queue_occupancy\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 127,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_local_report_header\", \"eg_tstamp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"eg_tstamp\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 128,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.parser_emulator.parse_int_report_mirror\",\n \"id\" : 127,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 20,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ethernet.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 25,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_eth_type.setValid()\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 37,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"version\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 38,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.version = 4w4\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ihl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 39,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ihl = 4w5\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"dscp\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 40,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dscp = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ecn\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 41,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.ecn = 2w0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"flags\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 44,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.flags = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"frag_offset\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 45,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.frag_offset = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 150,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_ipv4\", \"protocol\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 134,\n \"column\" : 25,\n \"source_fragment\" : \"17; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 53,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_udp\", \"sport\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 54,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.sport = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 60,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ver\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 61,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ver = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 203,\n \"column\" : 52,\n \"source_fragment\" : \"2; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"rsvd\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 66,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.rsvd = 0\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 71,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_bmd_type0\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"bmd_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 110,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.bmd_type = fabric_md.int_report_md.bmd_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_vlan_id6\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0ffe\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 147,\n \"column\" : 34,\n \"source_fragment\" : \"12w4094; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_mpls_label2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 112,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.bridged.base.mpls_label = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_skip_upf17\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 114,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.bridged.upf.skip_upf = true\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_report_fixed_header\", \"ig_tstamp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"ig_tstamp\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 118,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.ig_tstamp = fabric_md.int_report_md.ig_tstamp\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"ig_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"ig_port\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 121,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.ig_port = fabric_md.int_report_md.ig_port\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"eg_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"eg_port\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 122,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.eg_port = fabric_md.int_report_md.eg_port\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_common_report_header\", \"queue_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"queue_id\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 123,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.queue_id = fabric_md.int_report_md.queue_id\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 126,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_local_report_header\", \"queue_occupancy\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"queue_occupancy\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 127,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.queue_occupancy = fabric_md.int_report_md.queue_occupancy\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"parser_emulator_hdr_local_report_header\", \"eg_tstamp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_int_report_md39\", \"eg_tstamp\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 128,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.eg_tstamp = fabric_md.int_report_md.eg_tstamp\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.int_egress.check_quota\",\n \"id\" : 128,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricEgress.int_egress.reset_quota\",\n \"id\" : 129,\n \"runtime_data\" : [],\n \"primitives\" : []\n },\n {\n \"name\" : \"FabricEgress.int_egress.set_config\",\n \"id\" : 130,\n \"runtime_data\" : [\n {\n \"name\" : \"hop_latency_mask\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"timestamp_mask\",\n \"bitwidth\" : 48\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"hop_latency\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"hop_latency\"]\n },\n \"right\" : {\n \"type\" : \"local\",\n \"value\" : 0\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 179,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_md.hop_latency = fabric_md.int_md.hop_latency & hop_latency_mask\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"timestamp\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"timestamp\"]\n },\n \"right\" : {\n \"type\" : \"local\",\n \"value\" : 1\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 180,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_md.timestamp = fabric_md.int_md.timestamp & timestamp_mask\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.int_egress.do_local_report_encap\",\n \"id\" : 131,\n \"runtime_data\" : [\n {\n \"name\" : \"src_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_port\",\n \"bitwidth\" : 16\n },\n {\n \"name\" : \"switch_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"modify_field_rng_uniform\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"identification\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 195,\n \"column\" : 8,\n \"source_fragment\" : \"random(hdr.report_ipv4.identification, 0, 0xffff)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"src_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 197,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.src_addr = src_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"dst_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 198,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dst_addr = mon_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_udp\", \"dport\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 199,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.dport = mon_port; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_32\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_read\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_32\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 143,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.read(reg, seq_number_idx)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000001\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 144,\n \"column\" : 8,\n \"source_fragment\" : \"reg = reg + 1\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_33\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_write\",\n \"parameters\" : [\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_33\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 146,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.write(seq_number_idx, reg)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"seq_no\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ]\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"dqf\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"report_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 201,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"switch_id\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 3\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 202,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.switch_id = switch_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad1\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 203,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad1 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 204,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad2 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 205,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad3 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_eth_type\", \"value\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"ip_eth_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 207,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._int_mirror_type3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 178,\n \"column\" : 14,\n \"source_fragment\" : \"0, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_eth_type\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 125,\n \"column\" : 39,\n \"source_fragment\" : \"0xBF04; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 203,\n \"column\" : 52,\n \"source_fragment\" : \"2; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 218,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.setValid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.int_egress.do_local_report_encap_mpls\",\n \"id\" : 132,\n \"runtime_data\" : [\n {\n \"name\" : \"src_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_port\",\n \"bitwidth\" : 16\n },\n {\n \"name\" : \"mon_label\",\n \"bitwidth\" : 20\n },\n {\n \"name\" : \"switch_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"modify_field_rng_uniform\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"identification\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 195,\n \"column\" : 8,\n \"source_fragment\" : \"random(hdr.report_ipv4.identification, 0, 0xffff)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"src_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 197,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.src_addr = src_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"dst_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 198,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dst_addr = mon_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_udp\", \"dport\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 199,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.dport = mon_port; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_34\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_read\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_34\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 143,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.read(reg, seq_number_idx)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000001\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 144,\n \"column\" : 8,\n \"source_fragment\" : \"reg = reg + 1\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_35\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_write\",\n \"parameters\" : [\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_35\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 146,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.write(seq_number_idx, reg)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"seq_no\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ]\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"dqf\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"report_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 201,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"switch_id\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 4\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 202,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.switch_id = switch_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad1\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 203,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad1 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 204,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad2 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 205,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad3 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_eth_type\", \"value\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"ip_eth_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 207,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._int_mirror_type3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 178,\n \"column\" : 14,\n \"source_fragment\" : \"0, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_eth_type\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 125,\n \"column\" : 39,\n \"source_fragment\" : \"0xBF04; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 203,\n \"column\" : 52,\n \"source_fragment\" : \"2; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 218,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_eth_type\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 126,\n \"column\" : 39,\n \"source_fragment\" : \"0xBF05; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_mpls\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 226,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"tc\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 227,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.tc = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"bos\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 228,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.bos = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 149,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"label\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 3\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 230,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.label = mon_label\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.int_egress.do_drop_report_encap\",\n \"id\" : 133,\n \"runtime_data\" : [\n {\n \"name\" : \"src_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_port\",\n \"bitwidth\" : 16\n },\n {\n \"name\" : \"switch_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"modify_field_rng_uniform\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"identification\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 195,\n \"column\" : 8,\n \"source_fragment\" : \"random(hdr.report_ipv4.identification, 0, 0xffff)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"src_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 197,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.src_addr = src_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"dst_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 198,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dst_addr = mon_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_udp\", \"dport\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 199,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.dport = mon_port; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_36\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_read\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_36\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 143,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.read(reg, seq_number_idx)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000001\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 144,\n \"column\" : 8,\n \"source_fragment\" : \"reg = reg + 1\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_37\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_write\",\n \"parameters\" : [\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_37\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 146,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.write(seq_number_idx, reg)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"seq_no\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ]\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"dqf\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"report_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 201,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"switch_id\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 3\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 202,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.switch_id = switch_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad1\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 203,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad1 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 204,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad2 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 205,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad3 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_eth_type\", \"value\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"ip_eth_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 207,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._int_mirror_type3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 178,\n \"column\" : 14,\n \"source_fragment\" : \"0, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_eth_type\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 125,\n \"column\" : 39,\n \"source_fragment\" : \"0xBF04; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 202,\n \"column\" : 44,\n \"source_fragment\" : \"1; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_drop_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 238,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 241,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_drop_report_header\", \"drop_reason\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_int_bmd_drop_reason23\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 243,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.drop_reason =\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.int_egress.do_drop_report_encap_mpls\",\n \"id\" : 134,\n \"runtime_data\" : [\n {\n \"name\" : \"src_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_ip\",\n \"bitwidth\" : 32\n },\n {\n \"name\" : \"mon_port\",\n \"bitwidth\" : 16\n },\n {\n \"name\" : \"mon_label\",\n \"bitwidth\" : 20\n },\n {\n \"name\" : \"switch_id\",\n \"bitwidth\" : 32\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"modify_field_rng_uniform\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"identification\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 195,\n \"column\" : 8,\n \"source_fragment\" : \"random(hdr.report_ipv4.identification, 0, 0xffff)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"src_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 197,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.src_addr = src_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_ipv4\", \"dst_addr\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 1\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 198,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_ipv4.dst_addr = mon_ip; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_udp\", \"dport\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 2\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 199,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_udp.dport = mon_port; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_38\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_read\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_38\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 143,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.read(reg, seq_number_idx)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000001\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 144,\n \"column\" : 8,\n \"source_fragment\" : \"reg = reg + 1\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_39\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 200,\n \"column\" : 23,\n \"source_fragment\" : \"(bit<32>)hdr.report_fixed_header.hw_id\"\n }\n },\n {\n \"op\" : \"register_write\",\n \"parameters\" : [\n {\n \"type\" : \"register_array\",\n \"value\" : \"FabricEgress.int_egress.seq_number\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_39\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 146,\n \"column\" : 8,\n \"source_fragment\" : \"seq_number.write(seq_number_idx, reg)\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"seq_no\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_reg\"]\n }\n ]\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"dqf\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"report_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 201,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.dqf = fabric_md.int_report_md.report_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"switch_id\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 4\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 202,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.switch_id = switch_id; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad1\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 203,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad1 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 204,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad2 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_common_report_header\", \"pad3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 205,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.common_report_header.pad3 = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_eth_type\", \"value\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"ip_eth_type\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 207,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.eth_type.value = fabric_md.int_report_md.ip_eth_type\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._int_mirror_type3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 178,\n \"column\" : 14,\n \"source_fragment\" : \"0, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_eth_type\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf04\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 125,\n \"column\" : 39,\n \"source_fragment\" : \"0xBF04; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"nproto\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 202,\n \"column\" : 44,\n \"source_fragment\" : \"1; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_drop_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 238,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.setValid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 241,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.local_report_header.setInvalid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_drop_report_header\", \"drop_reason\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_int_bmd_drop_reason23\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 243,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.drop_report_header.drop_reason =\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_eth_type\", \"value\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf05\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 126,\n \"column\" : 39,\n \"source_fragment\" : \"0xBF05; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_mpls\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 251,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"tc\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 252,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.tc = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"bos\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 253,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.bos = 0\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"ttl\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x40\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 149,\n \"column\" : 32,\n \"source_fragment\" : \"64; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_mpls\", \"label\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 3\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 256,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_mpls.label = mon_label\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.int_egress.init_int_metadata\",\n \"id\" : 135,\n \"runtime_data\" : [\n {\n \"name\" : \"report_type\",\n \"bitwidth\" : 3\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_int_bmd_mirror_session_id22\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01fa\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 208,\n \"column\" : 43,\n \"source_fragment\" : \"0x1FA; ...\"\n }\n },\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_fabric_md_int_report_md\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 293,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._int_mirror_type3\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 179,\n \"column\" : 17,\n \"source_fragment\" : \"1, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"bmd_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 167,\n \"column\" : 20,\n \"source_fragment\" : \"2, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"mirror_type\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 179,\n \"column\" : 17,\n \"source_fragment\" : \"1, ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"ig_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_base_ig_port3\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 299,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.ig_port =\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"eg_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_port\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 300,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.eg_port = (PortId_t)standard_md.egress_port\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"queue_id\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_egress_qid\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 301,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.queue_id = egress_qid\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"queue_occupancy\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"deq_qdepth\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 302,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.queue_occupancy = standard_md.deq_qdepth\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"ig_tstamp\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_base_ig_tstamp9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 303,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.ig_tstamp = fabric_md.bridged.base.ig_tstamp[31:0]\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"eg_tstamp\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_global_timestamp\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 304,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.eg_tstamp = standard_md.egress_global_timestamp[31:0]\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"ip_eth_type\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_base_ip_eth_type10\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 305,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.ip_eth_type =\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"flow_hash\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_base_inner_hash1\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 306,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.flow_hash =\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"report_type\"]\n },\n {\n \"type\" : \"runtime_data\",\n \"value\" : 0\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 309,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_report_md.report_type = report_type\"\n }\n }\n ]\n },\n {\n \"name\" : \"FabricEgress.int_egress.adjust_ip_udp_len\",\n \"id\" : 136,\n \"runtime_data\" : [\n {\n \"name\" : \"adjust_ip\",\n \"bitwidth\" : 16\n },\n {\n \"name\" : \"adjust_udp\",\n \"bitwidth\" : 16\n }\n ],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"total_len\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_fabric_md_pkt_length\"]\n },\n \"right\" : {\n \"type\" : \"local\",\n \"value\" : 0\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 342,\n \"column\" : 8,\n \"source_fragment\" : \"hdr_v1model.ingress.ipv4.total_len = fabric_md.pkt_length + adjust_ip\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"len\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_fabric_md_pkt_length\"]\n },\n \"right\" : {\n \"type\" : \"local\",\n \"value\" : 1\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 343,\n \"column\" : 8,\n \"source_fragment\" : \"hdr_v1model.ingress.udp.len = fabric_md.pkt_length + adjust_udp\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model136\",\n \"id\" : 137,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"exit\",\n \"parameters\" : [],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 136,\n \"column\" : 12,\n \"source_fragment\" : \"exit\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model133\",\n \"id\" : 138,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_cpu_port37\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 133,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.egress.cpu_port = 0\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator148\",\n \"id\" : 139,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ipv47\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 148,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.ipv4.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_tcp9\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 149,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.tcp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 150,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.udp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_icmp11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 151,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.icmp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_vxlan15\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 153,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.vxlan.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ethernet16\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 154,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.inner_ethernet.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_eth_type17\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 155,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.inner_eth_type.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu12\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 157,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_options13\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 158,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu_options.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_ext_psc14\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 159,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu_ext_psc.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator14\",\n \"id\" : 140,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_int_bmd_drop_reason23\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_drop_reason49\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 144,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.egress.bridged.int_bmd.drop_reason = fabric_md\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_int_bmd_report_type21\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_report_type47\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 145,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.egress.bridged.int_bmd.report_type = fabric_md\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ethernet24\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_eth_type25\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ipv427\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_udp28\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_fixed_header29\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_common_report_header30\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_local_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_local_report_header31\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_drop_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_drop_report_header32\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_is_int_recirc45\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 134,\n \"column\" : 32,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_vlan_tag4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 140,\n \"column\" : 8,\n \"source_fragment\" : \"hdr_v1model.ingress.vlan_tag.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator166\",\n \"id\" : 141,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"recirculate\",\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 166,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(NO_PRESERVATION)\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator169\",\n \"id\" : 142,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"recirculate\",\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 169,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(PRESERVE_INT_MD)\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator173\",\n \"id\" : 143,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ethernet24\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_eth_type25\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ipv427\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_udp28\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_fixed_header29\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_common_report_header30\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_local_report_header31\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_drop_report_header32\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_drop_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator148_0\",\n \"id\" : 144,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_ipv47\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 148,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.ipv4.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_tcp9\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 149,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.tcp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 150,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.udp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_icmp11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 151,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.icmp.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_vxlan15\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 153,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.vxlan.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_ethernet16\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 154,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.inner_ethernet.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_eth_type17\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 155,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.inner_eth_type.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu12\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 157,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_options13\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 158,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu_options.setInvalid()\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_gtpu_ext_psc14\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 159,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu_ext_psc.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator14_0\",\n \"id\" : 145,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ethernet24\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_eth_type25\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ipv427\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_udp28\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_fixed_header29\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_common_report_header30\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_local_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_local_report_header31\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_drop_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_drop_report_header32\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_is_int_recirc45\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"bool\",\n \"value\" : true\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 134,\n \"column\" : 32,\n \"source_fragment\" : \"= true; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_vlan_tag4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 140,\n \"column\" : 8,\n \"source_fragment\" : \"hdr_v1model.ingress.vlan_tag.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator166_0\",\n \"id\" : 146,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"recirculate\",\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 166,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(NO_PRESERVATION)\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator169_0\",\n \"id\" : 147,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"recirculate\",\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 169,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(PRESERVE_INT_MD)\"\n }\n }\n ]\n },\n {\n \"name\" : \"int_tna_parser_emulator173_0\",\n \"id\" : 148,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ethernet24\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ethernet\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_eth_type25\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ipv427\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_ipv4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_udp28\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_udp\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_fixed_header29\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_report_fixed_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_common_report_header30\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_common_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_local_report_header31\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_drop_report_header32\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"parser_emulator_hdr_drop_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"packetio51\",\n \"id\" : 149,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_packet_in1\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 51,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.packet_in.setValid()\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_packet_in1\", \"ingress_port\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_ingress_port50\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 52,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.packet_in.ingress_port = preserved_ig_port; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_fake_ethernet2\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 53,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.fake_ethernet.setInvalid()\"\n }\n },\n {\n \"op\" : \"exit\",\n \"parameters\" : [],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 54,\n \"column\" : 12,\n \"source_fragment\" : \"exit\"\n }\n }\n ]\n },\n {\n \"name\" : \"packetio60\",\n \"id\" : 150,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_pkt_length46\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"packet_length\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x0000ffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xfff2\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 60,\n \"column\" : 37,\n \"source_fragment\" : \"= (bit<16>)standard_md.packet_length - 14; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"next283\",\n \"id\" : 151,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_int_bmd_report_type21\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 219,\n \"column\" : 50,\n \"source_fragment\" : \"0; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 285,\n \"column\" : 21,\n \"source_fragment\" : \"= 1; ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"next325\",\n \"id\" : 152,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 325,\n \"column\" : 25,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_drop_reason49\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x83\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 258,\n \"column\" : 32,\n \"source_fragment\" : \"131, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"next323\",\n \"id\" : 153,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"ttl\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"ttl\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 323,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.mpls.ttl = hdr.mpls.ttl - 1\"\n }\n }\n ]\n },\n {\n \"name\" : \"next333\",\n \"id\" : 154,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ttl\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ttl\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 333,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.ipv4.ttl = hdr.ipv4.ttl - 1\"\n }\n }\n ]\n },\n {\n \"name\" : \"next336\",\n \"id\" : 155,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 336,\n \"column\" : 29,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_drop_reason49\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1a\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 247,\n \"column\" : 30,\n \"source_fragment\" : \"26, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"next343\",\n \"id\" : 156,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv68\", \"hop_limit\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"+\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv68\", \"hop_limit\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 343,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.ipv6.hop_limit = hdr.ipv6.hop_limit - 1\"\n }\n }\n ]\n },\n {\n \"name\" : \"next346\",\n \"id\" : 157,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 346,\n \"column\" : 29,\n \"source_fragment\" : \"= 1; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_drop_reason49\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1a\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../shared/define.p4\",\n \"line\" : 247,\n \"column\" : 30,\n \"source_fragment\" : \"26, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf610\",\n \"id\" : 158,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_udp20\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 610,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.inner_udp.setValid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_udp20\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 611,\n \"column\" : 34,\n \"source_fragment\" : \"= hdr.udp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_udp10\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 612,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.udp.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf615\",\n \"id\" : 159,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_tcp19\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 615,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.inner_tcp.setValid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_tcp19\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_tcp9\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 616,\n \"column\" : 34,\n \"source_fragment\" : \"= hdr.tcp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_tcp9\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 617,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.tcp.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf620\",\n \"id\" : 160,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"add_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_icmp21\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 620,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.inner_icmp.setValid()\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_inner_icmp21\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_icmp11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 621,\n \"column\" : 35,\n \"source_fragment\" : \"= hdr.icmp; ...\"\n }\n },\n {\n \"op\" : \"remove_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_ingress_icmp11\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 622,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.icmp.setInvalid()\"\n }\n }\n ]\n },\n {\n \"name\" : \"upf628\",\n \"id\" : 161,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_40\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_upf_ctr_id14\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 628,\n \"column\" : 43,\n \"source_fragment\" : \"(bit<32>)fabric_md.bridged.upf.upf_ctr_id\"\n }\n },\n {\n \"op\" : \"count\",\n \"parameters\" : [\n {\n \"type\" : \"counter_array\",\n \"value\" : \"FabricEgress.upf.terminations_counter\"\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_40\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 628,\n \"column\" : 16,\n \"source_fragment\" : \"terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)\"\n }\n }\n ]\n },\n {\n \"name\" : \"int128\",\n \"id\" : 162,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_eth_type\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_eth_type25\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_mpls\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_mpls26\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_ipv4\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ipv427\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_udp\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_udp28\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_fixed_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_fixed_header29\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_common_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_common_report_header30\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_local_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_local_report_header31\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_drop_report_header\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_drop_report_header32\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_eth_type\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_eth_type35\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_fabric_md_bridged\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_bridged36\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 129,\n \"column\" : 4,\n \"source_fragment\" : \"fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_fabric_md_int_report_md\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_int_report_md39\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 129,\n \"column\" : 4,\n \"source_fragment\" : \"fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"hop_latency\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_int_md_hop_latency40\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 129,\n \"column\" : 4,\n \"source_fragment\" : \"fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"timestamp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_int_md_timestamp41\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 129,\n \"column\" : 4,\n \"source_fragment\" : \"fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"vlan_stripped\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_int_md_vlan_stripped42\"]\n }\n }\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 129,\n \"column\" : 4,\n \"source_fragment\" : \"fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"queue_report\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"b2d\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_int_md_queue_report43\"]\n }\n }\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 129,\n \"column\" : 4,\n \"source_fragment\" : \"fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_fabric_md_pkt_length\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_pkt_length46\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 129,\n \"column\" : 4,\n \"source_fragment\" : \"fabric_egress_metadata_t fabric_md = fabric_v1model.egress; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"int_egress_egress_qid\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 135,\n \"column\" : 4,\n \"source_fragment\" : \"QueueId_t egress_qid = 0;\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"hop_latency\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"-\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_global_timestamp\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_base_ig_tstamp9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 365,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_md.hop_latency = standard_md.egress_global_timestamp[31:0] - fabric_md.bridged.base.ig_tstamp[31:0]\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"timestamp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_global_timestamp\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 366,\n \"column\" : 8,\n \"source_fragment\" : \"fabric_md.int_md.timestamp = standard_md.egress_global_timestamp\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"key_0\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"-\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_global_timestamp\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_base_ig_tstamp9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x10\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 166,\n \"column\" : 12,\n \"source_fragment\" : \" fabric_md.int_md.hop_latency[31:16]: range @name(\\\\\\\"hop_latency_upper\\\\\\\");\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"key_1\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"-\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_global_timestamp\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_base_ig_tstamp9\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 167,\n \"column\" : 12,\n \"source_fragment\" : \" fabric_md.int_md.hop_latency[15:0]: range @name(\\\\\\\"hop_latency_lower\\\\\\\");\"\n }\n }\n ]\n },\n {\n \"name\" : \"int383\",\n \"id\" : 163,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_41\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_bridged\", \"_int_bmd_mirror_session_id22\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xffffffff\"\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 384,\n \"column\" : 20,\n \"source_fragment\" : \"(bit<32>)fabric_md.bridged.int_bmd.mirror_session_id\"\n }\n },\n {\n \"op\" : \"clone_egress_pkt_to_egress\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"tmp_41\"]\n },\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x1\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 383,\n \"column\" : 16,\n \"source_fragment\" : \"clone_preserving_field_list(CloneType.E2E, ...\"\n }\n }\n ]\n },\n {\n \"name\" : \"int373\",\n \"id\" : 164,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_hdr_report_fixed_header\", \"hw_id\"]\n },\n {\n \"type\" : \"expression\",\n \"value\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"|\",\n \"left\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \">>\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_spec\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x7\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01ff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x03\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x3f\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x07\"\n }\n }\n }\n }\n }\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 373,\n \"column\" : 8,\n \"source_fragment\" : \"hdr.report_fixed_header.hw_id = 4w0 ++ standard_md.egress_spec[8:7]\"\n }\n }\n ]\n },\n {\n \"name\" : \"slicing217\",\n \"id\" : 165,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"dscp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"dscp_rewriter_tmp_dscp\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 217,\n \"column\" : 16,\n \"source_fragment\" : \"hdr.ipv4.dscp = tmp_dscp\"\n }\n }\n ]\n },\n {\n \"name\" : \"slicing189\",\n \"id\" : 166,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_bridged36\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_fabric_md_bridged\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 391,\n \"column\" : 30,\n \"source_fragment\" : \"= fabric_md; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_int_report_md39\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_fabric_md_int_report_md\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 391,\n \"column\" : 30,\n \"source_fragment\" : \"= fabric_md; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_int_md_hop_latency40\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"hop_latency\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 391,\n \"column\" : 30,\n \"source_fragment\" : \"= fabric_md; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_int_md_timestamp41\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_md\", \"timestamp\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 391,\n \"column\" : 30,\n \"source_fragment\" : \"= fabric_md; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_eth_type25\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_mpls26\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_mpls\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_ipv427\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_ipv4\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_udp28\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_udp\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_report_fixed_header29\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_report_fixed_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_common_report_header30\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_common_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_local_report_header31\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_local_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_drop_report_header32\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_drop_report_header\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign_header\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"_egress_eth_type35\"\n },\n {\n \"type\" : \"header\",\n \"value\" : \"int_egress_hdr_eth_type\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 392,\n \"column\" : 27,\n \"source_fragment\" : \"= hdr; ...\"\n }\n },\n {\n \"op\" : \"assign\",\n \"parameters\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"dscp_rewriter_tmp_dscp\"]\n },\n {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_slice_tc12\"]\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 189,\n \"column\" : 4,\n \"source_fragment\" : \"bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc;\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model170\",\n \"id\" : 167,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"recirculate\",\n \"parameters\" : [\n {\n \"type\" : \"hexstr\",\n \"value\" : \"0x5\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 170,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(NO_PRESERVATION)\"\n }\n }\n ]\n },\n {\n \"name\" : \"fabric_v1model174\",\n \"id\" : 168,\n \"runtime_data\" : [],\n \"primitives\" : [\n {\n \"op\" : \"mark_to_drop\",\n \"parameters\" : [\n {\n \"type\" : \"header\",\n \"value\" : \"standard_metadata\"\n }\n ],\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 174,\n \"column\" : 12,\n \"source_fragment\" : \"mark_to_drop(standard_md)\"\n }\n }\n ]\n }\n ],\n \"pipelines\" : [\n {\n \"name\" : \"ingress\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 35,\n \"column\" : 8,\n \"source_fragment\" : \"FabricIngress\"\n },\n \"init_table\" : \"tbl_fabric_v1model61\",\n \"tables\" : [\n {\n \"name\" : \"tbl_fabric_v1model61\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 61,\n \"column\" : 8,\n \"source_fragment\" : \"mark_to_drop(standard_md)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [73],\n \"actions\" : [\"fabric_v1model61\"],\n \"base_default_next\" : \"node_3\",\n \"next_tables\" : {\n \"fabric_v1model61\" : \"node_3\"\n },\n \"default_entry\" : {\n \"action_id\" : 73,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_fabric_v1model64\",\n \"id\" : 1,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 64,\n \"column\" : 12,\n \"source_fragment\" : \"exit\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [72],\n \"actions\" : [\"fabric_v1model64\"],\n \"base_default_next\" : \"node_5\",\n \"next_tables\" : {\n \"fabric_v1model64\" : \"node_5\"\n },\n \"default_entry\" : {\n \"action_id\" : 72,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_fabric_v1model70\",\n \"id\" : 2,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 70,\n \"column\" : 51,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [74],\n \"actions\" : [\"fabric_v1model70\"],\n \"base_default_next\" : \"tbl_lookup_md_init15\",\n \"next_tables\" : {\n \"fabric_v1model70\" : \"tbl_lookup_md_init15\"\n },\n \"default_entry\" : {\n \"action_id\" : 74,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init15\",\n \"id\" : 3,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 15,\n \"column\" : 23,\n \"source_fragment\" : \"= hdr.ethernet.dst_addr; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [76],\n \"actions\" : [\"lookup_md_init15\"],\n \"base_default_next\" : \"node_8\",\n \"next_tables\" : {\n \"lookup_md_init15\" : \"node_8\"\n },\n \"default_entry\" : {\n \"action_id\" : 76,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init21\",\n \"id\" : 4,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 21,\n \"column\" : 27,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [75],\n \"actions\" : [\"lookup_md_init21\"],\n \"base_default_next\" : \"tbl_lookup_md_init24\",\n \"next_tables\" : {\n \"lookup_md_init21\" : \"tbl_lookup_md_init24\"\n },\n \"default_entry\" : {\n \"action_id\" : 75,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init24\",\n \"id\" : 5,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 24,\n \"column\" : 23,\n \"source_fragment\" : \"= false; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [85],\n \"actions\" : [\"lookup_md_init24\"],\n \"base_default_next\" : \"node_11\",\n \"next_tables\" : {\n \"lookup_md_init24\" : \"node_11\"\n },\n \"default_entry\" : {\n \"action_id\" : 85,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init33\",\n \"id\" : 6,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 33,\n \"column\" : 27,\n \"source_fragment\" : \"= true; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [80],\n \"actions\" : [\"lookup_md_init33\"],\n \"base_default_next\" : \"node_13\",\n \"next_tables\" : {\n \"lookup_md_init33\" : \"node_13\"\n },\n \"default_entry\" : {\n \"action_id\" : 80,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init38\",\n \"id\" : 7,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 38,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.inner_tcp.sport; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [77],\n \"actions\" : [\"lookup_md_init38\"],\n \"base_default_next\" : \"node_27\",\n \"next_tables\" : {\n \"lookup_md_init38\" : \"node_27\"\n },\n \"default_entry\" : {\n \"action_id\" : 77,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init41\",\n \"id\" : 8,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 41,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.inner_udp.sport; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [78],\n \"actions\" : [\"lookup_md_init41\"],\n \"base_default_next\" : \"node_27\",\n \"next_tables\" : {\n \"lookup_md_init41\" : \"node_27\"\n },\n \"default_entry\" : {\n \"action_id\" : 78,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init44\",\n \"id\" : 9,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 44,\n \"column\" : 33,\n \"source_fragment\" : \"= hdr.inner_icmp.icmp_type; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [79],\n \"actions\" : [\"lookup_md_init44\"],\n \"base_default_next\" : \"node_27\",\n \"next_tables\" : {\n \"lookup_md_init44\" : \"node_27\"\n },\n \"default_entry\" : {\n \"action_id\" : 79,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init48\",\n \"id\" : 10,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 48,\n \"column\" : 27,\n \"source_fragment\" : \"= true; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [84],\n \"actions\" : [\"lookup_md_init48\"],\n \"base_default_next\" : \"node_21\",\n \"next_tables\" : {\n \"lookup_md_init48\" : \"node_21\"\n },\n \"default_entry\" : {\n \"action_id\" : 84,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init53\",\n \"id\" : 11,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 53,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.tcp.sport; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [81],\n \"actions\" : [\"lookup_md_init53\"],\n \"base_default_next\" : \"node_27\",\n \"next_tables\" : {\n \"lookup_md_init53\" : \"node_27\"\n },\n \"default_entry\" : {\n \"action_id\" : 81,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init56\",\n \"id\" : 12,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 56,\n \"column\" : 32,\n \"source_fragment\" : \"= hdr.udp.sport; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [82],\n \"actions\" : [\"lookup_md_init56\"],\n \"base_default_next\" : \"node_27\",\n \"next_tables\" : {\n \"lookup_md_init56\" : \"node_27\"\n },\n \"default_entry\" : {\n \"action_id\" : 82,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_lookup_md_init59\",\n \"id\" : 13,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 59,\n \"column\" : 33,\n \"source_fragment\" : \"= hdr.icmp.icmp_type; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [83],\n \"actions\" : [\"lookup_md_init59\"],\n \"base_default_next\" : \"node_27\",\n \"next_tables\" : {\n \"lookup_md_init59\" : \"node_27\"\n },\n \"default_entry\" : {\n \"action_id\" : 83,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_pkt_io_do_packet_out\",\n \"id\" : 14,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 25,\n \"column\" : 12,\n \"source_fragment\" : \"do_packet_out()\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [9],\n \"actions\" : [\"FabricIngress.pkt_io.do_packet_out\"],\n \"base_default_next\" : \"FabricIngress.int_watchlist.watchlist\",\n \"next_tables\" : {\n \"FabricIngress.pkt_io.do_packet_out\" : \"FabricIngress.int_watchlist.watchlist\"\n },\n \"default_entry\" : {\n \"action_id\" : 9,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.int_watchlist.watchlist\",\n \"id\" : 15,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 34,\n \"column\" : 10,\n \"source_fragment\" : \"watchlist\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ipv4_valid\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_is_ipv410\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_src\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_dst\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ip_proto\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"range\",\n \"name\" : \"l4_sport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"range\",\n \"name\" : \"l4_dport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"range\",\n \"type\" : \"simple\",\n \"max_size\" : 64,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [68, 70, 69],\n \"actions\" : [\"FabricIngress.int_watchlist.mark_to_report\", \"FabricIngress.int_watchlist.no_report_collector\", \"FabricIngress.int_watchlist.no_report\"],\n \"base_default_next\" : \"FabricIngress.stats.flows\",\n \"next_tables\" : {\n \"FabricIngress.int_watchlist.mark_to_report\" : \"FabricIngress.stats.flows\",\n \"FabricIngress.int_watchlist.no_report_collector\" : \"FabricIngress.stats.flows\",\n \"FabricIngress.int_watchlist.no_report\" : \"FabricIngress.stats.flows\"\n },\n \"default_entry\" : {\n \"action_id\" : 69,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.stats.flows\",\n \"id\" : 16,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4\",\n \"line\" : 21,\n \"column\" : 10,\n \"source_fragment\" : \"flows\"\n },\n \"key\" : [\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_src\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_dst\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ip_proto\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"l4_sport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"l4_dport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ig_port\",\n \"target\" : [\"_ingress_bridged4\", \"_base_ig_port3\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [8],\n \"actions\" : [\"FabricIngress.stats.count\"],\n \"base_default_next\" : \"FabricIngress.slice_tc_classifier.classifier\",\n \"next_tables\" : {\n \"FabricIngress.stats.count\" : \"FabricIngress.slice_tc_classifier.classifier\"\n },\n \"default_entry\" : {\n \"action_id\" : 8,\n \"action_const\" : true,\n \"action_data\" : [\"0x0\"],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.slice_tc_classifier.classifier\",\n \"id\" : 17,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 44,\n \"column\" : 10,\n \"source_fragment\" : \"classifier\"\n },\n \"key\" : [\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ig_port\",\n \"target\" : [\"_ingress_bridged4\", \"_base_ig_port3\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_src\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_dst\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ip_proto\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"l4_sport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"l4_dport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 512,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [37, 39, 38],\n \"actions\" : [\"FabricIngress.slice_tc_classifier.set_slice_id_tc\", \"FabricIngress.slice_tc_classifier.trust_dscp\", \"FabricIngress.slice_tc_classifier.no_classification\"],\n \"base_default_next\" : \"FabricIngress.filtering.ingress_port_vlan\",\n \"next_tables\" : {\n \"FabricIngress.slice_tc_classifier.set_slice_id_tc\" : \"FabricIngress.filtering.ingress_port_vlan\",\n \"FabricIngress.slice_tc_classifier.trust_dscp\" : \"FabricIngress.filtering.ingress_port_vlan\",\n \"FabricIngress.slice_tc_classifier.no_classification\" : \"FabricIngress.filtering.ingress_port_vlan\"\n },\n \"default_entry\" : {\n \"action_id\" : 38,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.filtering.ingress_port_vlan\",\n \"id\" : 18,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 42,\n \"column\" : 10,\n \"source_fragment\" : \"ingress_port_vlan\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ig_port\",\n \"target\" : [\"_ingress_bridged4\", \"_base_ig_port3\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"vlan_is_valid\",\n \"target\" : [\"_ingress_vlan_tag4\", \"$valid$\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"vlan_id\",\n \"target\" : [\"_ingress_vlan_tag4\", \"vlan_id\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [10, 11, 12],\n \"actions\" : [\"FabricIngress.filtering.deny\", \"FabricIngress.filtering.permit\", \"FabricIngress.filtering.permit_with_internal_vlan\"],\n \"base_default_next\" : \"FabricIngress.filtering.fwd_classifier\",\n \"next_tables\" : {\n \"FabricIngress.filtering.deny\" : \"FabricIngress.filtering.fwd_classifier\",\n \"FabricIngress.filtering.permit\" : \"FabricIngress.filtering.fwd_classifier\",\n \"FabricIngress.filtering.permit_with_internal_vlan\" : \"FabricIngress.filtering.fwd_classifier\"\n },\n \"default_entry\" : {\n \"action_id\" : 10,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.filtering.fwd_classifier\",\n \"id\" : 19,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 80,\n \"column\" : 10,\n \"source_fragment\" : \"fwd_classifier\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ig_port\",\n \"target\" : [\"_ingress_bridged4\", \"_base_ig_port3\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"eth_dst\",\n \"target\" : [\"_ingress_ethernet3\", \"dst_addr\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"eth_type\",\n \"target\" : [\"_ingress_eth_type5\", \"value\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ip_eth_type\",\n \"target\" : [\"_ingress_bridged4\", \"_base_ip_eth_type10\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [13],\n \"actions\" : [\"FabricIngress.filtering.set_forwarding_type\"],\n \"base_default_next\" : \"tbl_filtering100\",\n \"next_tables\" : {\n \"FabricIngress.filtering.set_forwarding_type\" : \"tbl_filtering100\"\n },\n \"default_entry\" : {\n \"action_id\" : 13,\n \"action_const\" : true,\n \"action_data\" : [\"0x0\"],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_filtering100\",\n \"id\" : 20,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/filtering.p4\",\n \"line\" : 100,\n \"column\" : 8,\n \"source_fragment\" : \"fwd_type_counter.count((bit<32>)fabric_md.bridged.base.fwd_type)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [94],\n \"actions\" : [\"filtering100\"],\n \"base_default_next\" : \"node_35\",\n \"next_tables\" : {\n \"filtering100\" : \"node_35\"\n },\n \"default_entry\" : {\n \"action_id\" : 94,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf25\",\n \"id\" : 21,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 25,\n \"column\" : 4,\n \"source_fragment\" : \"bool is_uplink = false; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [93],\n \"actions\" : [\"upf25\"],\n \"base_default_next\" : \"node_37\",\n \"next_tables\" : {\n \"upf25\" : \"node_37\"\n },\n \"default_entry\" : {\n \"action_id\" : 93,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.interfaces\",\n \"id\" : 22,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 107,\n \"column\" : 10,\n \"source_fragment\" : \"interfaces\"\n },\n \"key\" : [\n {\n \"match_type\" : \"lpm\",\n \"name\" : \"ipv4_dst_addr\",\n \"target\" : [\"_ingress_ipv47\", \"dst_addr\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"gtpu_is_valid\",\n \"target\" : [\"_ingress_gtpu12\", \"$valid$\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"lpm\",\n \"type\" : \"simple\",\n \"max_size\" : 64,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [45, 46, 47, 48],\n \"actions\" : [\"FabricIngress.upf.iface_access\", \"FabricIngress.upf.iface_core\", \"FabricIngress.upf.iface_dbuf\", \"FabricIngress.upf.iface_miss\"],\n \"base_default_next\" : \"FabricIngress.upf.applications\",\n \"next_tables\" : {\n \"FabricIngress.upf.iface_access\" : \"tbl_upf409\",\n \"FabricIngress.upf.iface_core\" : \"tbl_upf418\",\n \"FabricIngress.upf.iface_dbuf\" : \"tbl_upf424\",\n \"FabricIngress.upf.iface_miss\" : \"FabricIngress.upf.applications\"\n },\n \"default_entry\" : {\n \"action_id\" : 48,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf409\",\n \"id\" : 23,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 409,\n \"column\" : 30,\n \"source_fragment\" : \"= true; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [86],\n \"actions\" : [\"upf409\"],\n \"base_default_next\" : \"node_40\",\n \"next_tables\" : {\n \"upf409\" : \"node_40\"\n },\n \"default_entry\" : {\n \"action_id\" : 86,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.uplink_sessions\",\n \"id\" : 24,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 213,\n \"column\" : 10,\n \"source_fragment\" : \"uplink_sessions\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"tunnel_ipv4_dst\",\n \"target\" : [\"_ingress_ipv47\", \"dst_addr\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"teid\",\n \"target\" : [\"_ingress_gtpu12\", \"teid\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 100000,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [56, 50, 49],\n \"actions\" : [\"FabricIngress.upf.set_uplink_session\", \"FabricIngress.upf.set_uplink_session_drop\", \"FabricIngress.upf.set_uplink_session_miss\"],\n \"base_default_next\" : \"FabricIngress.upf.applications\",\n \"next_tables\" : {\n \"FabricIngress.upf.set_uplink_session\" : \"FabricIngress.upf.applications\",\n \"FabricIngress.upf.set_uplink_session_drop\" : \"FabricIngress.upf.applications\",\n \"FabricIngress.upf.set_uplink_session_miss\" : \"FabricIngress.upf.applications\"\n },\n \"default_entry\" : {\n \"action_id\" : 49,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf418\",\n \"id\" : 25,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 418,\n \"column\" : 34,\n \"source_fragment\" : \"= fabric_md.lkp.ipv4_src; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [87],\n \"actions\" : [\"upf418\"],\n \"base_default_next\" : \"FabricIngress.upf.downlink_sessions\",\n \"next_tables\" : {\n \"upf418\" : \"FabricIngress.upf.downlink_sessions\"\n },\n \"default_entry\" : {\n \"action_id\" : 87,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.downlink_sessions\",\n \"id\" : 26,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 198,\n \"column\" : 10,\n \"source_fragment\" : \"downlink_sessions\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ue_addr\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 100000,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [53, 54, 55, 52, 51],\n \"actions\" : [\"FabricIngress.upf.set_downlink_session\", \"FabricIngress.upf.set_downlink_session_buf\", \"FabricIngress.upf.set_downlink_session_buf_drop\", \"FabricIngress.upf.set_downlink_session_drop\", \"FabricIngress.upf.set_downlink_session_miss\"],\n \"base_default_next\" : \"FabricIngress.upf.applications\",\n \"next_tables\" : {\n \"FabricIngress.upf.set_downlink_session\" : \"FabricIngress.upf.applications\",\n \"FabricIngress.upf.set_downlink_session_buf\" : \"FabricIngress.upf.applications\",\n \"FabricIngress.upf.set_downlink_session_buf_drop\" : \"FabricIngress.upf.applications\",\n \"FabricIngress.upf.set_downlink_session_drop\" : \"FabricIngress.upf.applications\",\n \"FabricIngress.upf.set_downlink_session_miss\" : \"FabricIngress.upf.applications\"\n },\n \"default_entry\" : {\n \"action_id\" : 51,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf424\",\n \"id\" : 27,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 424,\n \"column\" : 34,\n \"source_fragment\" : \"= fabric_md.lkp.ipv4_src; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [88],\n \"actions\" : [\"upf424\"],\n \"base_default_next\" : \"FabricIngress.upf.downlink_sessions\",\n \"next_tables\" : {\n \"upf424\" : \"FabricIngress.upf.downlink_sessions\"\n },\n \"default_entry\" : {\n \"action_id\" : 88,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.applications\",\n \"id\" : 28,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 337,\n \"column\" : 10,\n \"source_fragment\" : \"applications\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"slice_id\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_upf_slice_id30\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"lpm\",\n \"name\" : \"app_ipv4_addr\",\n \"target\" : [\"scalars\", \"upf_app_ipv4_addr\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"range\",\n \"name\" : \"app_l4_port\",\n \"target\" : [\"scalars\", \"upf_app_l4_port\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"app_ip_proto\",\n \"target\" : [\"scalars\", \"upf_app_ip_proto\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"range\",\n \"type\" : \"simple\",\n \"max_size\" : 5,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [64, 5],\n \"actions\" : [\"FabricIngress.upf.set_app_id\", \"nop\"],\n \"base_default_next\" : \"node_47\",\n \"next_tables\" : {\n \"FabricIngress.upf.set_app_id\" : \"node_47\",\n \"nop\" : \"node_47\"\n },\n \"default_entry\" : {\n \"action_id\" : 5,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.uplink_terminations\",\n \"id\" : 29,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 280,\n \"column\" : 10,\n \"source_fragment\" : \"uplink_terminations\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ue_session_id\",\n \"target\" : [\"scalars\", \"upf_ue_session_id\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"app_id\",\n \"target\" : [\"scalars\", \"upf_internal_app_id\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 100000,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [61, 59, 57],\n \"actions\" : [\"FabricIngress.upf.app_fwd\", \"FabricIngress.upf.uplink_drop\", \"FabricIngress.upf.uplink_drop_miss\"],\n \"base_default_next\" : \"FabricIngress.upf.uplink_recirc_rules\",\n \"next_tables\" : {\n \"FabricIngress.upf.app_fwd\" : \"FabricIngress.upf.uplink_recirc_rules\",\n \"FabricIngress.upf.uplink_drop\" : \"FabricIngress.upf.uplink_recirc_rules\",\n \"FabricIngress.upf.uplink_drop_miss\" : \"FabricIngress.upf.uplink_recirc_rules\"\n },\n \"default_entry\" : {\n \"action_id\" : 57,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.uplink_recirc_rules\",\n \"id\" : 30,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 387,\n \"column\" : 10,\n \"source_fragment\" : \"uplink_recirc_rules\"\n },\n \"key\" : [\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_src\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_dst\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 64,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [65, 66, 67],\n \"actions\" : [\"FabricIngress.upf.recirc_allow\", \"FabricIngress.upf.recirc_deny\", \"FabricIngress.upf.recirc_miss\"],\n \"base_default_next\" : \"tbl_upf445\",\n \"next_tables\" : {\n \"FabricIngress.upf.recirc_allow\" : \"tbl_upf445\",\n \"FabricIngress.upf.recirc_deny\" : \"tbl_upf445\",\n \"FabricIngress.upf.recirc_miss\" : \"tbl_upf445\"\n },\n \"default_entry\" : {\n \"action_id\" : 67,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.downlink_terminations\",\n \"id\" : 31,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 295,\n \"column\" : 10,\n \"source_fragment\" : \"downlink_terminations\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"ue_session_id\",\n \"target\" : [\"scalars\", \"upf_ue_session_id\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"app_id\",\n \"target\" : [\"scalars\", \"upf_internal_app_id\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 100000,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [62, 60, 58],\n \"actions\" : [\"FabricIngress.upf.downlink_fwd_encap\", \"FabricIngress.upf.downlink_drop\", \"FabricIngress.upf.downlink_drop_miss\"],\n \"base_default_next\" : \"tbl_upf445\",\n \"next_tables\" : {\n \"FabricIngress.upf.downlink_fwd_encap\" : \"tbl_upf445\",\n \"FabricIngress.upf.downlink_drop\" : \"tbl_upf445\",\n \"FabricIngress.upf.downlink_drop_miss\" : \"tbl_upf445\"\n },\n \"default_entry\" : {\n \"action_id\" : 58,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf443\",\n \"id\" : 32,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 443,\n \"column\" : 58,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [89],\n \"actions\" : [\"upf443\"],\n \"base_default_next\" : \"tbl_upf445\",\n \"next_tables\" : {\n \"upf443\" : \"tbl_upf445\"\n },\n \"default_entry\" : {\n \"action_id\" : 89,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf445\",\n \"id\" : 33,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 445,\n \"column\" : 12,\n \"source_fragment\" : \"app_meter.execute_meter((bit<32>) app_meter_idx_internal, fabric_md.upf_meter_color)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [91],\n \"actions\" : [\"upf445\"],\n \"base_default_next\" : \"node_54\",\n \"next_tables\" : {\n \"upf445\" : \"node_54\"\n },\n \"default_entry\" : {\n \"action_id\" : 91,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf448\",\n \"id\" : 34,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 448,\n \"column\" : 16,\n \"source_fragment\" : \"session_meter.execute_meter((bit<32>) session_meter_idx_internal, fabric_md.upf_meter_color)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [90],\n \"actions\" : [\"upf448\"],\n \"base_default_next\" : \"FabricIngress.upf.ig_tunnel_peers\",\n \"next_tables\" : {\n \"upf448\" : \"FabricIngress.upf.ig_tunnel_peers\"\n },\n \"default_entry\" : {\n \"action_id\" : 90,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.upf.ig_tunnel_peers\",\n \"id\" : 35,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 317,\n \"column\" : 10,\n \"source_fragment\" : \"ig_tunnel_peers\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"tun_peer_id\",\n \"target\" : [\"_ingress_bridged4\", \"_upf_tun_peer_id13\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 256,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [63, 4],\n \"actions\" : [\"FabricIngress.upf.set_routing_ipv4_dst\", \"nop\"],\n \"base_default_next\" : \"node_57\",\n \"next_tables\" : {\n \"FabricIngress.upf.set_routing_ipv4_dst\" : \"node_57\",\n \"nop\" : \"node_57\"\n },\n \"default_entry\" : {\n \"action_id\" : 4,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf461\",\n \"id\" : 36,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 461,\n \"column\" : 16,\n \"source_fragment\" : \"terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [92],\n \"actions\" : [\"upf461\"],\n \"base_default_next\" : \"node_59\",\n \"next_tables\" : {\n \"upf461\" : \"node_59\"\n },\n \"default_entry\" : {\n \"action_id\" : 92,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.forwarding.bridging\",\n \"id\" : 37,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 39,\n \"column\" : 10,\n \"source_fragment\" : \"bridging\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"vlan_id\",\n \"target\" : [\"_ingress_bridged4\", \"_base_vlan_id6\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"eth_dst\",\n \"target\" : [\"_ingress_ethernet3\", \"dst_addr\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [18, 14],\n \"actions\" : [\"FabricIngress.forwarding.set_next_id_bridging\", \"FabricIngress.forwarding.set_int_drop_reason\"],\n \"base_default_next\" : \"tbl_hasher17\",\n \"next_tables\" : {\n \"FabricIngress.forwarding.set_next_id_bridging\" : \"tbl_hasher17\",\n \"FabricIngress.forwarding.set_int_drop_reason\" : \"tbl_hasher17\"\n },\n \"default_entry\" : {\n \"action_id\" : 14,\n \"action_const\" : true,\n \"action_data\" : [\"0x59\"],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.forwarding.mpls\",\n \"id\" : 38,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 74,\n \"column\" : 10,\n \"source_fragment\" : \"mpls\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"mpls_label\",\n \"target\" : [\"_ingress_bridged4\", \"_base_mpls_label2\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [19, 15],\n \"actions\" : [\"FabricIngress.forwarding.pop_mpls_and_next\", \"FabricIngress.forwarding.set_int_drop_reason\"],\n \"base_default_next\" : \"tbl_hasher17\",\n \"next_tables\" : {\n \"FabricIngress.forwarding.pop_mpls_and_next\" : \"tbl_hasher17\",\n \"FabricIngress.forwarding.set_int_drop_reason\" : \"tbl_hasher17\"\n },\n \"default_entry\" : {\n \"action_id\" : 15,\n \"action_const\" : true,\n \"action_data\" : [\"0x81\"],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.forwarding.routing_v4\",\n \"id\" : 39,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 116,\n \"column\" : 10,\n \"source_fragment\" : \"routing_v4\"\n },\n \"key\" : [\n {\n \"match_type\" : \"lpm\",\n \"name\" : \"ipv4_dst\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_routing_ipv4_dst18\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"lpm\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [20, 21, 22, 16],\n \"actions\" : [\"FabricIngress.forwarding.set_next_id_routing_v4\", \"FabricIngress.forwarding.nop_routing_v4\", \"FabricIngress.forwarding.drop_routing_v4\", \"FabricIngress.forwarding.set_int_drop_reason\"],\n \"base_default_next\" : \"tbl_hasher17\",\n \"next_tables\" : {\n \"FabricIngress.forwarding.set_next_id_routing_v4\" : \"tbl_hasher17\",\n \"FabricIngress.forwarding.nop_routing_v4\" : \"tbl_hasher17\",\n \"FabricIngress.forwarding.drop_routing_v4\" : \"tbl_hasher17\",\n \"FabricIngress.forwarding.set_int_drop_reason\" : \"tbl_hasher17\"\n },\n \"default_entry\" : {\n \"action_id\" : 16,\n \"action_const\" : false,\n \"action_data\" : [\"0x1d\"],\n \"action_entry_const\" : false\n }\n },\n {\n \"name\" : \"FabricIngress.forwarding.routing_v6\",\n \"id\" : 40,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 155,\n \"column\" : 10,\n \"source_fragment\" : \"routing_v6\"\n },\n \"key\" : [\n {\n \"match_type\" : \"lpm\",\n \"name\" : \"ipv6_dst\",\n \"target\" : [\"_ingress_ipv68\", \"dst_addr\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"lpm\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [23, 24, 17],\n \"actions\" : [\"FabricIngress.forwarding.set_next_id_routing_v6\", \"FabricIngress.forwarding.drop_routing_v6\", \"FabricIngress.forwarding.set_int_drop_reason\"],\n \"base_default_next\" : \"tbl_hasher17\",\n \"next_tables\" : {\n \"FabricIngress.forwarding.set_next_id_routing_v6\" : \"tbl_hasher17\",\n \"FabricIngress.forwarding.drop_routing_v6\" : \"tbl_hasher17\",\n \"FabricIngress.forwarding.set_int_drop_reason\" : \"tbl_hasher17\"\n },\n \"default_entry\" : {\n \"action_id\" : 17,\n \"action_const\" : false,\n \"action_data\" : [\"0x1d\"],\n \"action_entry_const\" : false\n }\n },\n {\n \"name\" : \"tbl_hasher17\",\n \"id\" : 41,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 17,\n \"column\" : 8,\n \"source_fragment\" : \"hash( ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [99],\n \"actions\" : [\"hasher17\"],\n \"base_default_next\" : \"node_69\",\n \"next_tables\" : {\n \"hasher17\" : \"node_69\"\n },\n \"default_entry\" : {\n \"action_id\" : 99,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_hasher28\",\n \"id\" : 42,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 28,\n \"column\" : 12,\n \"source_fragment\" : \"hash( ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [95],\n \"actions\" : [\"hasher28\"],\n \"base_default_next\" : \"node_76\",\n \"next_tables\" : {\n \"hasher28\" : \"node_76\"\n },\n \"default_entry\" : {\n \"action_id\" : 95,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_hasher39\",\n \"id\" : 43,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 39,\n \"column\" : 12,\n \"source_fragment\" : \"hash( ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [96],\n \"actions\" : [\"hasher39\"],\n \"base_default_next\" : \"node_76\",\n \"next_tables\" : {\n \"hasher39\" : \"node_76\"\n },\n \"default_entry\" : {\n \"action_id\" : 96,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_hasher50\",\n \"id\" : 44,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 50,\n \"column\" : 32,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [97],\n \"actions\" : [\"hasher50\"],\n \"base_default_next\" : \"node_76\",\n \"next_tables\" : {\n \"hasher50\" : \"node_76\"\n },\n \"default_entry\" : {\n \"action_id\" : 97,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_hasher66\",\n \"id\" : 45,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 66,\n \"column\" : 46,\n \"source_fragment\" : \"= 0; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [98],\n \"actions\" : [\"hasher66\"],\n \"base_default_next\" : \"node_76\",\n \"next_tables\" : {\n \"hasher66\" : \"node_76\"\n },\n \"default_entry\" : {\n \"action_id\" : 98,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.pre_next.next_mpls\",\n \"id\" : 46,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4\",\n \"line\" : 22,\n \"column\" : 10,\n \"source_fragment\" : \"next_mpls\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"next_id\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_next_id21\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [25, 0],\n \"actions\" : [\"FabricIngress.pre_next.set_mpls_label\", \"nop\"],\n \"base_default_next\" : \"FabricIngress.pre_next.next_vlan\",\n \"next_tables\" : {\n \"FabricIngress.pre_next.set_mpls_label\" : \"FabricIngress.pre_next.next_vlan\",\n \"nop\" : \"FabricIngress.pre_next.next_vlan\"\n },\n \"default_entry\" : {\n \"action_id\" : 0,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.pre_next.next_vlan\",\n \"id\" : 47,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/pre_next.p4\",\n \"line\" : 54,\n \"column\" : 10,\n \"source_fragment\" : \"next_vlan\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"next_id\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_next_id21\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [26, 1],\n \"actions\" : [\"FabricIngress.pre_next.set_vlan\", \"nop\"],\n \"base_default_next\" : \"FabricIngress.acl.acl\",\n \"next_tables\" : {\n \"FabricIngress.pre_next.set_vlan\" : \"FabricIngress.acl.acl\",\n \"nop\" : \"FabricIngress.acl.acl\"\n },\n \"default_entry\" : {\n \"action_id\" : 1,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.acl.acl\",\n \"id\" : 48,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/acl.p4\",\n \"line\" : 74,\n \"column\" : 10,\n \"source_fragment\" : \"acl\"\n },\n \"key\" : [\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ig_port\",\n \"target\" : [\"_ingress_bridged4\", \"_base_ig_port3\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"eth_dst\",\n \"target\" : [\"_ingress_ethernet3\", \"dst_addr\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"eth_src\",\n \"target\" : [\"_ingress_ethernet3\", \"src_addr\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"vlan_id\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_vlan_id9\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"eth_type\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_eth_type8\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_src\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_src11\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ipv4_dst\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ipv4_dst12\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ip_proto\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_ip_proto13\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"icmp_type\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_type16\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"icmp_code\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_icmp_code17\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"l4_sport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_sport14\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"l4_dport\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_lkp_l4_dport15\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"ig_port_type\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_ig_port_type33\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [27, 29, 28, 30, 31, 32],\n \"actions\" : [\"FabricIngress.acl.set_next_id_acl\", \"FabricIngress.acl.punt_to_cpu\", \"FabricIngress.acl.copy_to_cpu\", \"FabricIngress.acl.drop\", \"FabricIngress.acl.set_output_port\", \"FabricIngress.acl.nop_acl\"],\n \"base_default_next\" : \"node_80\",\n \"next_tables\" : {\n \"FabricIngress.acl.set_next_id_acl\" : \"node_80\",\n \"FabricIngress.acl.punt_to_cpu\" : \"node_80\",\n \"FabricIngress.acl.copy_to_cpu\" : \"node_80\",\n \"FabricIngress.acl.drop\" : \"node_80\",\n \"FabricIngress.acl.set_output_port\" : \"node_80\",\n \"FabricIngress.acl.nop_acl\" : \"node_80\"\n },\n \"default_entry\" : {\n \"action_id\" : 32,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.next.hashed\",\n \"id\" : 49,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 127,\n \"column\" : 10,\n \"source_fragment\" : \"hashed\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"next_id\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_next_id21\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"indirect_ws\",\n \"action_profile\" : \"FabricIngress.next.hashed_profile\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [33, 34, 2],\n \"actions\" : [\"FabricIngress.next.output_hashed\", \"FabricIngress.next.routing_hashed\", \"nop\"],\n \"base_default_next\" : \"FabricIngress.next.multicast\",\n \"next_tables\" : {\n \"FabricIngress.next.output_hashed\" : \"FabricIngress.next.multicast\",\n \"FabricIngress.next.routing_hashed\" : \"FabricIngress.next.multicast\",\n \"nop\" : \"FabricIngress.next.multicast\"\n }\n },\n {\n \"name\" : \"FabricIngress.next.multicast\",\n \"id\" : 50,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 161,\n \"column\" : 10,\n \"source_fragment\" : \"multicast\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"next_id\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_next_id21\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [35, 36],\n \"actions\" : [\"FabricIngress.next.set_mcast_group_id\", \"FabricIngress.next.reset_mcast_group_id\"],\n \"base_default_next\" : \"FabricIngress.qos.set_slice_tc\",\n \"next_tables\" : {\n \"FabricIngress.next.set_mcast_group_id\" : \"FabricIngress.qos.set_slice_tc\",\n \"FabricIngress.next.reset_mcast_group_id\" : \"FabricIngress.qos.set_slice_tc\"\n },\n \"default_entry\" : {\n \"action_id\" : 36,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.qos.set_slice_tc\",\n \"id\" : 51,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 91,\n \"column\" : 10,\n \"source_fragment\" : \"set_slice_tc\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"fabric_md.is_upf_hit\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_is_upf_hit29\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 2,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [40, 41, 7],\n \"actions\" : [\"FabricIngress.qos.use_upf\", \"FabricIngress.qos.use_default\", \"NoAction\"],\n \"base_default_next\" : \"FabricIngress.qos.default_tc\",\n \"next_tables\" : {\n \"FabricIngress.qos.use_upf\" : \"FabricIngress.qos.default_tc\",\n \"FabricIngress.qos.use_default\" : \"FabricIngress.qos.default_tc\",\n \"NoAction\" : \"FabricIngress.qos.default_tc\"\n },\n \"default_entry\" : {\n \"action_id\" : 7,\n \"action_const\" : false,\n \"action_data\" : [],\n \"action_entry_const\" : false\n },\n \"entries\" : [\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 96,\n \"column\" : 12,\n \"source_fragment\" : \"true: use_upf\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 40,\n \"action_data\" : []\n },\n \"priority\" : 1\n },\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 97,\n \"column\" : 12,\n \"source_fragment\" : \"false: use_default\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 41,\n \"action_data\" : []\n },\n \"priority\" : 2\n }\n ]\n },\n {\n \"name\" : \"FabricIngress.qos.default_tc\",\n \"id\" : 52,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 150,\n \"column\" : 10,\n \"source_fragment\" : \"default_tc\"\n },\n \"key\" : [\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"slice_tc\",\n \"target\" : [\"_ingress_bridged4\", \"_base_slice_tc12\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"tc_unknown\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_tc_unknown28\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 16,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [44, 3],\n \"actions\" : [\"FabricIngress.qos.set_default_tc\", \"nop\"],\n \"base_default_next\" : \"node_85\",\n \"next_tables\" : {\n \"FabricIngress.qos.set_default_tc\" : \"node_85\",\n \"nop\" : \"node_85\"\n },\n \"default_entry\" : {\n \"action_id\" : 3,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_slicing174\",\n \"id\" : 53,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 174,\n \"column\" : 12,\n \"source_fragment\" : \"slice_tc_meter.execute_meter((bit<32>) fabric_md.bridged.base.slice_tc, packet_color)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [100],\n \"actions\" : [\"slicing174\"],\n \"base_default_next\" : \"FabricIngress.qos.queues\",\n \"next_tables\" : {\n \"slicing174\" : \"FabricIngress.qos.queues\"\n },\n \"default_entry\" : {\n \"action_id\" : 100,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_slicing177\",\n \"id\" : 54,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 177,\n \"column\" : 25,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [101],\n \"actions\" : [\"slicing177\"],\n \"base_default_next\" : \"FabricIngress.qos.queues\",\n \"next_tables\" : {\n \"slicing177\" : \"FabricIngress.qos.queues\"\n },\n \"default_entry\" : {\n \"action_id\" : 101,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.qos.queues\",\n \"id\" : 55,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 122,\n \"column\" : 10,\n \"source_fragment\" : \"queues\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"slice_tc\",\n \"target\" : [\"_ingress_bridged4\", \"_base_slice_tc12\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"color\",\n \"target\" : [\"scalars\", \"qos_packet_color\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 128,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [42, 43],\n \"actions\" : [\"FabricIngress.qos.set_queue\", \"FabricIngress.qos.meter_drop\"],\n \"base_default_next\" : \"tbl_int112\",\n \"next_tables\" : {\n \"FabricIngress.qos.set_queue\" : \"tbl_int112\",\n \"FabricIngress.qos.meter_drop\" : \"tbl_int112\"\n },\n \"default_entry\" : {\n \"action_id\" : 42,\n \"action_const\" : true,\n \"action_data\" : [\"0x0\"],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int112\",\n \"id\" : 56,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 112,\n \"column\" : 46,\n \"source_fragment\" : \"= standard_md.egress_spec; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [102],\n \"actions\" : [\"int112\"],\n \"base_default_next\" : \"FabricIngress.int_ingress.drop_report\",\n \"next_tables\" : {\n \"int112\" : \"FabricIngress.int_ingress.drop_report\"\n },\n \"default_entry\" : {\n \"action_id\" : 102,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricIngress.int_ingress.drop_report\",\n \"id\" : 57,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 86,\n \"column\" : 10,\n \"source_fragment\" : \"drop_report\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"int_report_type\",\n \"target\" : [\"_ingress_bridged4\", \"_int_bmd_report_type21\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"drop_ctl\",\n \"target\" : [\"scalars\", \"userMetadata._drop_ctl2\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"punt_to_cpu\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_punt_to_cpu23\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"egress_port_set\",\n \"target\" : [\"scalars\", \"userMetadata._ingress_egress_port_set22\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"ternary\",\n \"name\" : \"mcast_group_id\",\n \"target\" : [\"standard_metadata\", \"mcast_grp\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"ternary\",\n \"type\" : \"simple\",\n \"max_size\" : 3,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [71, 6],\n \"actions\" : [\"FabricIngress.int_ingress.report_drop\", \"nop\"],\n \"base_default_next\" : \"tbl_fabric_v1model106\",\n \"next_tables\" : {\n \"FabricIngress.int_ingress.report_drop\" : \"tbl_fabric_v1model106\",\n \"nop\" : \"tbl_fabric_v1model106\"\n },\n \"default_entry\" : {\n \"action_id\" : 6,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n },\n \"entries\" : [\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 101,\n \"column\" : 12,\n \"source_fragment\" : \"(INT_REPORT_TYPE_FLOW, 1, false, false, _): report_drop()\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n },\n {\n \"match_type\" : \"ternary\",\n \"key\" : \"0x0000\",\n \"mask\" : \"0x0000\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 71,\n \"action_data\" : []\n },\n \"priority\" : 1\n },\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 102,\n \"column\" : 12,\n \"source_fragment\" : \"(INT_REPORT_TYPE_FLOW, 1, false, true, _): report_drop()\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"ternary\",\n \"key\" : \"0x0000\",\n \"mask\" : \"0x0000\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 71,\n \"action_data\" : []\n },\n \"priority\" : 2\n },\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 104,\n \"column\" : 12,\n \"source_fragment\" : \"(INT_REPORT_TYPE_FLOW, 0, false, false, 0): report_drop()\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n },\n {\n \"match_type\" : \"ternary\",\n \"key\" : \"0x0000\",\n \"mask\" : \"0xffff\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 71,\n \"action_data\" : []\n },\n \"priority\" : 3\n }\n ]\n },\n {\n \"name\" : \"tbl_fabric_v1model106\",\n \"id\" : 58,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 106,\n \"column\" : 33,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [104],\n \"actions\" : [\"fabric_v1model106\"],\n \"base_default_next\" : \"node_92\",\n \"next_tables\" : {\n \"fabric_v1model106\" : \"node_92\"\n },\n \"default_entry\" : {\n \"action_id\" : 104,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_fabric_v1model110\",\n \"id\" : 59,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 110,\n \"column\" : 12,\n \"source_fragment\" : \"mark_to_drop(standard_md)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [103],\n \"actions\" : [\"fabric_v1model110\"],\n \"base_default_next\" : null,\n \"next_tables\" : {\n \"fabric_v1model110\" : null\n },\n \"default_entry\" : {\n \"action_id\" : 103,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n }\n ],\n \"action_profiles\" : [\n {\n \"name\" : \"FabricIngress.next.hashed_profile\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 112,\n \"column\" : 15,\n \"source_fragment\" : \"hashed_profile\"\n },\n \"max_size\" : 16,\n \"selector\" : {\n \"algo\" : \"crc16\",\n \"input\" : [\n {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_ecmp_hash5\"]\n }\n ]\n }\n }\n ],\n \"conditionals\" : [\n {\n \"name\" : \"node_3\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 62,\n \"column\" : 12,\n \"source_fragment\" : \"standard_md.parser_error == error.PacketRejectedByParser\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"parser_error\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x8\"\n }\n }\n },\n \"true_next\" : \"tbl_fabric_v1model64\",\n \"false_next\" : \"node_5\"\n },\n {\n \"name\" : \"node_5\",\n \"id\" : 1,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 67,\n \"column\" : 13,\n \"source_fragment\" : \"standard_md.instance_type == 4\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"instance_type\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000004\"\n }\n }\n },\n \"true_next\" : \"tbl_fabric_v1model70\",\n \"false_next\" : \"tbl_lookup_md_init15\"\n },\n {\n \"name\" : \"node_8\",\n \"id\" : 2,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 20,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.vlan_tag.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_vlan_tag4\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init21\",\n \"false_next\" : \"tbl_lookup_md_init24\"\n },\n {\n \"name\" : \"node_11\",\n \"id\" : 3,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 32,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.inner_ipv4.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init33\",\n \"false_next\" : \"node_19\"\n },\n {\n \"name\" : \"node_13\",\n \"id\" : 4,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 37,\n \"column\" : 16,\n \"source_fragment\" : \"hdr.inner_tcp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_tcp19\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init38\",\n \"false_next\" : \"node_15\"\n },\n {\n \"name\" : \"node_15\",\n \"id\" : 5,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 40,\n \"column\" : 23,\n \"source_fragment\" : \"hdr.inner_udp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_udp20\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init41\",\n \"false_next\" : \"node_17\"\n },\n {\n \"name\" : \"node_17\",\n \"id\" : 6,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 43,\n \"column\" : 23,\n \"source_fragment\" : \"hdr.inner_icmp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_icmp21\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init44\",\n \"false_next\" : \"node_27\"\n },\n {\n \"name\" : \"node_19\",\n \"id\" : 7,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 47,\n \"column\" : 19,\n \"source_fragment\" : \"hdr.ipv4.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init48\",\n \"false_next\" : \"node_27\"\n },\n {\n \"name\" : \"node_21\",\n \"id\" : 8,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 52,\n \"column\" : 16,\n \"source_fragment\" : \"hdr.tcp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_tcp9\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init53\",\n \"false_next\" : \"node_23\"\n },\n {\n \"name\" : \"node_23\",\n \"id\" : 9,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 55,\n \"column\" : 23,\n \"source_fragment\" : \"hdr.udp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init56\",\n \"false_next\" : \"node_25\"\n },\n {\n \"name\" : \"node_25\",\n \"id\" : 10,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/lookup_md_init.p4\",\n \"line\" : 58,\n \"column\" : 23,\n \"source_fragment\" : \"hdr.icmp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_icmp11\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_lookup_md_init59\",\n \"false_next\" : \"node_27\"\n },\n {\n \"name\" : \"node_27\",\n \"id\" : 11,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 24,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.packet_out.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_packet_out0\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_pkt_io_do_packet_out\",\n \"false_next\" : \"FabricIngress.int_watchlist.watchlist\"\n },\n {\n \"name\" : \"node_35\",\n \"id\" : 12,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 84,\n \"column\" : 13,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n }\n }\n },\n \"false_next\" : \"tbl_upf25\",\n \"true_next\" : \"node_59\"\n },\n {\n \"name\" : \"node_37\",\n \"id\" : 13,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 406,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.ipv4.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"FabricIngress.upf.interfaces\",\n \"false_next\" : \"node_59\"\n },\n {\n \"name\" : \"node_40\",\n \"id\" : 14,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 413,\n \"column\" : 24,\n \"source_fragment\" : \"fabric_md.bridged.base.encap_presence != EncapPresence.NONE\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"!=\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_encap_presence7\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n }\n },\n \"true_next\" : \"FabricIngress.upf.uplink_sessions\",\n \"false_next\" : \"FabricIngress.upf.applications\"\n },\n {\n \"name\" : \"node_47\",\n \"id\" : 15,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 433,\n \"column\" : 16,\n \"source_fragment\" : \"sess_hit\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_sess_hit\"]\n }\n }\n },\n \"true_next\" : \"node_48\",\n \"false_next\" : \"tbl_upf443\"\n },\n {\n \"name\" : \"node_48\",\n \"id\" : 16,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 434,\n \"column\" : 20,\n \"source_fragment\" : \"is_uplink\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_is_uplink\"]\n }\n }\n },\n \"true_next\" : \"FabricIngress.upf.uplink_terminations\",\n \"false_next\" : \"FabricIngress.upf.downlink_terminations\"\n },\n {\n \"name\" : \"node_54\",\n \"id\" : 17,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 446,\n \"column\" : 16,\n \"source_fragment\" : \"fabric_md.upf_meter_color != MeterColor_t.RED\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"!=\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_meter_color32\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n }\n },\n \"true_next\" : \"tbl_upf448\",\n \"false_next\" : \"FabricIngress.upf.ig_tunnel_peers\"\n },\n {\n \"name\" : \"node_57\",\n \"id\" : 18,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 451,\n \"column\" : 16,\n \"source_fragment\" : \"term_hit\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"upf_term_hit\"]\n }\n }\n },\n \"true_next\" : \"tbl_upf461\",\n \"false_next\" : \"node_59\"\n },\n {\n \"name\" : \"node_59\",\n \"id\" : 19,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 88,\n \"column\" : 13,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_forwarding19\"]\n }\n }\n },\n \"false_next\" : \"node_60\",\n \"true_next\" : \"tbl_hasher17\"\n },\n {\n \"name\" : \"node_60\",\n \"id\" : 20,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 178,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.ethernet.isValid() && ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ethernet3\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n }\n }\n }\n },\n \"true_next\" : \"FabricIngress.forwarding.bridging\",\n \"false_next\" : \"node_62\"\n },\n {\n \"name\" : \"node_62\",\n \"id\" : 21,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 181,\n \"column\" : 19,\n \"source_fragment\" : \"hdr.mpls.isValid() && ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n }\n }\n },\n \"true_next\" : \"FabricIngress.forwarding.mpls\",\n \"false_next\" : \"node_64\"\n },\n {\n \"name\" : \"node_64\",\n \"id\" : 22,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 184,\n \"column\" : 19,\n \"source_fragment\" : \"fabric_md.lkp.is_ipv4 && ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_is_ipv410\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"or\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x03\"\n }\n }\n }\n }\n }\n }\n },\n \"true_next\" : \"FabricIngress.forwarding.routing_v4\",\n \"false_next\" : \"node_66\"\n },\n {\n \"name\" : \"node_66\",\n \"id\" : 23,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/forwarding.p4\",\n \"line\" : 188,\n \"column\" : 19,\n \"source_fragment\" : \"hdr.ipv6.isValid() && ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv68\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n }\n }\n }\n },\n \"true_next\" : \"FabricIngress.forwarding.routing_v6\",\n \"false_next\" : \"tbl_hasher17\"\n },\n {\n \"name\" : \"node_69\",\n \"id\" : 24,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 27,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.bridged\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_bridged4\", \"_upf_needs_gtpu_encap16\"]\n }\n }\n },\n \"true_next\" : \"tbl_hasher28\",\n \"false_next\" : \"node_71\"\n },\n {\n \"name\" : \"node_71\",\n \"id\" : 25,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/hasher.p4\",\n \"line\" : 38,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.gtpu.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_hasher39\",\n \"false_next\" : \"node_73\"\n },\n {\n \"name\" : \"node_73\",\n \"id\" : 26,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 91,\n \"column\" : 34,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_lkp_is_ipv410\"]\n }\n }\n },\n \"true_next\" : \"tbl_hasher50\",\n \"false_next\" : \"tbl_hasher66\"\n },\n {\n \"name\" : \"node_76\",\n \"id\" : 27,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 92,\n \"column\" : 13,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n }\n }\n },\n \"false_next\" : \"FabricIngress.pre_next.next_mpls\",\n \"true_next\" : \"FabricIngress.acl.acl\"\n },\n {\n \"name\" : \"node_80\",\n \"id\" : 28,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 96,\n \"column\" : 13,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_skip_next20\"]\n }\n }\n },\n \"false_next\" : \"FabricIngress.next.hashed\",\n \"true_next\" : \"FabricIngress.qos.set_slice_tc\"\n },\n {\n \"name\" : \"node_85\",\n \"id\" : 29,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 173,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.upf_meter_color != MeterColor_t.RED\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"!=\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._ingress_upf_meter_color32\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n }\n },\n \"true_next\" : \"tbl_slicing174\",\n \"false_next\" : \"tbl_slicing177\"\n },\n {\n \"name\" : \"node_92\",\n \"id\" : 30,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 109,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.drop_ctl == 1\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n },\n \"false_next\" : null,\n \"true_next\" : \"tbl_fabric_v1model110\"\n }\n ]\n },\n {\n \"name\" : \"egress\",\n \"id\" : 1,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 115,\n \"column\" : 8,\n \"source_fragment\" : \"FabricEgress\"\n },\n \"init_table\" : \"tbl_fabric_v1model133\",\n \"tables\" : [\n {\n \"name\" : \"tbl_fabric_v1model133\",\n \"id\" : 60,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 133,\n \"column\" : 34,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [138],\n \"actions\" : [\"fabric_v1model133\"],\n \"base_default_next\" : \"node_97\",\n \"next_tables\" : {\n \"fabric_v1model133\" : \"node_97\"\n },\n \"default_entry\" : {\n \"action_id\" : 138,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_fabric_v1model136\",\n \"id\" : 61,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 136,\n \"column\" : 12,\n \"source_fragment\" : \"exit\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [137],\n \"actions\" : [\"fabric_v1model136\"],\n \"base_default_next\" : \"node_99\",\n \"next_tables\" : {\n \"fabric_v1model136\" : \"node_99\"\n },\n \"default_entry\" : {\n \"action_id\" : 137,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator14\",\n \"id\" : 62,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [140],\n \"actions\" : [\"int_tna_parser_emulator14\"],\n \"base_default_next\" : \"node_101\",\n \"next_tables\" : {\n \"int_tna_parser_emulator14\" : \"node_101\"\n },\n \"default_entry\" : {\n \"action_id\" : 140,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator148\",\n \"id\" : 63,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 148,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.ipv4.setInvalid(); ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [139],\n \"actions\" : [\"int_tna_parser_emulator148\"],\n \"base_default_next\" : \"node_103\",\n \"next_tables\" : {\n \"int_tna_parser_emulator148\" : \"node_103\"\n },\n \"default_entry\" : {\n \"action_id\" : 139,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_parser_emulator_parse_int_ingress_drop\",\n \"id\" : 64,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 165,\n \"column\" : 12,\n \"source_fragment\" : \"parse_int_ingress_drop()\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [124],\n \"actions\" : [\"FabricEgress.parser_emulator.parse_int_ingress_drop\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator166\",\n \"next_tables\" : {\n \"FabricEgress.parser_emulator.parse_int_ingress_drop\" : \"tbl_int_tna_parser_emulator166\"\n },\n \"default_entry\" : {\n \"action_id\" : 124,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator166\",\n \"id\" : 65,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 166,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(NO_PRESERVATION)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [141],\n \"actions\" : [\"int_tna_parser_emulator166\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator173\",\n \"next_tables\" : {\n \"int_tna_parser_emulator166\" : \"tbl_int_tna_parser_emulator173\"\n },\n \"default_entry\" : {\n \"action_id\" : 141,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_parser_emulator_parse_int_report_mirror\",\n \"id\" : 66,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 168,\n \"column\" : 12,\n \"source_fragment\" : \"parse_int_report_mirror()\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [126],\n \"actions\" : [\"FabricEgress.parser_emulator.parse_int_report_mirror\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator169\",\n \"next_tables\" : {\n \"FabricEgress.parser_emulator.parse_int_report_mirror\" : \"tbl_int_tna_parser_emulator169\"\n },\n \"default_entry\" : {\n \"action_id\" : 126,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator169\",\n \"id\" : 67,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 169,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(PRESERVE_INT_MD)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [142],\n \"actions\" : [\"int_tna_parser_emulator169\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator173\",\n \"next_tables\" : {\n \"int_tna_parser_emulator169\" : \"tbl_int_tna_parser_emulator173\"\n },\n \"default_entry\" : {\n \"action_id\" : 142,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator173\",\n \"id\" : 68,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [143],\n \"actions\" : [\"int_tna_parser_emulator173\"],\n \"base_default_next\" : \"node_109\",\n \"next_tables\" : {\n \"int_tna_parser_emulator173\" : \"node_109\"\n },\n \"default_entry\" : {\n \"action_id\" : 143,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator14_0\",\n \"id\" : 69,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 14,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [145],\n \"actions\" : [\"int_tna_parser_emulator14_0\"],\n \"base_default_next\" : \"node_111\",\n \"next_tables\" : {\n \"int_tna_parser_emulator14_0\" : \"node_111\"\n },\n \"default_entry\" : {\n \"action_id\" : 145,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator148_0\",\n \"id\" : 70,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 148,\n \"column\" : 12,\n \"source_fragment\" : \"hdr_v1model.ingress.ipv4.setInvalid(); ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [144],\n \"actions\" : [\"int_tna_parser_emulator148_0\"],\n \"base_default_next\" : \"node_113\",\n \"next_tables\" : {\n \"int_tna_parser_emulator148_0\" : \"node_113\"\n },\n \"default_entry\" : {\n \"action_id\" : 144,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_parser_emulator_parse_int_ingress_drop_0\",\n \"id\" : 71,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 165,\n \"column\" : 12,\n \"source_fragment\" : \"parse_int_ingress_drop()\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [125],\n \"actions\" : [\"FabricEgress.parser_emulator.parse_int_ingress_drop\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator166_0\",\n \"next_tables\" : {\n \"FabricEgress.parser_emulator.parse_int_ingress_drop\" : \"tbl_int_tna_parser_emulator166_0\"\n },\n \"default_entry\" : {\n \"action_id\" : 125,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator166_0\",\n \"id\" : 72,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 166,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(NO_PRESERVATION)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [146],\n \"actions\" : [\"int_tna_parser_emulator166_0\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator173_0\",\n \"next_tables\" : {\n \"int_tna_parser_emulator166_0\" : \"tbl_int_tna_parser_emulator173_0\"\n },\n \"default_entry\" : {\n \"action_id\" : 146,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_parser_emulator_parse_int_report_mirror_0\",\n \"id\" : 73,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 168,\n \"column\" : 12,\n \"source_fragment\" : \"parse_int_report_mirror()\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [127],\n \"actions\" : [\"FabricEgress.parser_emulator.parse_int_report_mirror\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator169_0\",\n \"next_tables\" : {\n \"FabricEgress.parser_emulator.parse_int_report_mirror\" : \"tbl_int_tna_parser_emulator169_0\"\n },\n \"default_entry\" : {\n \"action_id\" : 127,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator169_0\",\n \"id\" : 74,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 169,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(PRESERVE_INT_MD)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [147],\n \"actions\" : [\"int_tna_parser_emulator169_0\"],\n \"base_default_next\" : \"tbl_int_tna_parser_emulator173_0\",\n \"next_tables\" : {\n \"int_tna_parser_emulator169_0\" : \"tbl_int_tna_parser_emulator173_0\"\n },\n \"default_entry\" : {\n \"action_id\" : 147,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int_tna_parser_emulator173_0\",\n \"id\" : 75,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 173,\n \"column\" : 27,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [148],\n \"actions\" : [\"int_tna_parser_emulator173_0\"],\n \"base_default_next\" : \"FabricEgress.pkt_io_egress.switch_info\",\n \"next_tables\" : {\n \"int_tna_parser_emulator173_0\" : \"FabricEgress.pkt_io_egress.switch_info\"\n },\n \"default_entry\" : {\n \"action_id\" : 148,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.pkt_io_egress.switch_info\",\n \"id\" : 76,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 39,\n \"column\" : 10,\n \"source_fragment\" : \"switch_info\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [113, 105],\n \"actions\" : [\"FabricEgress.pkt_io_egress.set_switch_info\", \"nop\"],\n \"base_default_next\" : \"node_120\",\n \"next_tables\" : {\n \"FabricEgress.pkt_io_egress.set_switch_info\" : \"node_120\",\n \"nop\" : \"node_120\"\n },\n \"default_entry\" : {\n \"action_id\" : 105,\n \"action_const\" : false,\n \"action_data\" : [],\n \"action_entry_const\" : false\n }\n },\n {\n \"name\" : \"tbl_packetio51\",\n \"id\" : 77,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 51,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.packet_in.setValid(); ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [149],\n \"actions\" : [\"packetio51\"],\n \"base_default_next\" : \"node_122\",\n \"next_tables\" : {\n \"packetio51\" : \"node_122\"\n },\n \"default_entry\" : {\n \"action_id\" : 149,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_packetio60\",\n \"id\" : 78,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 60,\n \"column\" : 37,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [150],\n \"actions\" : [\"packetio60\"],\n \"base_default_next\" : \"node_124\",\n \"next_tables\" : {\n \"packetio60\" : \"node_124\"\n },\n \"default_entry\" : {\n \"action_id\" : 150,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.stats.flows\",\n \"id\" : 79,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4\",\n \"line\" : 53,\n \"column\" : 10,\n \"source_fragment\" : \"flows\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"stats_flow_id\",\n \"target\" : [\"_egress_bridged36\", \"_base_stats_flow_id11\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"eg_port\",\n \"target\" : [\"standard_metadata\", \"egress_port\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [112],\n \"actions\" : [\"FabricEgress.stats.count\"],\n \"base_default_next\" : \"node_126\",\n \"next_tables\" : {\n \"FabricEgress.stats.count\" : \"node_126\"\n },\n \"default_entry\" : {\n \"action_id\" : 112,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_next283\",\n \"id\" : 80,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 283,\n \"column\" : 50,\n \"source_fragment\" : \"= INT_REPORT_TYPE_NO_REPORT; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [151],\n \"actions\" : [\"next283\"],\n \"base_default_next\" : \"node_128\",\n \"next_tables\" : {\n \"next283\" : \"node_128\"\n },\n \"default_entry\" : {\n \"action_id\" : 151,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_egress_next_pop_mpls_if_present\",\n \"id\" : 81,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 289,\n \"column\" : 36,\n \"source_fragment\" : \"pop_mpls_if_present()\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [114],\n \"actions\" : [\"FabricEgress.egress_next.pop_mpls_if_present\"],\n \"base_default_next\" : \"node_132\",\n \"next_tables\" : {\n \"FabricEgress.egress_next.pop_mpls_if_present\" : \"node_132\"\n },\n \"default_entry\" : {\n \"action_id\" : 114,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_egress_next_set_mpls\",\n \"id\" : 82,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 291,\n \"column\" : 12,\n \"source_fragment\" : \"set_mpls()\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [115],\n \"actions\" : [\"FabricEgress.egress_next.set_mpls\"],\n \"base_default_next\" : \"node_132\",\n \"next_tables\" : {\n \"FabricEgress.egress_next.set_mpls\" : \"node_132\"\n },\n \"default_entry\" : {\n \"action_id\" : 115,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.egress_next.egress_vlan\",\n \"id\" : 83,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 264,\n \"column\" : 10,\n \"source_fragment\" : \"egress_vlan\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"vlan_id\",\n \"target\" : [\"_egress_bridged36\", \"_base_vlan_id6\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"eg_port\",\n \"target\" : [\"standard_metadata\", \"egress_port\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [116, 117, 118],\n \"actions\" : [\"FabricEgress.egress_next.push_vlan\", \"FabricEgress.egress_next.pop_vlan\", \"FabricEgress.egress_next.drop\"],\n \"base_default_next\" : \"node_134\",\n \"next_tables\" : {\n \"FabricEgress.egress_next.push_vlan\" : \"node_134\",\n \"FabricEgress.egress_next.pop_vlan\" : \"node_134\",\n \"FabricEgress.egress_next.drop\" : \"node_134\"\n },\n \"default_entry\" : {\n \"action_id\" : 118,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_next323\",\n \"id\" : 84,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 323,\n \"column\" : 25,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [153],\n \"actions\" : [\"next323\"],\n \"base_default_next\" : \"node_136\",\n \"next_tables\" : {\n \"next323\" : \"node_136\"\n },\n \"default_entry\" : {\n \"action_id\" : 153,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_next325\",\n \"id\" : 85,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 325,\n \"column\" : 25,\n \"source_fragment\" : \"= 1; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [152],\n \"actions\" : [\"next325\"],\n \"base_default_next\" : \"node_148\",\n \"next_tables\" : {\n \"next325\" : \"node_148\"\n },\n \"default_entry\" : {\n \"action_id\" : 152,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_next333\",\n \"id\" : 86,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 333,\n \"column\" : 33,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [154],\n \"actions\" : [\"next333\"],\n \"base_default_next\" : \"node_141\",\n \"next_tables\" : {\n \"next333\" : \"node_141\"\n },\n \"default_entry\" : {\n \"action_id\" : 154,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_next336\",\n \"id\" : 87,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 336,\n \"column\" : 29,\n \"source_fragment\" : \"= 1; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [155],\n \"actions\" : [\"next336\"],\n \"base_default_next\" : \"node_148\",\n \"next_tables\" : {\n \"next336\" : \"node_148\"\n },\n \"default_entry\" : {\n \"action_id\" : 155,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_next343\",\n \"id\" : 88,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 343,\n \"column\" : 39,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [156],\n \"actions\" : [\"next343\"],\n \"base_default_next\" : \"node_146\",\n \"next_tables\" : {\n \"next343\" : \"node_146\"\n },\n \"default_entry\" : {\n \"action_id\" : 156,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_next346\",\n \"id\" : 89,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 346,\n \"column\" : 29,\n \"source_fragment\" : \"= 1; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [157],\n \"actions\" : [\"next346\"],\n \"base_default_next\" : \"node_148\",\n \"next_tables\" : {\n \"next346\" : \"node_148\"\n },\n \"default_entry\" : {\n \"action_id\" : 157,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf610\",\n \"id\" : 90,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 610,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.inner_udp.setValid(); ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [158],\n \"actions\" : [\"upf610\"],\n \"base_default_next\" : \"node_152\",\n \"next_tables\" : {\n \"upf610\" : \"node_152\"\n },\n \"default_entry\" : {\n \"action_id\" : 158,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf615\",\n \"id\" : 91,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 615,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.inner_tcp.setValid(); ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [159],\n \"actions\" : [\"upf615\"],\n \"base_default_next\" : \"node_154\",\n \"next_tables\" : {\n \"upf615\" : \"node_154\"\n },\n \"default_entry\" : {\n \"action_id\" : 159,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf620\",\n \"id\" : 92,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 620,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.inner_icmp.setValid(); ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [160],\n \"actions\" : [\"upf620\"],\n \"base_default_next\" : \"FabricEgress.upf.gtpu_encap\",\n \"next_tables\" : {\n \"upf620\" : \"FabricEgress.upf.gtpu_encap\"\n },\n \"default_entry\" : {\n \"action_id\" : 160,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.upf.gtpu_encap\",\n \"id\" : 93,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 597,\n \"column\" : 10,\n \"source_fragment\" : \"gtpu_encap\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [122, 123],\n \"actions\" : [\"FabricEgress.upf.gtpu_only\", \"FabricEgress.upf.gtpu_with_psc\"],\n \"base_default_next\" : \"FabricEgress.upf.eg_tunnel_peers\",\n \"next_tables\" : {\n \"FabricEgress.upf.gtpu_only\" : \"FabricEgress.upf.eg_tunnel_peers\",\n \"FabricEgress.upf.gtpu_with_psc\" : \"FabricEgress.upf.eg_tunnel_peers\"\n },\n \"default_entry\" : {\n \"action_id\" : 122,\n \"action_const\" : false,\n \"action_data\" : [],\n \"action_entry_const\" : false\n }\n },\n {\n \"name\" : \"FabricEgress.upf.eg_tunnel_peers\",\n \"id\" : 94,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 491,\n \"column\" : 10,\n \"source_fragment\" : \"eg_tunnel_peers\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"tun_peer_id\",\n \"target\" : [\"_egress_bridged36\", \"_upf_tun_peer_id13\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 256,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [121, 107],\n \"actions\" : [\"FabricEgress.upf.load_tunnel_params\", \"nop\"],\n \"base_default_next\" : \"node_158\",\n \"next_tables\" : {\n \"FabricEgress.upf.load_tunnel_params\" : \"node_158\",\n \"nop\" : \"node_158\"\n },\n \"default_entry\" : {\n \"action_id\" : 107,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_upf628\",\n \"id\" : 95,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 628,\n \"column\" : 16,\n \"source_fragment\" : \"terminations_counter.count((bit<32>)fabric_md.bridged.upf.upf_ctr_id)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [161],\n \"actions\" : [\"upf628\"],\n \"base_default_next\" : \"tbl_int128\",\n \"next_tables\" : {\n \"upf628\" : \"tbl_int128\"\n },\n \"default_entry\" : {\n \"action_id\" : 161,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_int128\",\n \"id\" : 96,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 128,\n \"column\" : 4,\n \"source_fragment\" : \"egress_headers_t hdr = hdr_v1model.egress; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [162],\n \"actions\" : [\"int128\"],\n \"base_default_next\" : \"FabricEgress.int_egress.queue_latency_thresholds\",\n \"next_tables\" : {\n \"int128\" : \"FabricEgress.int_egress.queue_latency_thresholds\"\n },\n \"default_entry\" : {\n \"action_id\" : 162,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.int_egress.queue_latency_thresholds\",\n \"id\" : 97,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 159,\n \"column\" : 10,\n \"source_fragment\" : \"queue_latency_thresholds\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"egress_qid\",\n \"target\" : [\"scalars\", \"int_egress_egress_qid\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"range\",\n \"name\" : \"hop_latency_upper\",\n \"target\" : [\"scalars\", \"key_0\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"range\",\n \"name\" : \"hop_latency_lower\",\n \"target\" : [\"scalars\", \"key_1\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"range\",\n \"type\" : \"simple\",\n \"max_size\" : 128,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [128, 129, 108],\n \"actions\" : [\"FabricEgress.int_egress.check_quota\", \"FabricEgress.int_egress.reset_quota\", \"nop\"],\n \"base_default_next\" : \"FabricEgress.int_egress.config\",\n \"next_tables\" : {\n \"FabricEgress.int_egress.check_quota\" : \"FabricEgress.int_egress.config\",\n \"FabricEgress.int_egress.reset_quota\" : \"FabricEgress.int_egress.config\",\n \"nop\" : \"FabricEgress.int_egress.config\"\n },\n \"default_entry\" : {\n \"action_id\" : 108,\n \"action_const\" : false,\n \"action_data\" : [],\n \"action_entry_const\" : false\n }\n },\n {\n \"name\" : \"FabricEgress.int_egress.config\",\n \"id\" : 98,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 183,\n \"column\" : 10,\n \"source_fragment\" : \"config\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [130],\n \"actions\" : [\"FabricEgress.int_egress.set_config\"],\n \"base_default_next\" : \"tbl_int373\",\n \"next_tables\" : {\n \"FabricEgress.int_egress.set_config\" : \"tbl_int373\"\n },\n \"default_entry\" : {\n \"action_id\" : 130,\n \"action_const\" : false,\n \"action_data\" : [\"0xffffff00\", \"0xffffc0000000\"],\n \"action_entry_const\" : false\n }\n },\n {\n \"name\" : \"tbl_int373\",\n \"id\" : 99,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 373,\n \"column\" : 38,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [164],\n \"actions\" : [\"int373\"],\n \"base_default_next\" : \"node_164\",\n \"next_tables\" : {\n \"int373\" : \"node_164\"\n },\n \"default_entry\" : {\n \"action_id\" : 164,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.int_egress.report\",\n \"id\" : 100,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 260,\n \"column\" : 10,\n \"source_fragment\" : \"report\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"bmd_type\",\n \"target\" : [\"int_egress_fabric_md_int_report_md\", \"bmd_type\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"mirror_type\",\n \"target\" : [\"int_egress_fabric_md_int_report_md\", \"mirror_type\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"int_report_type\",\n \"target\" : [\"int_egress_fabric_md_int_report_md\", \"report_type\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 6,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [131, 132, 133, 134, 109],\n \"actions\" : [\"FabricEgress.int_egress.do_local_report_encap\", \"FabricEgress.int_egress.do_local_report_encap_mpls\", \"FabricEgress.int_egress.do_drop_report_encap\", \"FabricEgress.int_egress.do_drop_report_encap_mpls\", \"nop\"],\n \"base_default_next\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\",\n \"next_tables\" : {\n \"FabricEgress.int_egress.do_local_report_encap\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\",\n \"FabricEgress.int_egress.do_local_report_encap_mpls\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\",\n \"FabricEgress.int_egress.do_drop_report_encap\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\",\n \"FabricEgress.int_egress.do_drop_report_encap_mpls\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\",\n \"nop\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\"\n },\n \"default_entry\" : {\n \"action_id\" : 109,\n \"action_const\" : false,\n \"action_data\" : [],\n \"action_entry_const\" : false\n }\n },\n {\n \"name\" : \"FabricEgress.int_egress.int_metadata\",\n \"id\" : 101,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 315,\n \"column\" : 10,\n \"source_fragment\" : \"int_metadata\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"int_report_type\",\n \"target\" : [\"_egress_bridged36\", \"_int_bmd_report_type21\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"drop_ctl\",\n \"target\" : [\"scalars\", \"userMetadata._drop_ctl2\"],\n \"mask\" : null\n },\n {\n \"match_type\" : \"exact\",\n \"name\" : \"queue_report\",\n \"target\" : [\"scalars\", \"userMetadata._egress_int_md_queue_report43\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 2,\n \"with_counters\" : true,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [135, 110],\n \"actions\" : [\"FabricEgress.int_egress.init_int_metadata\", \"nop\"],\n \"base_default_next\" : null,\n \"next_tables\" : {\n \"__HIT__\" : \"tbl_int383\",\n \"__MISS__\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\"\n },\n \"default_entry\" : {\n \"action_id\" : 110,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n },\n \"entries\" : [\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 327,\n \"column\" : 12,\n \"source_fragment\" : \"(INT_REPORT_TYPE_FLOW, 0, false): init_int_metadata(INT_REPORT_TYPE_FLOW)\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 135,\n \"action_data\" : [\"0x1\"]\n },\n \"priority\" : 1\n },\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 329,\n \"column\" : 12,\n \"source_fragment\" : \"(INT_REPORT_TYPE_FLOW, 1, false): init_int_metadata(INT_REPORT_TYPE_DROP)\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n },\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x00\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 135,\n \"action_data\" : [\"0x4\"]\n },\n \"priority\" : 2\n }\n ]\n },\n {\n \"name\" : \"tbl_int383\",\n \"id\" : 102,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 383,\n \"column\" : 16,\n \"source_fragment\" : \"clone_preserving_field_list(CloneType.E2E, ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [163],\n \"actions\" : [\"int383\"],\n \"base_default_next\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\",\n \"next_tables\" : {\n \"int383\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\"\n },\n \"default_entry\" : {\n \"action_id\" : 163,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.int_egress.adjust_int_report_hdr_length\",\n \"id\" : 103,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 347,\n \"column\" : 10,\n \"source_fragment\" : \"adjust_int_report_hdr_length\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"is_int_wip\",\n \"target\" : [\"int_egress_fabric_md_bridged\", \"_int_bmd_wip_type26\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 2,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [111, 136],\n \"actions\" : [\"nop\", \"FabricEgress.int_egress.adjust_ip_udp_len\"],\n \"base_default_next\" : \"tbl_slicing189\",\n \"next_tables\" : {\n \"nop\" : \"tbl_slicing189\",\n \"FabricEgress.int_egress.adjust_ip_udp_len\" : \"tbl_slicing189\"\n },\n \"default_entry\" : {\n \"action_id\" : 111,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n },\n \"entries\" : [\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 358,\n \"column\" : 12,\n \"source_fragment\" : \"INT_IS_WIP: adjust_ip_udp_len(INT_WIP_ADJUST_IP_BYTES, INT_WIP_ADJUST_UDP_BYTES)\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x01\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 136,\n \"action_data\" : [\"0xfff2\", \"0xffde\"]\n },\n \"priority\" : 1\n },\n {\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 359,\n \"column\" : 12,\n \"source_fragment\" : \"INT_IS_WIP_WITH_MPLS: adjust_ip_udp_len(INT_WIP_ADJUST_IP_MPLS_BYTES, INT_WIP_ADJUST_UDP_MPLS_BYTES)\"\n },\n \"match_key\" : [\n {\n \"match_type\" : \"exact\",\n \"key\" : \"0x02\"\n }\n ],\n \"action_entry\" : {\n \"action_id\" : 136,\n \"action_data\" : [\"0xffee\", \"0xffda\"]\n },\n \"priority\" : 2\n }\n ]\n },\n {\n \"name\" : \"tbl_slicing189\",\n \"id\" : 104,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 189,\n \"column\" : 4,\n \"source_fragment\" : \"bit<6> tmp_dscp = fabric_md.bridged.base.slice_tc; ...\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [166],\n \"actions\" : [\"slicing189\"],\n \"base_default_next\" : \"FabricEgress.dscp_rewriter.rewriter\",\n \"next_tables\" : {\n \"slicing189\" : \"FabricEgress.dscp_rewriter.rewriter\"\n },\n \"default_entry\" : {\n \"action_id\" : 166,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"FabricEgress.dscp_rewriter.rewriter\",\n \"id\" : 105,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 201,\n \"column\" : 10,\n \"source_fragment\" : \"rewriter\"\n },\n \"key\" : [\n {\n \"match_type\" : \"exact\",\n \"name\" : \"eg_port\",\n \"target\" : [\"standard_metadata\", \"egress_port\"],\n \"mask\" : null\n }\n ],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 512,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [119, 120, 106],\n \"actions\" : [\"FabricEgress.dscp_rewriter.rewrite\", \"FabricEgress.dscp_rewriter.clear\", \"nop\"],\n \"base_default_next\" : null,\n \"next_tables\" : {\n \"__HIT__\" : \"node_171\",\n \"__MISS__\" : \"node_173\"\n },\n \"default_entry\" : {\n \"action_id\" : 106,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_slicing217\",\n \"id\" : 106,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 217,\n \"column\" : 30,\n \"source_fragment\" : \"=\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [165],\n \"actions\" : [\"slicing217\"],\n \"base_default_next\" : \"node_173\",\n \"next_tables\" : {\n \"slicing217\" : \"node_173\"\n },\n \"default_entry\" : {\n \"action_id\" : 165,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_fabric_v1model170\",\n \"id\" : 107,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 170,\n \"column\" : 12,\n \"source_fragment\" : \"recirculate_preserving_field_list(NO_PRESERVATION)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [167],\n \"actions\" : [\"fabric_v1model170\"],\n \"base_default_next\" : \"node_175\",\n \"next_tables\" : {\n \"fabric_v1model170\" : \"node_175\"\n },\n \"default_entry\" : {\n \"action_id\" : 167,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n },\n {\n \"name\" : \"tbl_fabric_v1model174\",\n \"id\" : 108,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 174,\n \"column\" : 12,\n \"source_fragment\" : \"mark_to_drop(standard_md)\"\n },\n \"key\" : [],\n \"match_type\" : \"exact\",\n \"type\" : \"simple\",\n \"max_size\" : 1024,\n \"with_counters\" : false,\n \"support_timeout\" : false,\n \"direct_meters\" : null,\n \"action_ids\" : [168],\n \"actions\" : [\"fabric_v1model174\"],\n \"base_default_next\" : null,\n \"next_tables\" : {\n \"fabric_v1model174\" : null\n },\n \"default_entry\" : {\n \"action_id\" : 168,\n \"action_const\" : true,\n \"action_data\" : [],\n \"action_entry_const\" : true\n }\n }\n ],\n \"action_profiles\" : [],\n \"conditionals\" : [\n {\n \"name\" : \"node_97\",\n \"id\" : 31,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 135,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._skip_egress0\"]\n }\n }\n },\n \"true_next\" : \"tbl_fabric_v1model136\",\n \"false_next\" : \"node_99\"\n },\n {\n \"name\" : \"node_99\",\n \"id\" : 32,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 140,\n \"column\" : 13,\n \"source_fragment\" : \"standard_md.instance_type == 2\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"instance_type\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00000002\"\n }\n }\n },\n \"true_next\" : \"tbl_int_tna_parser_emulator14\",\n \"false_next\" : \"node_109\"\n },\n {\n \"name\" : \"node_101\",\n \"id\" : 33,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 145,\n \"column\" : 11,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"or\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_vxlan15\", \"$valid$\"]\n }\n }\n }\n }\n },\n \"true_next\" : \"tbl_int_tna_parser_emulator148\",\n \"false_next\" : \"node_103\"\n },\n {\n \"name\" : \"node_103\",\n \"id\" : 34,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 164,\n \"column\" : 12,\n \"source_fragment\" : \"(bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._recirc_preserved_report_type47\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n }\n },\n \"true_next\" : \"tbl_parser_emulator_parse_int_ingress_drop\",\n \"false_next\" : \"tbl_parser_emulator_parse_int_report_mirror\"\n },\n {\n \"name\" : \"node_109\",\n \"id\" : 35,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 150,\n \"column\" : 11,\n \"source_fragment\" : \"(bit<8>)fabric_md.egress.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_int_bmd_report_type21\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n }\n },\n \"true_next\" : \"tbl_int_tna_parser_emulator14_0\",\n \"false_next\" : \"FabricEgress.pkt_io_egress.switch_info\"\n },\n {\n \"name\" : \"node_111\",\n \"id\" : 36,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 145,\n \"column\" : 11,\n \"source_fragment\" : \"hdr_v1model.ingress.gtpu.isValid() || hdr_v1model.ingress.vxlan.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"or\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_gtpu12\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_vxlan15\", \"$valid$\"]\n }\n }\n }\n }\n },\n \"true_next\" : \"tbl_int_tna_parser_emulator148_0\",\n \"false_next\" : \"node_113\"\n },\n {\n \"name\" : \"node_113\",\n \"id\" : 37,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int_tna_parser_emulator.p4\",\n \"line\" : 164,\n \"column\" : 12,\n \"source_fragment\" : \"(bit<8>)fabric_md.bridged.int_bmd.report_type == BridgedMdType_t.INT_INGRESS_DROP\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"&\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_int_bmd_report_type21\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xff\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n }\n },\n \"true_next\" : \"tbl_parser_emulator_parse_int_ingress_drop_0\",\n \"false_next\" : \"tbl_parser_emulator_parse_int_report_mirror_0\"\n },\n {\n \"name\" : \"node_120\",\n \"id\" : 38,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 50,\n \"column\" : 12,\n \"source_fragment\" : \"standard_md.egress_port == fabric_md.cpu_port\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_port\"]\n },\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_cpu_port37\"]\n }\n }\n },\n \"true_next\" : \"tbl_packetio51\",\n \"false_next\" : \"node_122\"\n },\n {\n \"name\" : \"node_122\",\n \"id\" : 39,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/packetio.p4\",\n \"line\" : 58,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.fake_ethernet.isValid() && ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_fake_ethernet2\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_fake_ethernet2\", \"ether_type\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0xbf03\"\n }\n }\n }\n }\n },\n \"true_next\" : \"tbl_packetio60\",\n \"false_next\" : \"node_124\"\n },\n {\n \"name\" : \"node_124\",\n \"id\" : 40,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/stats.p4\",\n \"line\" : 67,\n \"column\" : 12,\n \"source_fragment\" : \"bmd_type == BridgedMdType_t.INGRESS_TO_EGRESS\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_bmd_type0\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n },\n \"true_next\" : \"FabricEgress.stats.flows\",\n \"false_next\" : \"node_126\"\n },\n {\n \"name\" : \"node_126\",\n \"id\" : 41,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 280,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.bridged.base.is_multicast ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_is_multicast4\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_ig_port3\"]\n },\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"standard_metadata\", \"egress_port\"]\n }\n }\n }\n }\n },\n \"true_next\" : \"tbl_next283\",\n \"false_next\" : \"node_128\"\n },\n {\n \"name\" : \"node_128\",\n \"id\" : 42,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 288,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.bridged.base.mpls_label == 0\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_mpls_label2\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x000000\"\n }\n }\n },\n \"true_next\" : \"node_129\",\n \"false_next\" : \"tbl_egress_next_set_mpls\"\n },\n {\n \"name\" : \"node_129\",\n \"id\" : 43,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 289,\n \"column\" : 16,\n \"source_fragment\" : \"hdr.mpls.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_egress_next_pop_mpls_if_present\",\n \"false_next\" : \"node_132\"\n },\n {\n \"name\" : \"node_132\",\n \"id\" : 44,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 159,\n \"column\" : 39,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._egress_is_int_recirc45\"]\n }\n }\n },\n \"false_next\" : \"FabricEgress.egress_next.egress_vlan\",\n \"true_next\" : \"node_134\"\n },\n {\n \"name\" : \"node_134\",\n \"id\" : 45,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 322,\n \"column\" : 12,\n \"source_fragment\" : \"hdr.mpls.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_next323\",\n \"false_next\" : \"node_138\"\n },\n {\n \"name\" : \"node_136\",\n \"id\" : 46,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 324,\n \"column\" : 16,\n \"source_fragment\" : \"hdr.mpls.ttl == 0\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_mpls6\", \"ttl\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n }\n },\n \"true_next\" : \"tbl_next325\",\n \"false_next\" : \"node_148\"\n },\n {\n \"name\" : \"node_138\",\n \"id\" : 47,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 331,\n \"column\" : 16,\n \"source_fragment\" : \"hdr.ipv4.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"!=\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n }\n }\n }\n },\n \"true_next\" : \"node_139\",\n \"false_next\" : \"node_143\"\n },\n {\n \"name\" : \"node_139\",\n \"id\" : 48,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 319,\n \"column\" : 28,\n \"source_fragment\" : \"(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP) || ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"or\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_bmd_type0\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_bmd_type0\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n }\n }\n }\n },\n \"false_next\" : \"tbl_next333\",\n \"true_next\" : \"node_141\"\n },\n {\n \"name\" : \"node_141\",\n \"id\" : 49,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 335,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.ipv4.ttl == 0\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"ttl\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n }\n },\n \"true_next\" : \"tbl_next336\",\n \"false_next\" : \"node_148\"\n },\n {\n \"name\" : \"node_143\",\n \"id\" : 50,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 341,\n \"column\" : 23,\n \"source_fragment\" : \"hdr.ipv6.isValid() && fabric_md.bridged.base.fwd_type != FWD_BRIDGING\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"and\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv68\", \"$valid$\"]\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"!=\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_base_fwd_type5\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n }\n }\n }\n },\n \"true_next\" : \"node_144\",\n \"false_next\" : \"node_148\"\n },\n {\n \"name\" : \"node_144\",\n \"id\" : 51,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 319,\n \"column\" : 28,\n \"source_fragment\" : \"(fabric_md.bridged.bmd_type == BridgedMdType_t.INT_INGRESS_DROP) || ...\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"or\",\n \"left\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_bmd_type0\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x04\"\n }\n }\n },\n \"right\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_bmd_type0\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x02\"\n }\n }\n }\n }\n },\n \"false_next\" : \"tbl_next343\",\n \"true_next\" : \"node_146\"\n },\n {\n \"name\" : \"node_146\",\n \"id\" : 52,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/next.p4\",\n \"line\" : 345,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.ipv6.hop_limit == 0\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv68\", \"hop_limit\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x00\"\n }\n }\n },\n \"true_next\" : \"tbl_next346\",\n \"false_next\" : \"node_148\"\n },\n {\n \"name\" : \"node_148\",\n \"id\" : 53,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 607,\n \"column\" : 13,\n \"source_fragment\" : \"fabric_md.bridged\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_skip_upf17\"]\n }\n }\n },\n \"false_next\" : \"node_149\",\n \"true_next\" : \"tbl_int128\"\n },\n {\n \"name\" : \"node_149\",\n \"id\" : 54,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 608,\n \"column\" : 16,\n \"source_fragment\" : \"fabric_md.bridged\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_needs_gtpu_encap16\"]\n }\n }\n },\n \"true_next\" : \"node_150\",\n \"false_next\" : \"node_158\"\n },\n {\n \"name\" : \"node_150\",\n \"id\" : 55,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 609,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.udp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_udp10\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_upf610\",\n \"false_next\" : \"node_152\"\n },\n {\n \"name\" : \"node_152\",\n \"id\" : 56,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 614,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.tcp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_tcp9\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_upf615\",\n \"false_next\" : \"node_154\"\n },\n {\n \"name\" : \"node_154\",\n \"id\" : 57,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 619,\n \"column\" : 20,\n \"source_fragment\" : \"hdr.icmp.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_icmp11\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_upf620\",\n \"false_next\" : \"FabricEgress.upf.gtpu_encap\"\n },\n {\n \"name\" : \"node_158\",\n \"id\" : 58,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/upf.p4\",\n \"line\" : 627,\n \"column\" : 17,\n \"source_fragment\" : \"fabric_md.bridged\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_bridged36\", \"_upf_skip_egress_upf_ctr18\"]\n }\n }\n },\n \"false_next\" : \"tbl_upf628\",\n \"true_next\" : \"tbl_int128\"\n },\n {\n \"name\" : \"node_164\",\n \"id\" : 59,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/int.p4\",\n \"line\" : 375,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.int_report_md.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"int_egress_fabric_md_int_report_md\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"FabricEgress.int_egress.report\",\n \"false_next\" : \"FabricEgress.int_egress.int_metadata\"\n },\n {\n \"name\" : \"node_171\",\n \"id\" : 60,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/slicing.p4\",\n \"line\" : 216,\n \"column\" : 16,\n \"source_fragment\" : \"hdr.ipv4.isValid()\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"$valid$\"]\n }\n }\n },\n \"true_next\" : \"tbl_slicing217\",\n \"false_next\" : \"node_173\"\n },\n {\n \"name\" : \"node_173\",\n \"id\" : 61,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 168,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._do_upf_uplink_recirc1\"]\n }\n }\n },\n \"true_next\" : \"tbl_fabric_v1model170\",\n \"false_next\" : \"node_175\"\n },\n {\n \"name\" : \"node_175\",\n \"id\" : 62,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"line\" : 173,\n \"column\" : 12,\n \"source_fragment\" : \"fabric_md.drop_ctl == 1\"\n },\n \"expression\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"==\",\n \"left\" : {\n \"type\" : \"field\",\n \"value\" : [\"scalars\", \"userMetadata._drop_ctl2\"]\n },\n \"right\" : {\n \"type\" : \"hexstr\",\n \"value\" : \"0x01\"\n }\n }\n },\n \"false_next\" : null,\n \"true_next\" : \"tbl_fabric_v1model174\"\n }\n ]\n }\n ],\n \"checksums\" : [\n {\n \"name\" : \"cksum\",\n \"id\" : 0,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 55,\n \"column\" : 8,\n \"source_fragment\" : \"update_checksum(hdr.ingress.ipv4.isValid(), ...\"\n },\n \"target\" : [\"_ingress_ipv47\", \"hdr_checksum\"],\n \"type\" : \"generic\",\n \"calculation\" : \"calc_3\",\n \"verify\" : false,\n \"update\" : true,\n \"if_cond\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"$valid$\"]\n }\n }\n }\n },\n {\n \"name\" : \"cksum_0\",\n \"id\" : 1,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 73,\n \"column\" : 8,\n \"source_fragment\" : \"update_checksum(hdr.ingress.inner_ipv4.isValid(), ...\"\n },\n \"target\" : [\"_ingress_inner_ipv418\", \"hdr_checksum\"],\n \"type\" : \"generic\",\n \"calculation\" : \"calc_4\",\n \"verify\" : false,\n \"update\" : true,\n \"if_cond\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"$valid$\"]\n }\n }\n }\n },\n {\n \"name\" : \"cksum_1\",\n \"id\" : 2,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 92,\n \"column\" : 8,\n \"source_fragment\" : \"update_checksum(hdr.egress.report_ipv4.isValid(), ...\"\n },\n \"target\" : [\"_egress_report_ipv427\", \"hdr_checksum\"],\n \"type\" : \"generic\",\n \"calculation\" : \"calc_5\",\n \"verify\" : false,\n \"update\" : true,\n \"if_cond\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_egress_report_ipv427\", \"$valid$\"]\n }\n }\n }\n },\n {\n \"name\" : \"cksum_2\",\n \"id\" : 3,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 13,\n \"column\" : 8,\n \"source_fragment\" : \"verify_checksum(hdr.ingress.ipv4.isValid(), ...\"\n },\n \"target\" : [\"_ingress_ipv47\", \"hdr_checksum\"],\n \"type\" : \"generic\",\n \"calculation\" : \"calc_6\",\n \"verify\" : true,\n \"update\" : false,\n \"if_cond\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_ipv47\", \"$valid$\"]\n }\n }\n }\n },\n {\n \"name\" : \"cksum_3\",\n \"id\" : 4,\n \"source_info\" : {\n \"filename\" : \"/home/ubuntu/fabric-tna/p4src/v1model/../v1model/include/control/checksum.p4\",\n \"line\" : 31,\n \"column\" : 8,\n \"source_fragment\" : \"verify_checksum(hdr.ingress.inner_ipv4.isValid(), ...\"\n },\n \"target\" : [\"_ingress_inner_ipv418\", \"hdr_checksum\"],\n \"type\" : \"generic\",\n \"calculation\" : \"calc_7\",\n \"verify\" : true,\n \"update\" : false,\n \"if_cond\" : {\n \"type\" : \"expression\",\n \"value\" : {\n \"op\" : \"d2b\",\n \"left\" : null,\n \"right\" : {\n \"type\" : \"field\",\n \"value\" : [\"_ingress_inner_ipv418\", \"$valid$\"]\n }\n }\n }\n }\n ],\n \"force_arith\" : [],\n \"extern_instances\" : [],\n \"field_aliases\" : [\n [\n \"queueing_metadata.enq_timestamp\",\n [\"standard_metadata\", \"enq_timestamp\"]\n ],\n [\n \"queueing_metadata.enq_qdepth\",\n [\"standard_metadata\", \"enq_qdepth\"]\n ],\n [\n \"queueing_metadata.deq_timedelta\",\n [\"standard_metadata\", \"deq_timedelta\"]\n ],\n [\n \"queueing_metadata.deq_qdepth\",\n [\"standard_metadata\", \"deq_qdepth\"]\n ],\n [\n \"intrinsic_metadata.ingress_global_timestamp\",\n [\"standard_metadata\", \"ingress_global_timestamp\"]\n ],\n [\n \"intrinsic_metadata.egress_global_timestamp\",\n [\"standard_metadata\", \"egress_global_timestamp\"]\n ],\n [\n \"intrinsic_metadata.mcast_grp\",\n [\"standard_metadata\", \"mcast_grp\"]\n ],\n [\n \"intrinsic_metadata.egress_rid\",\n [\"standard_metadata\", \"egress_rid\"]\n ],\n [\n \"intrinsic_metadata.priority\",\n [\"standard_metadata\", \"priority\"]\n ]\n ],\n \"program\" : \"/home/ubuntu/fabric-tna/p4src/v1model/fabric_v1model.p4\",\n \"__meta__\" : {\n \"version\" : [2, 23],\n \"compiler\" : \"https://github.com/p4lang/p4c\"\n }\n}" + } +} diff --git a/src/tests/p4-sd-fabric-svc-upf/topology/run-stratum.sh b/src/tests/p4-sd-fabric-svc-upf/topology/run-stratum.sh new file mode 100644 index 0000000000000000000000000000000000000000..a537b6e46ae03368be7bf1d9085532167bac71ee --- /dev/null +++ b/src/tests/p4-sd-fabric-svc-upf/topology/run-stratum.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# You must run this script as root +if [ "$EUID" -ne 0 ]; then + echo "Please run as root" + exit 1 +fi + +source "p4-switch-conf-common.sh" + +LOG_FILE_DIR="/var/log/stratum/" + +sudo mkdir -p "${LOG_FILE_DIR}" + +LOG_LEVEL="info" +READ_LOGS_FILE_PATH=${LOG_FILE_DIR}"p4_reads.pb.txt" +WRITE_LOGS_FILE_PATH=${LOG_FILE_DIR}"p4_writes.pb.txt" +CHASSIS_CONFIG="p4-switch-three-port-chassis-config-phy.pb.txt" + +[ -f ${CHASSIS_CONFIG} ] || { echo "$CHASSIS_CONFIG not found!" ; exit 1 ;} + +rm "${READ_LOGS_FILE_PATH}" +rm "${WRITE_LOGS_FILE_PATH}" + +touch "${READ_LOGS_FILE_PATH}" +touch "${WRITE_LOGS_FILE_PATH}" + +stratum_bmv2 \ + -chassis_config_file=${CHASSIS_CONFIG} \ + -read_req_log_file=${READ_LOGS_FILE_PATH} \ + -write_req_log_file=${WRITE_LOGS_FILE_PATH} \ + -external_stratum_urls="0.0.0.0:"${SW_P4RT_GNMI_PORT}",0.0.0.0:"${SW_P4RT_GRPC_PORT} \ + -local_stratum_url="0.0.0.0:"${SW_P4RT_LOCAL_PORT} \ + -bmv2_log_level=${LOG_LEVEL} +# -forwarding_pipeline_configs_file="pipeline_config.pb.txt" # -forwarding_pipeline_configs_file="/etc/stratum/pipeline_cfg.pb.txt" + +exit 0 diff --git a/src/tests/p4-topologies/README.md b/src/tests/p4-topologies/README.md new file mode 100644 index 0000000000000000000000000000000000000000..22060db4e3c5be46d90045b018786f9bbc6ea366 --- /dev/null +++ b/src/tests/p4-topologies/README.md @@ -0,0 +1,45 @@ +# Emulated Network Topologies for Easy Experimentation + +This repository contains emulated network topology implementations either based on Mininet or native switches that reside in Linux namespaces. + +## Switches in Mininet + +To deploy a Mininet-based network topology, first checkout Mininet: + +```bash +git clone ssh://git@gitlab.ubitech.eu:41621/nsit/etsi-tfs/mininet.git +``` + +This is an extended version of upstream Mininet that also supports: +- Stratum-based P4 switches +- Stratum-based P4 switches with dedicated Inband Network Telemetry (INT) interface. + +Install Mininet as follows: + +```bash +cd mininet/ +PYTHON=python3 util/install.sh -fnv +``` + +**Disclaimer:** When this Mininet branch becomes part of TFS, a new URL will be shared in this file so as everone can checkout this Mininet version. +For now, this remains a closed-source repo in UBITECH's GitLab. + +### Deploy example Mininet topologies + +All of the topologies in the following table employ Stratum-based bmv2 P4 switches within Mininet. +In the topologies that support INT, Stratum bmv2 switch is extended with an additional network interface that dispatches in-band network telemetry packets towards an external collector (e.g., TFS). + +| Topology | File | Command to Deploy | +| -----------------------: | :------------------------------- | :------------------------------------------------------------------ | +| Single switch | topo-mininet/1switch1path.py | sudo python3 topo-mininet/1switch1path.py | +| Single switch with INT | topo-mininet/1switch1path-int.py | sudo python3 topo-mininet/1switch1path-int.py --host-int-iface=eth0 | +| Three switches with INT | topo-mininet/3switch1path-int.py | sudo python3 topo-mininet/3switch1path-int.py --host-int-iface=eth0 | +| Five switches with INT | topo-mininet/5switch3path-int.py | sudo python3 topo-mininet/5switch3path-int.py --host-int-iface=eth0 | + +### Undeploy example Mininet topologies + +Just press Ctrl-D and Mininet stops. + +## Switches in Linux namespaces + +Follow the instruction in `topo-linux-ns/README.md`. diff --git a/src/tests/p4-fabric-tna/topology/README.md b/src/tests/p4-topologies/topo-linux-ns/README.md similarity index 86% rename from src/tests/p4-fabric-tna/topology/README.md rename to src/tests/p4-topologies/topo-linux-ns/README.md index 30d4d84bcf2771bb9732e9686a680de0a643fa79..59c1eafef4678b06268b2d1b973cb06c65337470 100644 --- a/src/tests/p4-fabric-tna/topology/README.md +++ b/src/tests/p4-topologies/topo-linux-ns/README.md @@ -1,14 +1,14 @@ # P4 Topology -This directory contains scripts for deploying a single software-based Stratum switch on a VM or bare metal machine. +This directory contains scripts for deploying a single software-based Stratum switch on a Linux namespace. ## Prerequisites The machine on which Stratum will be deployed must have at least 3 network interfaces as follows: - a management interface for the switch to communicate with the control plane (i.e., TFS controller and INT collector) -- a west data plane interface towards a certain subnet (we call it edge subnet in this example) -- an est data plane interface towards another subnet (we call it corporate subnet in this example) +- a west data plane interface towards a certain subnet (we call it left subnet in this example) +- an east data plane interface towards another subnet (we call it right subnet in this example) Also, due to Stratum's restrictions, the desired OS of the machine shall be `Ubuntu server 20.04 LTS`. @@ -23,44 +23,42 @@ The two data plane interfaces of the VM need to be enclosed into this namespace, Follow the steps below to create the environment, deploy Stratum, and restore the VM to its previous state (cleanup). Prior to this take a look at the environment configuration file, where one can change the names of the interfaces, according to your network setup. -```shell +```bash nano p4-switch-conf-common.sh -HOST_IFACE_EXT="ens3" # Interface towards TFS (management) -SW_IFACE_DATA_EDGE="ens4" # Interface towards the edge subnet (data plane) -SW_IFACE_DATA_CORP="ens5" # Interface towards the corporate subnet (data plane) - -... +HOST_IFACE_EXT="ens3" # Interface towards the TFS controller (management) +SW_IFACE_DATA_LEFT="ens4" # Interface towards the left subnet (data plane) +SW_IFACE_DATA_RIGHT="ens5" # Interface towards the right subnet (data plane) ``` ### Step 1: Setup environment -Edit the `setup` script to modify the subnets' information according to your network setup: +Edit the `setup` script to modify the subnets information according to your network setup: -```shell +```bash nano p4-switch-setup.sh # Subnets managed by the switch -DOMAIN_EDGE_IP="10.158.72.0/24" # Left-hand side subnet -DOMAIN_CORP_IP="172.16.10.0/24" # Right-hand side subnet +DOMAIN_LEFT_IP="10.158.72.0/24" # Left-hand side subnet +DOMAIN_RIGHT_IP="172.16.10.0/24" # Right-hand side subnet ``` Once your network setup is applied, run the `setup` script as follows: -```shell +```bash sudo bash p4-switch-setup.sh ``` To verify that the switch namespace is in place, issue the following command: -```shell +```bash sudo ip netns exec ns-switch ip a ``` The output should show 4 network interfaces, i.e., a `loopback` interface, 2 data planes interfaces (e.g., `ens4`, `ens5` in this example), and a virtual interface for sending telemetry data out of the switch (i.e., `veth-int-sw` in this example). From this latter interface you can ping towards the other end of the virtual interface pair (i.e., `veth-int-host`): -```shell +```bash sudo ip netns exec ns-switch ping 10.0.0.254 ``` @@ -76,7 +74,7 @@ First you need to configure the chassis configuration file with the correct netw To do so, modify the `name` field changing `ens4`, `ens5`, and `ens3` to your desired interfaces. These interface names must agree with the ones you added in `p4-switch-conf-common.sh`. -```shell +```bash cat p4-switch-three-port-chassis-config-phy.pb.txt # Copyright 2018-present Open Networking Foundation @@ -132,13 +130,13 @@ singleton_ports { To deploy Stratum, do: -```shell +```bash sudo bash run-stratum.sh ``` To run Stratum will verbose logging, open the `run-stratum.sh` and change: -```shell +```bash LOG_LEVEL="debug" ``` @@ -161,6 +159,6 @@ To verify that Stratum has been correctly deployed, you should see the following When your tests with Stratum and TFS are over, you may want to restore your setup. To do so, execute the following script: -```shell +```bash sudo bash p4-switch-tear-down.sh ``` diff --git a/src/tests/p4-fabric-tna/topology/p4-switch-conf-common.sh b/src/tests/p4-topologies/topo-linux-ns/p4-switch-conf-common.sh similarity index 84% rename from src/tests/p4-fabric-tna/topology/p4-switch-conf-common.sh rename to src/tests/p4-topologies/topo-linux-ns/p4-switch-conf-common.sh index 25da8c4547aa94521fda416db99924d2fa5eb17b..047fa140308351c201638945513ddf0819c99ce2 100644 --- a/src/tests/p4-fabric-tna/topology/p4-switch-conf-common.sh +++ b/src/tests/p4-topologies/topo-linux-ns/p4-switch-conf-common.sh @@ -17,9 +17,9 @@ SWITCH_NS="ns-switch" # Physical interfaces -HOST_IFACE_EXT="ens3" # Interface towards TFS (management) -SW_IFACE_DATA_EDGE="ens4" # Interface towards the edge subnet (data plane) -SW_IFACE_DATA_CORP="ens5" # Interface towards the corporate subnet (data plane) +HOST_IFACE_EXT="ens3" # Interface towards TFS (management) +SW_IFACE_DATA_LEFT="ens4" # Interface towards the edge subnet (data plane) +SW_IFACE_DATA_RIGHT="ens5" # Interface towards the corporate subnet (data plane) # Virtual interfaces for INT SW_IFACE_INT="veth-int-sw" diff --git a/src/tests/p4-fabric-tna/topology/p4-switch-setup.sh b/src/tests/p4-topologies/topo-linux-ns/p4-switch-setup.sh similarity index 83% rename from src/tests/p4-fabric-tna/topology/p4-switch-setup.sh rename to src/tests/p4-topologies/topo-linux-ns/p4-switch-setup.sh index 402e54aebe613070f784a3d0eda51d5c6cfc9499..c0f31c9fc3bdbc88c343e91641118cd13f113350 100644 --- a/src/tests/p4-fabric-tna/topology/p4-switch-setup.sh +++ b/src/tests/p4-topologies/topo-linux-ns/p4-switch-setup.sh @@ -33,8 +33,8 @@ SWITCH_INT_IP_NET=${SWITCH_INT_IP}"/24" HOST_INT_IP_NET=${HOST_INT_IP}"/24" # Subnets managed by the switch -DOMAIN_EDGE_IP="10.158.72.22/24" # Edge domain side IP address -DOMAIN_CORP_IP="172.16.10.4/24" # Corporate domain side IP address +DOMAIN_LEFT_IP="10.158.72.22/24" # Left domain's IP address range +DOMAIN_RIGHT_IP="172.16.10.4/24" # Rigth domain's IP address range # INT subnet MTU MTU_LEN=9000 @@ -52,8 +52,8 @@ create_virtual_interfaces() { } assign_virtual_interfaces() { - ip link set ${SW_IFACE_DATA_EDGE} netns ${SWITCH_NS} - ip link set ${SW_IFACE_DATA_CORP} netns ${SWITCH_NS} + ip link set ${SW_IFACE_DATA_LEFT} netns ${SWITCH_NS} + ip link set ${SW_IFACE_DATA_RIGHT} netns ${SWITCH_NS} ip link set ${SW_IFACE_INT} netns ${SWITCH_NS} } @@ -68,22 +68,22 @@ set_mtu() { } set_ip_addresses() { - ip -n ${SWITCH_NS} addr add ${DOMAIN_EDGE_IP} dev ${SW_IFACE_DATA_EDGE} - ip -n ${SWITCH_NS} addr add ${DOMAIN_CORP_IP} dev ${SW_IFACE_DATA_CORP} + ip -n ${SWITCH_NS} addr add ${DOMAIN_LEFT_IP} dev ${SW_IFACE_DATA_LEFT} + ip -n ${SWITCH_NS} addr add ${DOMAIN_RIGHT_IP} dev ${SW_IFACE_DATA_RIGHT} ip -n ${SWITCH_NS} addr add ${SWITCH_INT_IP_NET} dev ${SW_IFACE_INT} ifconfig ${HOST_IFACE_INT} ${HOST_INT_IP_NET} } bring_interfaces_up() { - ip -n ${SWITCH_NS} link set ${SW_IFACE_DATA_EDGE} up - ip -n ${SWITCH_NS} link set ${SW_IFACE_DATA_CORP} up + ip -n ${SWITCH_NS} link set ${SW_IFACE_DATA_LEFT} up + ip -n ${SWITCH_NS} link set ${SW_IFACE_DATA_RIGHT} up ip -n ${SWITCH_NS} link set ${SW_IFACE_INT} up ifconfig ${HOST_IFACE_INT} up } disable_csum_offloading() { - ip netns exec ${SWITCH_NS} ethtool -K ${SW_IFACE_DATA_EDGE} rx off tx off - ip netns exec ${SWITCH_NS} ethtool -K ${SW_IFACE_DATA_CORP} rx off tx off + ip netns exec ${SWITCH_NS} ethtool -K ${SW_IFACE_DATA_LEFT} rx off tx off + ip netns exec ${SWITCH_NS} ethtool -K ${SW_IFACE_DATA_RIGHT} rx off tx off } switch_default_gw() { diff --git a/src/tests/p4-fabric-tna/topology/p4-switch-tear-down.sh b/src/tests/p4-topologies/topo-linux-ns/p4-switch-tear-down.sh similarity index 96% rename from src/tests/p4-fabric-tna/topology/p4-switch-tear-down.sh rename to src/tests/p4-topologies/topo-linux-ns/p4-switch-tear-down.sh index 1d902319b09326aa9eb0c8c03c6b87ccc29dac65..e1714f6140f93a26dc2db61a6da51dfb99b11adf 100644 --- a/src/tests/p4-fabric-tna/topology/p4-switch-tear-down.sh +++ b/src/tests/p4-topologies/topo-linux-ns/p4-switch-tear-down.sh @@ -34,8 +34,8 @@ delete_namespaces() { } bring_interfaces_up() { - ifconfig ${SW_IFACE_DATA_EDGE} up - ifconfig ${SW_IFACE_DATA_CORP} up + ifconfig ${SW_IFACE_DATA_LEFT} up + ifconfig ${SW_IFACE_DATA_RIGHT} up } cleanup_iptables() { diff --git a/src/tests/p4-fabric-tna/topology/p4-switch-three-port-chassis-config-phy.pb.txt b/src/tests/p4-topologies/topo-linux-ns/p4-switch-three-port-chassis-config-phy.pb.txt similarity index 100% rename from src/tests/p4-fabric-tna/topology/p4-switch-three-port-chassis-config-phy.pb.txt rename to src/tests/p4-topologies/topo-linux-ns/p4-switch-three-port-chassis-config-phy.pb.txt diff --git a/src/tests/p4-fabric-tna/topology/run-stratum.sh b/src/tests/p4-topologies/topo-linux-ns/run-stratum.sh similarity index 100% rename from src/tests/p4-fabric-tna/topology/run-stratum.sh rename to src/tests/p4-topologies/topo-linux-ns/run-stratum.sh diff --git a/src/tests/p4-topologies/topo-mininet/1switch1path-int.py b/src/tests/p4-topologies/topo-mininet/1switch1path-int.py new file mode 100755 index 0000000000000000000000000000000000000000..833d828403719e96109bbd80591260c61f97121e --- /dev/null +++ b/src/tests/p4-topologies/topo-mininet/1switch1path-int.py @@ -0,0 +1,78 @@ +### +# Option 1: Execute via mininet's binary +# > sudo mn --custom 1switch1path-int.py --switch stratum-bmv2-int --topo oneswitchtopoint --link tc --controller none +# In this case, set the correct value to the DEF_HOST_INT_IFACE variable, as this is passed to the Mininet topology as an input argument. + +# Option 2: Execute natively +# > sudo python3 1switch1path-int.py --host-int-iface=eth0 +# In this case, you may pass the variable as an argument +### + +import argparse + +from mininet.cli import CLI +from mininet.link import TCLink +from mininet.log import setLogLevel, info +from mininet.net import Mininet +from mininet.node import IPv4Host +from mininet.topo import Topo +from mininet.util import interfaceExists +from mininet.stratum import StratumBmv2SwitchINT + +CLIENT_NAME = "client" +SERVER_NAME = "server" + +SW_NAME = "sw1" +SW_PORT = 50001 + +CPU_PORT = 255 + +HOST_INT_IFACE = "" +DEF_HOST_INT_IFACE = "eth0" + +class OneSwitchTopoINT(Topo): + """1-switch topology with 2x IPv4 hosts and switch NB interface for INT""" + + def __init__(self, *args, **kwargs): + Topo.__init__(self, *args, **kwargs) + + iface = args[0] + assert iface, "INT-based Stratum topology requires a network interface name towards the collector" + assert interfaceExists(iface), "External host interface (towards collector) for INT does not exist" + + # Switches + info("*** Adding Stratum-based BMv2 switches\n") + sw1 = self.addSwitch(SW_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + + # Hosts + info("*** Adding hosts\n") + client = self.addHost(CLIENT_NAME, cls=IPv4Host) + server = self.addHost(SERVER_NAME, cls=IPv4Host) + + # Host links + info("*** Creating links\n") + self.addLink(client, sw1, cls=TCLink) # Switch 1: port 1 + self.addLink(server, sw1, cls=TCLink) # Switch 1: port 2 + +def setup_topology(host_int_iface): + net = Mininet(topo=OneSwitchTopoINT(host_int_iface), link=TCLink, controller=None, autoSetMacs=True, autoStaticArp=True) + + info("*** Starting network\n") + net.start() + + CLI(net) + net.stop() + +if __name__ == "__main__": + setLogLevel('info') + + parser = argparse.ArgumentParser( + description='Mininet topology script for a 1-switch fabric with INT-enabled stratum_bmv2 and 2x IPv4 hosts') + parser.add_argument("--host-int-iface", type=str, default=DEF_HOST_INT_IFACE, help="Host network interface towards INT collector") + args = parser.parse_args() + + host_int_iface = args.host_int_iface + setup_topology(host_int_iface) + +# Required by mn to call this custom topology +topos = { 'oneswitchtopoint': ( lambda: OneSwitchTopoINT(DEF_HOST_INT_IFACE) ) } diff --git a/src/tests/p4-topologies/topo-mininet/1switch1path.py b/src/tests/p4-topologies/topo-mininet/1switch1path.py new file mode 100755 index 0000000000000000000000000000000000000000..24a2704cb9b659cbd69cfde571df041f1d9051db --- /dev/null +++ b/src/tests/p4-topologies/topo-mininet/1switch1path.py @@ -0,0 +1,65 @@ +### +# Execute: sudo mn --custom 1switch1path.py --switch stratum-bmv2 --topo oneswitchtopo --link tc --controller none +# Execute: sudo python3 1switch1path.py +### + +import argparse + +from mininet.cli import CLI +from mininet.link import TCLink +from mininet.log import setLogLevel, info +from mininet.net import Mininet +from mininet.node import IPv4Host +from mininet.topo import Topo +from mininet.stratum import StratumBmv2Switch + +CLIENT_NAME = "client" +SERVER_NAME = "server" + +SW_NAME = "sw1" +SW_PORT = 50001 + +CPU_PORT = 255 + +HOST_INT_IFACE = "" + +class OneSwitchTopo(Topo): + """1-switch topology with 2x IPv4 hosts""" + + def __init__(self, *args, **kwargs): + Topo.__init__(self, *args, **kwargs) + + # Switches + info("*** Adding Stratum-based BMv2 switches\n") + sw1 = self.addSwitch(SW_NAME, cls=StratumBmv2Switch, grpcPort=SW_PORT, cpuport=CPU_PORT) + + # Hosts + info("*** Adding hosts\n") + client = self.addHost(CLIENT_NAME, cls=IPv4Host) + server = self.addHost(SERVER_NAME, cls=IPv4Host) + + # Host links + info("*** Creating links\n") + self.addLink(client, sw1, cls=TCLink) # Switch 1: port 1 + self.addLink(server, sw1, cls=TCLink) # Switch 1: port 2 + +def setup_topology(): + net = Mininet(topo=OneSwitchTopo(), link=TCLink, controller=None, autoSetMacs=True, autoStaticArp=True) + + info("*** Starting network\n") + net.start() + + CLI(net) + net.stop() + +if __name__ == "__main__": + setLogLevel('info') + + parser = argparse.ArgumentParser( + description='Mininet topology script for a 1-switch Stratum BMv2 fabric and 2x IPv4 hosts') + args = parser.parse_args() + + setup_topology() + +# Required by mn to call this custom topology +topos = { 'oneswitchtopo': ( lambda: OneSwitchTopo() ) } diff --git a/src/tests/p4-topologies/topo-mininet/3switch1path-int.py b/src/tests/p4-topologies/topo-mininet/3switch1path-int.py new file mode 100755 index 0000000000000000000000000000000000000000..cc3f55fbed9d19d445ff562ea677d4a591ce0a53 --- /dev/null +++ b/src/tests/p4-topologies/topo-mininet/3switch1path-int.py @@ -0,0 +1,89 @@ +### +# Option 1: Execute via mininet's binary +# > sudo mn --custom 3switch1path-int.py --switch stratum-bmv2-int --topo threeswitchtopoint --link tc --controller none +# In this case, set the correct value to the DEF_HOST_INT_IFACE variable, as this is passed to the Mininet topology as an input argument. + +# Option 2: Execute natively +# > sudo python3 3switch1path-int.py --host-int-iface=eth0 +# In this case, you may pass the variable as an argument +### + +import argparse + +from mininet.cli import CLI +from mininet.link import TCLink +from mininet.log import setLogLevel, info +from mininet.net import Mininet +from mininet.node import IPv4Host +from mininet.topo import Topo +from mininet.util import interfaceExists +from mininet.stratum import StratumBmv2SwitchINT + +CLIENT_NAME = "client" +SERVER_NAME = "server" + +SW1_NAME = "sw1" +SW1_PORT = 50001 + +SW2_NAME = "sw2" +SW2_PORT = 50002 + +SW3_NAME = "sw3" +SW3_PORT = 50003 + +CPU_PORT = 255 + +DEF_HOST_INT_IFACE = "eth0" + +class ThreeSwitchTopoINT(Topo): + """3-switch topology with 2x IPv4 hosts and switch NB interface for INT""" + + def __init__(self, *args, **kwargs): + Topo.__init__(self, *args, **kwargs) + + iface = args[0] + assert iface, "INT-based Stratum topology requires a network interface name towards the collector" + assert interfaceExists(iface), "External host interface (towards collector) for INT does not exist" + + # Switches + info("*** Adding Stratum-based BMv2 switches\n") + sw1 = self.addSwitch(SW1_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW1_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + sw2 = self.addSwitch(SW2_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW2_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + sw3 = self.addSwitch(SW3_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW3_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + + # Hosts + info("*** Adding hosts\n") + client = self.addHost(CLIENT_NAME, cls=IPv4Host) + server = self.addHost(SERVER_NAME, cls=IPv4Host) + + # Switch links + info("*** Creating links\n") + self.addLink(sw1, sw2, cls=TCLink) # Switch1:port 1, Switch2:port 1 + self.addLink(sw2, sw3, cls=TCLink) # Switch2:port 2, Switch3:port 1 + + # Host links + self.addLink(client, sw1, cls=TCLink) # Switch 1: port 2 + self.addLink(server, sw3, cls=TCLink) # Switch 3: port 2 + +def setup_topology(host_int_iface): + net = Mininet(topo=ThreeSwitchTopoINT(host_int_iface), link=TCLink, controller=None, autoSetMacs=True, autoStaticArp=True) + + info("*** Starting network\n") + net.start() + + CLI(net) + net.stop() + +if __name__ == "__main__": + setLogLevel('info') + + parser = argparse.ArgumentParser( + description='Mininet topology script for a 1-switch fabric with INT-enabled stratum_bmv2 and 2x IPv4 hosts') + parser.add_argument("--host-int-iface", type=str, default=DEF_HOST_INT_IFACE, help="Host network interface towards INT collector") + args = parser.parse_args() + + host_int_iface = args.host_int_iface + setup_topology(host_int_iface) + +# Required by mn to call this custom topology +topos = { 'threeswitchtopoint': ( lambda: ThreeSwitchTopoINT(DEF_HOST_INT_IFACE) ) } diff --git a/src/tests/p4-topologies/topo-mininet/5switch3path-int.py b/src/tests/p4-topologies/topo-mininet/5switch3path-int.py new file mode 100755 index 0000000000000000000000000000000000000000..862bc5223c70915c42f76ece8fc24648d3b1a3b6 --- /dev/null +++ b/src/tests/p4-topologies/topo-mininet/5switch3path-int.py @@ -0,0 +1,102 @@ +### +# Option 1: Execute via mininet's binary +# > sudo mn --custom 5switch3path-int.py --switch stratum-bmv2-int --topo fiveswitchtopoint --link tc --controller none +# In this case, set the correct value to the DEF_HOST_INT_IFACE variable, as this is passed to the Mininet topology as an input argument. + +# Option 2: Execute natively +# > sudo python3 5switch3path-int.py --host-int-iface=eth0 +# In this case, you may pass the variable as an argument +### + +import argparse + +from mininet.cli import CLI +from mininet.link import TCLink +from mininet.log import setLogLevel, info +from mininet.net import Mininet +from mininet.node import IPv4Host +from mininet.topo import Topo +from mininet.util import interfaceExists +from mininet.stratum import StratumBmv2SwitchINT + +CLIENT_NAME = "client" +SERVER_NAME = "server" + +SW1_NAME = "sw1" +SW1_PORT = 50001 + +SW2_NAME = "sw2" +SW2_PORT = 50002 + +SW3_NAME = "sw3" +SW3_PORT = 50003 + +SW4_NAME = "sw4" +SW4_PORT = 50004 + +SW5_NAME = "sw5" +SW5_PORT = 50005 + +CPU_PORT = 255 + +DEF_HOST_INT_IFACE = "eth0" + +class FiveSwitchTopoINT(Topo): + """5-switch topology with 2x IPv4 hosts and switch NB interface for INT""" + + def __init__(self, *args, **kwargs): + Topo.__init__(self, *args, **kwargs) + + iface = args[0] + assert iface, "INT-based Stratum topology requires a network interface name towards the collector" + assert interfaceExists(iface), "External host interface (towards collector) for INT does not exist" + + # Switches + info("*** Adding Stratum-based BMv2 switches\n") + sw1 = self.addSwitch(SW1_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW1_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + sw2 = self.addSwitch(SW2_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW2_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + sw3 = self.addSwitch(SW3_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW3_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + sw4 = self.addSwitch(SW4_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW4_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + sw5 = self.addSwitch(SW5_NAME, cls=StratumBmv2SwitchINT, grpcPort=SW5_PORT, cpuport=CPU_PORT, hostINTIfaceName=iface) + + # Hosts + info("*** Adding hosts\n") + client = self.addHost(CLIENT_NAME, cls=IPv4Host) + server = self.addHost(SERVER_NAME, cls=IPv4Host) + + # Switch links + info("*** Creating links\n") + self.addLink(sw1, sw2, cls=TCLink) # Switch1:port 1, Switch2:port 1 + self.addLink(sw1, sw3, cls=TCLink) # Switch1:port 2, Switch3:port 1 + self.addLink(sw1, sw4, cls=TCLink) # Switch1:port 3, Switch4:port 1 + + self.addLink(sw2, sw5, cls=TCLink) # Switch2:port 2, Switch5:port 1 + self.addLink(sw3, sw5, cls=TCLink) # Switch3:port 2, Switch5:port 2 + self.addLink(sw4, sw5, cls=TCLink) # Switch4:port 2, Switch5:port 3 + + # Host links + self.addLink(client, sw1, cls=TCLink) # Switch 1: port 4 + self.addLink(server, sw5, cls=TCLink) # Switch 5: port 4 + +def setup_topology(host_int_iface): + net = Mininet(topo=FiveSwitchTopoINT(host_int_iface), link=TCLink, controller=None, autoSetMacs=True, autoStaticArp=True) + + info("*** Starting network\n") + net.start() + + CLI(net) + net.stop() + +if __name__ == "__main__": + setLogLevel('info') + + parser = argparse.ArgumentParser( + description='Mininet topology script for a 1-switch fabric with INT-enabled stratum_bmv2 and 2x IPv4 hosts') + parser.add_argument("--host-int-iface", type=str, default=DEF_HOST_INT_IFACE, help="Host network interface towards INT collector") + args = parser.parse_args() + + host_int_iface = args.host_int_iface + setup_topology(host_int_iface) + +# Required by mn to call this custom topology +topos = { 'fiveswitchtopoint': ( lambda: FiveSwitchTopoINT(DEF_HOST_INT_IFACE) ) }