Ignore entries from constant tables in P4Runtime
Change-Id: I6ba8591a9674287832a18e258c5dd3801c588a32
(cherry picked from commit ba73da5bd09a6b40ab5727ef4a03767d437687e8)
diff --git a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java
index e60f25f..ff49928 100644
--- a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java
+++ b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4InfoParser.java
@@ -215,7 +215,8 @@
tableFieldMapBuilder.build(),
tableActionMapBuilder.build(),
actionMap.get(tableMsg.getConstDefaultActionId()),
- tableMsg.getConstDefaultActionHasMutableParams()));
+ tableMsg.getConstDefaultActionHasMutableParams(),
+ tableMsg.getIsConstTable()));
}
diff --git a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java
index 89c4bed..77f55ec 100644
--- a/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java
+++ b/protocols/p4runtime/model/src/main/java/org/onosproject/p4runtime/model/P4TableModel.java
@@ -50,14 +50,16 @@
private final ImmutableMap<PiActionId, PiActionModel> actions;
private final PiActionModel defaultAction;
private final boolean hasDefaultMutableParams;
+ private final boolean isConstTable;
P4TableModel(PiTableId id, PiTableType tableType,
- PiActionProfileModel actionProfile, long maxSize,
- ImmutableMap<PiCounterId, PiCounterModel> counters,
- ImmutableMap<PiMeterId, PiMeterModel> meters, boolean supportAging,
- ImmutableMap<PiMatchFieldId, PiMatchFieldModel> matchFields,
- ImmutableMap<PiActionId, PiActionModel> actions,
- PiActionModel defaultAction, boolean hasDefaultMutableParams) {
+ PiActionProfileModel actionProfile, long maxSize,
+ ImmutableMap<PiCounterId, PiCounterModel> counters,
+ ImmutableMap<PiMeterId, PiMeterModel> meters, boolean supportAging,
+ ImmutableMap<PiMatchFieldId, PiMatchFieldModel> matchFields,
+ ImmutableMap<PiActionId, PiActionModel> actions,
+ PiActionModel defaultAction, boolean hasDefaultMutableParams,
+ boolean isConstTable) {
this.id = id;
this.tableType = tableType;
this.actionProfile = actionProfile;
@@ -69,6 +71,7 @@
this.actions = actions;
this.defaultAction = defaultAction;
this.hasDefaultMutableParams = hasDefaultMutableParams;
+ this.isConstTable = isConstTable;
}
@Override
@@ -127,6 +130,11 @@
}
@Override
+ public boolean isConstantTable() {
+ return isConstTable;
+ }
+
+ @Override
public Optional<PiActionModel> action(PiActionId actionId) {
return Optional.ofNullable(actions.get(actionId));
}
diff --git a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java
index 84d3af8..da10762 100644
--- a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java
+++ b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4PipelineModelTest.java
@@ -269,14 +269,17 @@
private static final boolean HAS_DEFAULT_MUTABLE_PARAMS_1 = true;
private static final boolean HAS_DEFAULT_MUTABLE_PARAMS_2 = false;
+ private static final boolean IS_CONST_TABLE_1 = true;
+ private static final boolean IS_CONST_TABLE_2 = false;
+
private static final PiTableModel P4_TABLE_MODEL_1 =
new P4TableModel(PI_TABLE_ID_1, PI_TABLE_TYPE_1, P4_ACTION_PROFILE_MODEL_1, MAX_SIZE_1, COUNTERS_1,
METERS_1, SUPPORT_AGING_1, MATCH_FIELDS_1, ACTIONS_1, P4_ACTION_MODEL_DEFAULT_1,
- HAS_DEFAULT_MUTABLE_PARAMS_1);
+ HAS_DEFAULT_MUTABLE_PARAMS_1, IS_CONST_TABLE_1);
private static final PiTableModel P4_TABLE_MODEL_2 =
new P4TableModel(PI_TABLE_ID_2, PI_TABLE_TYPE_2, P4_ACTION_PROFILE_MODEL_2, MAX_SIZE_2, COUNTERS_2,
METERS_2, SUPPORT_AGING_2, MATCH_FIELDS_2, ACTIONS_2, P4_ACTION_MODEL_DEFAULT_2,
- HAS_DEFAULT_MUTABLE_PARAMS_2);
+ HAS_DEFAULT_MUTABLE_PARAMS_2, IS_CONST_TABLE_2);
/* Packet operations */
private static final PiPacketOperationType PI_PACKET_OPERATION_TYPE_1 = PiPacketOperationType.PACKET_IN;
@@ -360,4 +363,4 @@
.addEqualityGroup(P4_PIPELINE_MODEL_2)
.testEquals();
}
-}
\ No newline at end of file
+}
diff --git a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4TableModelTest.java b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4TableModelTest.java
index 21c7900..89b10d0 100644
--- a/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4TableModelTest.java
+++ b/protocols/p4runtime/model/src/test/java/org/onosproject/p4runtime/model/P4TableModelTest.java
@@ -38,6 +38,7 @@
import org.onosproject.net.pi.model.PiTableId;
import org.onosproject.net.pi.model.PiTableModel;
import org.onosproject.net.pi.model.PiTableType;
+
import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
/**
@@ -241,18 +242,21 @@
private static final boolean HAS_DEFAULT_MUTABLE_PARAMS_1 = true;
private static final boolean HAS_DEFAULT_MUTABLE_PARAMS_2 = false;
+ private static final boolean IS_CONST_TABLE_1 = true;
+ private static final boolean IS_CONST_TABLE_2 = false;
+
private static final PiTableModel P4_TABLE_MODEL_1 =
new P4TableModel(PI_TABLE_ID_1, PI_TABLE_TYPE_1, P4_ACTION_PROFILE_MODEL_1, MAX_SIZE_1, COUNTERS_1,
METERS_1, SUPPORT_AGING_1, MATCH_FIELDS_1, ACTIONS_1, P4_ACTION_MODEL_DEFAULT_1,
- HAS_DEFAULT_MUTABLE_PARAMS_1);
+ HAS_DEFAULT_MUTABLE_PARAMS_1, IS_CONST_TABLE_1);
private static final PiTableModel SAME_AS_P4_TABLE_MODEL_1 =
new P4TableModel(PI_TABLE_ID_1, PI_TABLE_TYPE_1, P4_ACTION_PROFILE_MODEL_1, MAX_SIZE_1, COUNTERS_1,
METERS_1, SUPPORT_AGING_1, MATCH_FIELDS_1, ACTIONS_1, P4_ACTION_MODEL_DEFAULT_1,
- HAS_DEFAULT_MUTABLE_PARAMS_1);
+ HAS_DEFAULT_MUTABLE_PARAMS_1, IS_CONST_TABLE_1);
private static final PiTableModel P4_TABLE_MODEL_2 =
new P4TableModel(PI_TABLE_ID_2, PI_TABLE_TYPE_2, P4_ACTION_PROFILE_MODEL_2, MAX_SIZE_2, COUNTERS_2,
METERS_2, SUPPORT_AGING_2, MATCH_FIELDS_2, ACTIONS_2, P4_ACTION_MODEL_DEFAULT_2,
- HAS_DEFAULT_MUTABLE_PARAMS_2);
+ HAS_DEFAULT_MUTABLE_PARAMS_2, IS_CONST_TABLE_2);
/**
* Checks that the P4TableModel class is immutable.