Bumped supported revisions of P4 tools

Includes:
- Use new P4Runtime "v1" package names
- Removed VALID match
- New table entry priority spec (1 is min priority, not 0)
- Fixed p4c-bm2-ss to include arch flag
- Re-compiled P4 programs with more recent p4c (with updated p4info)

Change-Id: I05908f40eda0f0c755009268fd261fb8bcc9be35
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileGroupEncoder.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileGroupEncoder.java
index 9a01a82..20f39df 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileGroupEncoder.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileGroupEncoder.java
@@ -21,10 +21,10 @@
 import org.onosproject.net.pi.model.PiPipeconf;
 import org.onosproject.net.pi.runtime.PiActionGroup;
 import org.onosproject.net.pi.runtime.PiActionGroupId;
-import p4.P4RuntimeOuterClass.ActionProfileGroup;
-import p4.P4RuntimeOuterClass.ActionProfileGroup.Member;
-import p4.P4RuntimeOuterClass.ActionProfileMember;
-import p4.config.P4InfoOuterClass;
+import p4.v1.P4RuntimeOuterClass.ActionProfileGroup;
+import p4.v1.P4RuntimeOuterClass.ActionProfileGroup.Member;
+import p4.v1.P4RuntimeOuterClass.ActionProfileMember;
+import p4.config.v1.P4InfoOuterClass;
 
 import java.util.Collection;
 import java.util.Map;
@@ -34,7 +34,8 @@
 /**
  * Encoder/Decoder for action profile group.
  */
