Working implementation of Bmv2FlowRuleProgrammable

Change-Id: Ib5bfe4bb5bca677b158f0030d7db6bdf29a1de08
diff --git a/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java b/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java
index a85d80c..2e940fa 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java
@@ -66,6 +66,16 @@
     Optional<PiTableId> mapFlowRuleTableId(int flowRuleTableId);
 
     /**
+     * Returns a numeric table id (as in {@link org.onosproject.net.flow.FlowRule#tableId()}) equivalent to the given
+     * protocol-independent table id. If not present, it means that the given protocol-independent table id refers to a
+     * table that does not exist, or that cannot be used for flow rule operations.
+     *
+     * @param piTableId protocol-independent table id
+     * @return numeric table id
+     */
+    Optional<Integer> mapPiTableId(PiTableId piTableId);
+
+    /**
      * Returns an action of a protocol-independent pipeline that is functionally equivalent to the given ONOS traffic
      * treatment for the given table.
      *