From 7b5ce5e19e85c8e84687b7e081668834f350e361 Mon Sep 17 00:00:00 2001 From: Marian Pritsak Date: Mon, 27 Jun 2022 12:51:00 -0700 Subject: [PATCH] Add ENI admin state (#133) Signed-off-by: Marian Pritsak --- dash-pipeline/bmv2/dash_metadata.p4 | 1 + dash-pipeline/bmv2/dash_pipeline.p4 | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/dash-pipeline/bmv2/dash_metadata.p4 b/dash-pipeline/bmv2/dash_metadata.p4 index a25658753..e7dc169a2 100644 --- a/dash-pipeline/bmv2/dash_metadata.p4 +++ b/dash-pipeline/bmv2/dash_metadata.p4 @@ -28,6 +28,7 @@ struct eni_data_t { bit<32> cps; bit<32> pps; bit<32> flows; + bit<1> admin_state; } struct metadata_t { diff --git a/dash-pipeline/bmv2/dash_pipeline.p4 b/dash-pipeline/bmv2/dash_pipeline.p4 index 86c2c683e..dc201d9e4 100644 --- a/dash-pipeline/bmv2/dash_pipeline.p4 +++ b/dash-pipeline/bmv2/dash_pipeline.p4 @@ -85,10 +85,12 @@ control dash_ingress(inout headers_t hdr, action set_eni_attrs(bit<32> cps, bit<32> pps, - bit<32> flows) { - meta.eni_data.cps = cps; - meta.eni_data.pps = pps; - meta.eni_data.flows = flows; + bit<32> flows, + bit<1> admin_state) { + meta.eni_data.cps = cps; + meta.eni_data.pps = pps; + meta.eni_data.flows = flows; + meta.eni_data.admin_state = admin_state; } @name("eni|dash") @@ -208,6 +210,10 @@ control dash_ingress(inout headers_t hdr, hdr.ethernet.dst_addr; eni_ether_address_map.apply(); eni.apply(); + if (meta.eni_data.admin_state == 0) { + deny(); + return; + } if (meta.direction == direction_t.OUTBOUND) { outbound.apply(hdr, meta, standard_metadata);