-public final class ActionProfileGroupEncoder {
+final class ActionProfileGroupEncoder {
+
     private ActionProfileGroupEncoder() {
         // hide default constructor
     }
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileMemberEncoder.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileMemberEncoder.java
index 7170eba..ba31e69 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileMemberEncoder.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/ActionProfileMemberEncoder.java
@@ -20,9 +20,9 @@
 import org.onosproject.net.pi.model.PiPipeconf;
 import org.onosproject.net.pi.runtime.PiActionGroupMember;
 import org.onosproject.net.pi.runtime.PiActionGroupMemberId;
-import p4.P4RuntimeOuterClass;
-import p4.P4RuntimeOuterClass.ActionProfileMember;
-import p4.config.P4InfoOuterClass;
+import p4.config.v1.P4InfoOuterClass;
+import p4.v1.P4RuntimeOuterClass;
+import p4.v1.P4RuntimeOuterClass.ActionProfileMember;
 
 import static java.lang.String.format;
 import static org.onosproject.p4runtime.ctl.TableEntryEncoder.decodeActionMsg;
@@ -39,20 +39,13 @@
     /**
      * Encode a PiActionGroupMember to a ActionProfileMember.
      *
-     * @param group the PI action group of members
-     * @param member the member to encode
-     * @param pipeconf the pipeconf
-     * @return encoded member
-     */
-    /**
-     * Encode a PiActionGroupMember to a ActionProfileMember.
-     *
      * @param profileId the PI action group profile ID of members
-     * @param member the member to encode
-     * @param pipeconf the pipeconf, as encode spec
+     * @param member    the member to encode
+     * @param pipeconf  the pipeconf, as encode spec
      * @return encoded member
-     * @throws P4InfoBrowser.NotFoundException can't find action profile from P4Info browser
-     * @throws EncodeException can't find P4Info from pipeconf
+     * @throws P4InfoBrowser.NotFoundException can't find action profile from
+     *                                         P4Info browser
+     * @throws EncodeException                 can't find P4Info from pipeconf
      */
     static ActionProfileMember encode(PiActionProfileId profileId,
                                       PiActionGroupMember member,
@@ -88,12 +81,14 @@
     /**
      * Decode an action profile member to PI action group member.
      *
-     * @param member the action profile member
-     * @param weight the weight of the member
+     * @param member   the action profile member
+     * @param weight   the weight of the member
      * @param pipeconf the pipeconf, as decode spec
      * @return decoded PI action group member
-     * @throws P4InfoBrowser.NotFoundException can't find definition of action from P4 info
-     * @throws EncodeException can't get P4 info browser from pipeconf
+     * @throws P4InfoBrowser.NotFoundException can't find definition of action
+     *                                         from P4 info
+     * @throws EncodeException                 can't get P4 info browser from
+     *                                         pipeconf
      */
     static PiActionGroupMember decode(ActionProfileMember member,
                                       int weight,
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/CounterEntryCodec.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/CounterEntryCodec.java
index 17bff76..ec50c68 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/CounterEntryCodec.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/CounterEntryCodec.java
@@ -24,11 +24,11 @@
 import org.onosproject.net.pi.runtime.PiCounterCellId;
 import org.onosproject.net.pi.runtime.PiTableEntry;
 import org.slf4j.Logger;
-import p4.P4RuntimeOuterClass;
-import p4.P4RuntimeOuterClass.CounterData;
-import p4.P4RuntimeOuterClass.CounterEntry;
-import p4.P4RuntimeOuterClass.DirectCounterEntry;
-import p4.P4RuntimeOuterClass.Entity;
+import p4.v1.P4RuntimeOuterClass;
+import p4.v1.P4RuntimeOuterClass.CounterData;
+import p4.v1.P4RuntimeOuterClass.CounterEntry;
+import p4.v1.P4RuntimeOuterClass.DirectCounterEntry;
+import p4.v1.P4RuntimeOuterClass.Entity;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -38,8 +38,8 @@
 import static java.lang.String.format;
 import static org.onosproject.p4runtime.ctl.P4RuntimeUtils.indexMsg;
 import static org.slf4j.LoggerFactory.getLogger;
-import static p4.P4RuntimeOuterClass.Entity.EntityCase.COUNTER_ENTRY;
-import static p4.P4RuntimeOuterClass.Entity.EntityCase.DIRECT_COUNTER_ENTRY;
+import static p4.v1.P4RuntimeOuterClass.Entity.EntityCase.COUNTER_ENTRY;
+import static p4.v1.P4RuntimeOuterClass.Entity.EntityCase.DIRECT_COUNTER_ENTRY;
 
 /**
  * Encoder/decoder of PI counter IDs to counter entry protobuf messages, and
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/DefaultArbitration.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/DefaultArbitration.java
index 8c83bee..e8b8658 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/DefaultArbitration.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/DefaultArbitration.java
@@ -19,7 +19,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.MastershipRole;
 import org.onosproject.p4runtime.api.P4RuntimeEventSubject;
-import p4.P4RuntimeOuterClass.Uint128;
+import p4.v1.P4RuntimeOuterClass.Uint128;
 
 /**
  * Default implementation of arbitration in P4Runtime.
@@ -36,7 +36,7 @@
      * @param role       the role
      * @param electionId the election id
      */
-    public DefaultArbitration(DeviceId deviceId, MastershipRole role, Uint128 electionId) {
+     DefaultArbitration(DeviceId deviceId, MastershipRole role, Uint128 electionId) {
         this.deviceId = deviceId;
         this.role = role;
         this.electionId = electionId;
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/MeterEntryCodec.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/MeterEntryCodec.java
index a830f6d..12379fd 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/MeterEntryCodec.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/MeterEntryCodec.java
@@ -25,11 +25,11 @@
 import org.onosproject.net.pi.runtime.PiMeterCellId;
 import org.onosproject.net.pi.runtime.PiTableEntry;
 import org.slf4j.Logger;
-import p4.P4RuntimeOuterClass;
-import p4.P4RuntimeOuterClass.DirectMeterEntry;
-import p4.P4RuntimeOuterClass.Entity;
-import p4.P4RuntimeOuterClass.MeterConfig;
-import p4.P4RuntimeOuterClass.MeterEntry;
+import p4.v1.P4RuntimeOuterClass;
+import p4.v1.P4RuntimeOuterClass.DirectMeterEntry;
+import p4.v1.P4RuntimeOuterClass.Entity;
+import p4.v1.P4RuntimeOuterClass.MeterConfig;
+import p4.v1.P4RuntimeOuterClass.MeterEntry;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -39,8 +39,8 @@
 import static java.lang.String.format;
 import static org.onosproject.p4runtime.ctl.P4RuntimeUtils.indexMsg;
 import static org.slf4j.LoggerFactory.getLogger;
-import static p4.P4RuntimeOuterClass.Entity.EntityCase.DIRECT_METER_ENTRY;
-import static p4.P4RuntimeOuterClass.Entity.EntityCase.METER_ENTRY;
+import static p4.v1.P4RuntimeOuterClass.Entity.EntityCase.DIRECT_METER_ENTRY;
+import static p4.v1.P4RuntimeOuterClass.Entity.EntityCase.METER_ENTRY;
 
 /**
  * Encoder/decoder of PI meter cell configurations to meter entry protobuf
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4DataCodec.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4DataCodec.java
index 5b0a2c5..551bf5c 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4DataCodec.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4DataCodec.java
@@ -18,9 +18,9 @@
 
 import com.google.protobuf.ByteString;
 import org.onlab.util.ImmutableByteSequence;
+import org.onosproject.net.pi.model.PiData;
 import org.onosproject.net.pi.runtime.data.PiBitString;
 import org.onosproject.net.pi.runtime.data.PiBool;
-import org.onosproject.net.pi.model.PiData;
 import org.onosproject.net.pi.runtime.data.PiEnumString;
 import org.onosproject.net.pi.runtime.data.PiErrorString;
 import org.onosproject.net.pi.runtime.data.PiHeader;
@@ -29,13 +29,16 @@
 import org.onosproject.net.pi.runtime.data.PiHeaderUnionStack;
 import org.onosproject.net.pi.runtime.data.PiStruct;
 import org.onosproject.net.pi.runtime.data.PiTuple;
-import org.slf4j.Logger;
-import p4.P4Types;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static org.slf4j.LoggerFactory.getLogger;
+import static p4.v1.P4DataOuterClass.P4Data;
+import static p4.v1.P4DataOuterClass.P4Header;
+import static p4.v1.P4DataOuterClass.P4HeaderStack;
+import static p4.v1.P4DataOuterClass.P4HeaderUnion;
+import static p4.v1.P4DataOuterClass.P4HeaderUnionStack;
+import static p4.v1.P4DataOuterClass.P4StructLike;
 
 /**
  * Encoder/decoder of PI Data entry to P4 Data entry protobuf
@@ -43,14 +46,12 @@
  */
 final class P4DataCodec {
 
-    private static final Logger log = getLogger(P4DataCodec.class);
-
     private P4DataCodec() {
         // Hides constructor.
     }
 
-    private static P4Types.P4Header encodeHeader(PiHeader piHeader) {
-        P4Types.P4Header.Builder builder = P4Types.P4Header.newBuilder();
+    private static P4Header encodeHeader(PiHeader piHeader) {
+        P4Header.Builder builder = P4Header.newBuilder();
         int i = 0;
         for (ImmutableByteSequence bitString : piHeader.bitStrings()) {
             builder.setBitstrings(i, ByteString.copyFrom(bitString.asArray()));
@@ -59,7 +60,7 @@
         return builder.setIsValid(piHeader.isValid()).build();
     }
 
-    private static PiHeader decodeHeader(P4Types.P4Header p4Header) {
+    private static PiHeader decodeHeader(P4Header p4Header) {
         List<ImmutableByteSequence> bitStrings = p4Header.getBitstringsList().stream()
                 .map(bit -> ImmutableByteSequence.copyFrom(bit.asReadOnlyByteBuffer()))
                 .collect(Collectors.toList());
@@ -67,9 +68,9 @@
         return PiHeader.of(p4Header.getIsValid(), bitStrings);
     }
 
-    private static P4Types.P4HeaderUnion encodeHeaderUnion(PiHeaderUnion headerUnion) {
+    private static P4HeaderUnion encodeHeaderUnion(PiHeaderUnion headerUnion) {
 
-        P4Types.P4HeaderUnion.Builder builder = P4Types.P4HeaderUnion.newBuilder();
+        P4HeaderUnion.Builder builder = P4HeaderUnion.newBuilder();
         if (headerUnion.isValid()) {
             builder.setValidHeader(encodeHeader(headerUnion.header()));
             builder.setValidHeaderName(headerUnion.headerName());
@@ -82,45 +83,45 @@
         return builder.build();
     }
 
-    private static PiHeaderUnion decodeHeaderUnion(P4Types.P4HeaderUnion p4HeaderUnion) {
+    private static PiHeaderUnion decodeHeaderUnion(P4HeaderUnion p4HeaderUnion) {
 
         return PiHeaderUnion.of(p4HeaderUnion.getValidHeaderName(),
                                 decodeHeader(p4HeaderUnion.getValidHeader()));
     }
 
-    private static P4Types.P4StructLike encodeStruct(PiStruct piStruct) {
-        P4Types.P4StructLike.Builder builder = P4Types.P4StructLike.newBuilder();
+    private static P4StructLike encodeStruct(PiStruct piStruct) {
+        P4StructLike.Builder builder = P4StructLike.newBuilder();
         builder.addAllMembers(piStruct.struct().stream()
-                                      .map(piData -> encodeP4Data(piData))
+                                      .map(P4DataCodec::encodeP4Data)
                                       .collect(Collectors.toList()));
         return builder.build();
     }
 
-    private static PiStruct decodeStruct(P4Types.P4StructLike p4StructLike) {
+    private static PiStruct decodeStruct(P4StructLike p4StructLike) {
 
         return PiStruct.of(p4StructLike.getMembersList().stream()
-                                   .map(p4Data -> decodeP4Data(p4Data))
+                                   .map(P4DataCodec::decodeP4Data)
                                    .collect(Collectors.toList()));
     }
 
-    private static P4Types.P4StructLike encodeTuple(PiTuple piTuple) {
-        P4Types.P4StructLike.Builder builder = P4Types.P4StructLike.newBuilder();
+    private static P4StructLike encodeTuple(PiTuple piTuple) {
+        P4StructLike.Builder builder = P4StructLike.newBuilder();
         builder.addAllMembers(piTuple.tuple().stream()
-                                      .map(piData -> encodeP4Data(piData))
+                                      .map(P4DataCodec::encodeP4Data)
                                       .collect(Collectors.toList()));
         return builder.build();
     }
 
-    private static PiTuple decodeTuple(P4Types.P4StructLike p4StructLike) {
+    private static PiTuple decodeTuple(P4StructLike p4StructLike) {
 
         return PiTuple.of(p4StructLike.getMembersList().stream()
-                                  .map(p4Data -> decodeP4Data(p4Data))
+                                  .map(P4DataCodec::decodeP4Data)
                                   .collect(Collectors.toList()));
     }
 
-    static P4Types.P4Data encodeP4Data(PiData piData) {
+    static P4Data encodeP4Data(PiData piData) {
 
-        P4Types.P4Data.Builder builder = P4Types.P4Data.newBuilder();
+        P4Data.Builder builder = P4Data.newBuilder();
         switch (piData.type()) {
             case BITSTRING:
                 builder.setBitstring(ByteString.copyFrom(((PiBitString) piData).bitString().asArray()));
@@ -144,7 +145,7 @@
                 builder.setHeader(encodeHeader((PiHeader) piData));
                 break;
             case HEADERSTACK:
-                P4Types.P4HeaderStack.Builder headerStack =  P4Types.P4HeaderStack.newBuilder();
+                P4HeaderStack.Builder headerStack =  P4HeaderStack.newBuilder();
                 int i = 0;
                 for (PiHeader header : ((PiHeaderStack) piData).headers()) {
                     headerStack.setEntries(i, encodeHeader(header));
@@ -156,7 +157,7 @@
                 builder.setHeaderUnion(encodeHeaderUnion((PiHeaderUnion) piData));
                 break;
             case HEADERUNIONSTACK:
-                P4Types.P4HeaderUnionStack.Builder headerUnionStack =  P4Types.P4HeaderUnionStack.newBuilder();
+                P4HeaderUnionStack.Builder headerUnionStack =  P4HeaderUnionStack.newBuilder();
                 int j = 0;
                 for (PiHeaderUnion headerUnion : ((PiHeaderUnionStack) piData).headerUnions()) {
                     headerUnionStack.setEntries(j, encodeHeaderUnion(headerUnion));
@@ -171,7 +172,7 @@
         return builder.build();
     }
 
-    static PiData decodeP4Data(P4Types.P4Data p4Data) {
+    static PiData decodeP4Data(P4Data p4Data) {
         PiData piData = null;
 
         switch (p4Data.getDataCase()) {
@@ -195,13 +196,13 @@
                 break;
             case HEADER_STACK:
                 piData = PiHeaderStack.of(p4Data.getHeaderStack().getEntriesList().stream()
-                                                  .map(p4header -> decodeHeader(p4header))
+                                                  .map(P4DataCodec::decodeHeader)
                                                   .collect(Collectors.toList()));
                 break;
             case HEADER_UNION_STACK:
                 piData = PiHeaderUnionStack.of(p4Data.getHeaderUnionStack()
                                                        .getEntriesList().stream()
-                                                       .map(p4HeaderUnion -> decodeHeaderUnion(p4HeaderUnion))
+                                                       .map(P4DataCodec::decodeHeaderUnion)
                                                        .collect(Collectors.toList()));
                 break;
             case ENUM:
@@ -218,4 +219,4 @@
 
         return piData;
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4InfoBrowser.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4InfoBrowser.java
index 055b0c3..801ce36 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4InfoBrowser.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4InfoBrowser.java
@@ -19,17 +19,17 @@
 
 import com.google.common.collect.Maps;
 import com.google.protobuf.Message;
-import p4.config.P4InfoOuterClass.Action;
-import p4.config.P4InfoOuterClass.ActionProfile;
-import p4.config.P4InfoOuterClass.ControllerPacketMetadata;
-import p4.config.P4InfoOuterClass.Counter;
-import p4.config.P4InfoOuterClass.DirectCounter;
-import p4.config.P4InfoOuterClass.DirectMeter;
-import p4.config.P4InfoOuterClass.MatchField;
-import p4.config.P4InfoOuterClass.Meter;
-import p4.config.P4InfoOuterClass.P4Info;
-import p4.config.P4InfoOuterClass.Preamble;
-import p4.config.P4InfoOuterClass.Table;
+import p4.config.v1.P4InfoOuterClass.Action;
+import p4.config.v1.P4InfoOuterClass.ActionProfile;
+import p4.config.v1.P4InfoOuterClass.ControllerPacketMetadata;
+import p4.config.v1.P4InfoOuterClass.Counter;
+import p4.config.v1.P4InfoOuterClass.DirectCounter;
+import p4.config.v1.P4InfoOuterClass.DirectMeter;
+import p4.config.v1.P4InfoOuterClass.MatchField;
+import p4.config.v1.P4InfoOuterClass.Meter;
+import p4.config.v1.P4InfoOuterClass.P4Info;
+import p4.config.v1.P4InfoOuterClass.Preamble;
+import p4.config.v1.P4InfoOuterClass.Table;
 
 import java.util.Map;
 
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
index 624c41c..43d01e5 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeClientImpl.java
@@ -52,24 +52,24 @@
 import org.onosproject.p4runtime.api.P4RuntimeClient;
 import org.onosproject.p4runtime.api.P4RuntimeEvent;
 import org.slf4j.Logger;
-import p4.P4RuntimeGrpc;
-import p4.P4RuntimeOuterClass;
-import p4.P4RuntimeOuterClass.ActionProfileGroup;
-import p4.P4RuntimeOuterClass.ActionProfileMember;
-import p4.P4RuntimeOuterClass.Entity;
-import p4.P4RuntimeOuterClass.ForwardingPipelineConfig;
-import p4.P4RuntimeOuterClass.MasterArbitrationUpdate;
-import p4.P4RuntimeOuterClass.PacketIn;
-import p4.P4RuntimeOuterClass.ReadRequest;
-import p4.P4RuntimeOuterClass.ReadResponse;
-import p4.P4RuntimeOuterClass.SetForwardingPipelineConfigRequest;
-import p4.P4RuntimeOuterClass.StreamMessageRequest;
-import p4.P4RuntimeOuterClass.StreamMessageResponse;
-import p4.P4RuntimeOuterClass.TableEntry;
-import p4.P4RuntimeOuterClass.Uint128;
-import p4.P4RuntimeOuterClass.Update;
-import p4.P4RuntimeOuterClass.WriteRequest;
-import p4.config.P4InfoOuterClass.P4Info;
+import p4.v1.P4RuntimeGrpc;
+import p4.v1.P4RuntimeOuterClass;
+import p4.v1.P4RuntimeOuterClass.ActionProfileGroup;
+import p4.v1.P4RuntimeOuterClass.ActionProfileMember;
+import p4.v1.P4RuntimeOuterClass.Entity;
+import p4.v1.P4RuntimeOuterClass.ForwardingPipelineConfig;
+import p4.v1.P4RuntimeOuterClass.MasterArbitrationUpdate;
+import p4.v1.P4RuntimeOuterClass.PacketIn;
+import p4.v1.P4RuntimeOuterClass.ReadRequest;
+import p4.v1.P4RuntimeOuterClass.ReadResponse;
+import p4.v1.P4RuntimeOuterClass.SetForwardingPipelineConfigRequest;
+import p4.v1.P4RuntimeOuterClass.StreamMessageRequest;
+import p4.v1.P4RuntimeOuterClass.StreamMessageResponse;
+import p4.v1.P4RuntimeOuterClass.TableEntry;
+import p4.v1.P4RuntimeOuterClass.Uint128;
+import p4.v1.P4RuntimeOuterClass.Update;
+import p4.v1.P4RuntimeOuterClass.WriteRequest;
+import p4.config.v1.P4InfoOuterClass.P4Info;
 import p4.tmp.P4Config;
 
 import java.nio.ByteBuffer;
@@ -96,11 +96,11 @@
 import static java.lang.String.format;
 import static org.onlab.util.Tools.groupedThreads;
 import static org.slf4j.LoggerFactory.getLogger;
-import static p4.P4RuntimeOuterClass.Entity.EntityCase.ACTION_PROFILE_GROUP;
-import static p4.P4RuntimeOuterClass.Entity.EntityCase.ACTION_PROFILE_MEMBER;
-import static p4.P4RuntimeOuterClass.Entity.EntityCase.TABLE_ENTRY;
-import static p4.P4RuntimeOuterClass.PacketOut;
-import static p4.P4RuntimeOuterClass.SetForwardingPipelineConfigRequest.Action.VERIFY_AND_COMMIT;
+import static p4.v1.P4RuntimeOuterClass.Entity.EntityCase.ACTION_PROFILE_GROUP;
+import static p4.v1.P4RuntimeOuterClass.Entity.EntityCase.ACTION_PROFILE_MEMBER;
+import static p4.v1.P4RuntimeOuterClass.Entity.EntityCase.TABLE_ENTRY;
+import static p4.v1.P4RuntimeOuterClass.PacketOut;
+import static p4.v1.P4RuntimeOuterClass.SetForwardingPipelineConfigRequest.Action.VERIFY_AND_COMMIT;
 
 /**
  * Implementation of a P4Runtime client.
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeUtils.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeUtils.java
index 25ef153..5dafe2b 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeUtils.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/P4RuntimeUtils.java
@@ -17,14 +17,14 @@
 package org.onosproject.p4runtime.ctl;
 
 import com.google.protobuf.ByteString;
-import p4.P4RuntimeOuterClass;
+import p4.v1.P4RuntimeOuterClass;
 
 import static java.lang.String.format;
 
 /**
  * Utilities for P4 runtime control.
  */
-public final class P4RuntimeUtils {
+final class P4RuntimeUtils {
 
     private P4RuntimeUtils() {
         // Hide default construction
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PacketIOCodec.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PacketIOCodec.java
index 485689f..726e092 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PacketIOCodec.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PacketIOCodec.java
@@ -25,7 +25,7 @@
 import org.onosproject.net.pi.runtime.PiControlMetadata;
 import org.onosproject.net.pi.runtime.PiPacketOperation;
 import org.slf4j.Logger;
-import p4.config.P4InfoOuterClass;
+import p4.config.v1.P4InfoOuterClass;
 
 import java.util.Collections;
 import java.util.List;
@@ -35,9 +35,9 @@
 import static org.onlab.util.ImmutableByteSequence.copyFrom;
 import static org.onosproject.p4runtime.ctl.P4InfoBrowser.NotFoundException;
 import static org.slf4j.LoggerFactory.getLogger;
-import static p4.P4RuntimeOuterClass.PacketIn;
-import static p4.P4RuntimeOuterClass.PacketMetadata;
-import static p4.P4RuntimeOuterClass.PacketOut;
+import static p4.v1.P4RuntimeOuterClass.PacketIn;
+import static p4.v1.P4RuntimeOuterClass.PacketMetadata;
+import static p4.v1.P4RuntimeOuterClass.PacketOut;
 
 /**
  * Encoder of packet metadata, from ONOS Pi* format, to P4Runtime protobuf messages, and vice versa.
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PipeconfHelper.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PipeconfHelper.java
index a49fdd8..85fa2a8 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PipeconfHelper.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/PipeconfHelper.java
@@ -24,7 +24,7 @@
 import org.onosproject.net.pi.model.PiPipeconf;
 import org.onosproject.net.pi.model.PiPipeconfId;
 import org.slf4j.Logger;
-import p4.config.P4InfoOuterClass.P4Info;
+import p4.config.v1.P4InfoOuterClass.P4Info;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/TableEntryEncoder.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/TableEntryEncoder.java
index 647b9cd..505b4cb 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/TableEntryEncoder.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/TableEntryEncoder.java
@@ -37,13 +37,12 @@
 import org.onosproject.net.pi.runtime.PiTableAction;
 import org.onosproject.net.pi.runtime.PiTableEntry;
 import org.onosproject.net.pi.runtime.PiTernaryFieldMatch;
-import org.onosproject.net.pi.runtime.PiValidFieldMatch;
 import org.slf4j.Logger;
-import p4.P4RuntimeOuterClass.Action;
-import p4.P4RuntimeOuterClass.FieldMatch;
-import p4.P4RuntimeOuterClass.TableAction;
-import p4.P4RuntimeOuterClass.TableEntry;
-import p4.config.P4InfoOuterClass;
+import p4.v1.P4RuntimeOuterClass.Action;
+import p4.v1.P4RuntimeOuterClass.FieldMatch;
+import p4.v1.P4RuntimeOuterClass.TableAction;
+import p4.v1.P4RuntimeOuterClass.TableEntry;
+import p4.config.v1.P4InfoOuterClass;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -348,13 +347,6 @@
                                 .setLow(rangeLowValue)
                                 .build())
                         .build();
-            case VALID:
-                PiValidFieldMatch validMatch = (PiValidFieldMatch) piFieldMatch;
-                return fieldMatchMsgBuilder.setValid(
-                        FieldMatch.Valid.newBuilder()
-                                .setValue(validMatch.isValid())
-                                .build())
-                        .build();
             default:
                 throw new EncodeException(format(
                         "Building of match type %s not implemented", piFieldMatch.type()));
@@ -422,9 +414,6 @@
                 ImmutableByteSequence rangeHighValue = copyFrom(rangeFieldMatch.getHigh().asReadOnlyByteBuffer());
                 ImmutableByteSequence rangeLowValue = copyFrom(rangeFieldMatch.getLow().asReadOnlyByteBuffer());
                 return new PiRangeFieldMatch(headerFieldId, rangeLowValue, rangeHighValue);
-            case VALID:
-                FieldMatch.Valid validFieldMatch = fieldMatchMsg.getValid();
-                return new PiValidFieldMatch(headerFieldId, validFieldMatch.getValue());
             default:
                 throw new EncodeException(format(
                         "Decoding of field match type '%s' not implemented", typeCase.name()));
diff --git a/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/MockP4RuntimeServer.java b/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/MockP4RuntimeServer.java
index 4773458..99b60c4 100644
--- a/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/MockP4RuntimeServer.java
+++ b/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/MockP4RuntimeServer.java
@@ -18,17 +18,17 @@
 
 import com.google.common.collect.Lists;
 import io.grpc.stub.StreamObserver;
-import p4.P4RuntimeGrpc;
-import p4.P4RuntimeOuterClass;
-import p4.P4RuntimeOuterClass.GetForwardingPipelineConfigRequest;
-import p4.P4RuntimeOuterClass.GetForwardingPipelineConfigResponse;
-import p4.P4RuntimeOuterClass.ReadRequest;
-import p4.P4RuntimeOuterClass.ReadResponse;
-import p4.P4RuntimeOuterClass.SetForwardingPipelineConfigRequest;
-import p4.P4RuntimeOuterClass.SetForwardingPipelineConfigResponse;
-import p4.P4RuntimeOuterClass.StreamMessageResponse;
-import p4.P4RuntimeOuterClass.WriteRequest;
-import p4.P4RuntimeOuterClass.WriteResponse;
+import p4.v1.P4RuntimeGrpc;
+import p4.v1.P4RuntimeOuterClass;
+import p4.v1.P4RuntimeOuterClass.GetForwardingPipelineConfigRequest;
+import p4.v1.P4RuntimeOuterClass.GetForwardingPipelineConfigResponse;
+import p4.v1.P4RuntimeOuterClass.ReadRequest;
+import p4.v1.P4RuntimeOuterClass.ReadResponse;
+import p4.v1.P4RuntimeOuterClass.SetForwardingPipelineConfigRequest;
+import p4.v1.P4RuntimeOuterClass.SetForwardingPipelineConfigResponse;
+import p4.v1.P4RuntimeOuterClass.StreamMessageResponse;
+import p4.v1.P4RuntimeOuterClass.WriteRequest;
+import p4.v1.P4RuntimeOuterClass.WriteResponse;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/P4RuntimeGroupTest.java b/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/P4RuntimeGroupTest.java
index 25d0e00..1e83577 100644
--- a/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/P4RuntimeGroupTest.java
+++ b/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/P4RuntimeGroupTest.java
@@ -45,12 +45,12 @@
 import org.onosproject.net.pi.runtime.PiActionGroupMember;
 import org.onosproject.net.pi.runtime.PiActionGroupMemberId;
 import org.onosproject.net.pi.runtime.PiActionParam;
-import p4.P4RuntimeOuterClass.ActionProfileGroup;
-import p4.P4RuntimeOuterClass.ActionProfileMember;
-import p4.P4RuntimeOuterClass.Entity;
-import p4.P4RuntimeOuterClass.Uint128;
-import p4.P4RuntimeOuterClass.Update;
-import p4.P4RuntimeOuterClass.WriteRequest;
+import p4.v1.P4RuntimeOuterClass.ActionProfileGroup;
+import p4.v1.P4RuntimeOuterClass.ActionProfileMember;
+import p4.v1.P4RuntimeOuterClass.Entity;
+import p4.v1.P4RuntimeOuterClass.Uint128;
+import p4.v1.P4RuntimeOuterClass.Update;
+import p4.v1.P4RuntimeOuterClass.WriteRequest;
 
 import java.io.IOException;
 import java.net.URL;
@@ -66,8 +66,8 @@
 import static org.junit.Assert.assertTrue;
 import static org.onosproject.net.pi.model.PiPipeconf.ExtensionType.P4_INFO_TEXT;
 import static org.onosproject.p4runtime.api.P4RuntimeClient.WriteOperationType.INSERT;
-import static p4.P4RuntimeOuterClass.Action;
-import static p4.P4RuntimeOuterClass.ReadResponse;
+import static p4.v1.P4RuntimeOuterClass.Action;
+import static p4.v1.P4RuntimeOuterClass.ReadResponse;
 
 /**
  * Tests for P4 Runtime Action Profile Group support.
diff --git a/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/TableEntryEncoderTest.java b/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/TableEntryEncoderTest.java
index 709873e..0799108 100644
--- a/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/TableEntryEncoderTest.java
+++ b/protocols/p4runtime/ctl/src/test/java/org/onosproject/p4runtime/ctl/TableEntryEncoderTest.java
@@ -36,8 +36,8 @@
 import org.onosproject.net.pi.runtime.PiMatchKey;
 import org.onosproject.net.pi.runtime.PiTableEntry;
 import org.onosproject.net.pi.runtime.PiTernaryFieldMatch;
-import p4.P4RuntimeOuterClass.Action;
-import p4.P4RuntimeOuterClass.TableEntry;
+import p4.v1.P4RuntimeOuterClass.Action;
+import p4.v1.P4RuntimeOuterClass.TableEntry;
 
 import java.net.URL;
 import java.util.Collection;
@@ -71,7 +71,6 @@
     private static final String INGRESS_PORT = "ingress_port";
     private static final String ETHER_TYPE = "etherType";
     private static final String ECMP_GROUP_ID = "ecmp_group_id";
-    private static final String ECMP_ACT_PROFILE = "ecmp_selector";
 
     private final Random rand = new Random();
     private final URL p4InfoUrl = this.getClass().getResource("/test.p4info");