decoupling extension types from of protocol
numbers renaming extension instruction to
extension treatment

Change-Id: Ie949d6235c2a5a984f7c7867262f8336721f1ee7
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionResolver.java b/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java
similarity index 80%
rename from core/api/src/main/java/org/onosproject/net/behaviour/ExtensionResolver.java
rename to core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java
index 54cbc7a..85f0216 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionResolver.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/ExtensionTreatmentResolver.java
@@ -18,14 +18,14 @@
 
 import com.google.common.annotations.Beta;
 import org.onosproject.net.driver.HandlerBehaviour;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
-import org.onosproject.net.flow.instructions.ExtensionType;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
 
 /**
  * Provides access to the extension implemented by this driver.
  */
 @Beta
-public interface ExtensionResolver extends HandlerBehaviour {
+public interface ExtensionTreatmentResolver extends HandlerBehaviour {
 
     /**
      * Gets an extension instruction instance of the specified type, if supported
@@ -36,5 +36,5 @@
      * @throws UnsupportedOperationException if the extension type is not
      * supported by this driver
      */
-    ExtensionInstruction getExtensionInstruction(ExtensionType type);
+    ExtensionTreatment getExtensionInstruction(ExtensionTreatmentType type);
 }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
index 4615a82..22bff7d 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
@@ -30,7 +30,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.IndexedLambda;
 import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
 import org.onosproject.net.flow.instructions.Instruction;
 import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.meter.MeterId;
@@ -489,7 +489,7 @@
         }
 
         @Override
-        public TrafficTreatment.Builder extension(ExtensionInstruction extension,
+        public TrafficTreatment.Builder extension(ExtensionTreatment extension,
                                                   DeviceId deviceId) {
             return add(Instructions.extension(extension, deviceId));
         }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
index f1a676a..06b6ffa 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
@@ -26,7 +26,7 @@
 import org.onosproject.core.GroupId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
 import org.onosproject.net.flow.instructions.Instruction;
 import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.meter.MeterId;
@@ -430,7 +430,7 @@
          * @param deviceId device ID
          * @return a treatment builder
          */
-        Builder extension(ExtensionInstruction extension, DeviceId deviceId);
+        Builder extension(ExtensionTreatment extension, DeviceId deviceId);
 
         /**
          * Builds an immutable traffic treatment descriptor.
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/AbstractExtensionInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/AbstractExtensionTreatment.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/net/flow/instructions/AbstractExtensionInstruction.java
rename to core/api/src/main/java/org/onosproject/net/flow/instructions/AbstractExtensionTreatment.java
index 9f22f88..ac7c771 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/AbstractExtensionInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/AbstractExtensionTreatment.java
@@ -23,7 +23,7 @@
 /**
  * Abstract implementation of the set/get property methods of ExtensionInstruction.
  */
-public abstract class AbstractExtensionInstruction implements ExtensionInstruction {
+public abstract class AbstractExtensionTreatment implements ExtensionTreatment {
 
     private static final String INVALID_KEY = "Invalid property key: ";
     private static final String INVALID_TYPE = "Given type does not match field type: ";
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionInstruction.java
rename to core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java
index 89e0cc5..0e8885e 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatment.java
@@ -21,14 +21,14 @@
 /**
  * An extensible instruction type.
  */
-public interface ExtensionInstruction {
+public interface ExtensionTreatment {
 
     /**
      * Gets the type of the extension instruction.
      *
      * @return type
      */
-    ExtensionType type();
+    ExtensionTreatmentType type();
 
     /**
      * Sets a property on the extension instruction.
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java
similarity index 74%
rename from core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java
rename to core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java
index 3e1cb75..7eaebbe 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionType.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/ExtensionTreatmentType.java
@@ -25,25 +25,26 @@
  * Type of extension instructions.
  */
 @Beta
-public final class ExtensionType {
+public final class ExtensionTreatmentType {
 
     /**
      * A list of well-known named extension instruction type codes.
+     * These numbers have no impact on the actual OF type id.
      */
-    public enum ExtensionTypes {
+    public enum ExtensionTreatmentTypes {
         // TODO fix type numbers to include experimenter id
-        NICIRA_SET_TUNNEL_DST(31),
-        NICIRA_RESUBMIT(32);
+        NICIRA_SET_TUNNEL_DST(0),
+        NICIRA_RESUBMIT(1);
 
-        private ExtensionType type;
+        private ExtensionTreatmentType type;
 
         /**
          * Creates a new named extension instruction type.
          *
          * @param type type code
          */
-        ExtensionTypes(int type) {
-            this.type = new ExtensionType(type);
+        ExtensionTreatmentTypes(int type) {
+            this.type = new ExtensionTreatmentType(type);
         }
 
         /**
@@ -51,7 +52,7 @@
          *
          * @return extension type object
          */
-        public ExtensionType type() {
+        public ExtensionTreatmentType type() {
             return type;
         }
     }
@@ -63,7 +64,7 @@
      *
      * @param type type code
      */
-    public ExtensionType(int type) {
+    public ExtensionTreatmentType(int type) {
         this.type = type;
     }
 
@@ -77,8 +78,8 @@
         if (this == obj) {
             return true;
         }
-        if (obj instanceof ExtensionType) {
-            final ExtensionType that = (ExtensionType) obj;
+        if (obj instanceof ExtensionTreatmentType) {
+            final ExtensionTreatmentType that = (ExtensionTreatmentType) obj;
             return this.type == that.type;
         }
         return false;
@@ -86,7 +87,7 @@
 
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(ExtensionType.class)
+        return MoreObjects.toStringHelper(ExtensionTreatmentType.class)
                 .add("type", type)
                 .toString();
     }
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
index 126e722..4643b31 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/Instructions.java
@@ -489,7 +489,7 @@
      * @param deviceId device ID
      * @return extension instruction
      */
-    public static ExtensionInstructionWrapper extension(ExtensionInstruction extension,
+    public static ExtensionInstructionWrapper extension(ExtensionTreatment extension,
                                                         DeviceId deviceId) {
         checkNotNull(extension, "Extension instruction cannot be null");
         checkNotNull(deviceId, "Device ID cannot be null");
@@ -858,16 +858,16 @@
      *  Extension instruction.
      */
     public static class ExtensionInstructionWrapper implements Instruction {
-        private final ExtensionInstruction extensionInstruction;
+        private final ExtensionTreatment extensionTreatment;
         private final DeviceId deviceId;
 
-        ExtensionInstructionWrapper(ExtensionInstruction extension, DeviceId deviceId) {
-            extensionInstruction = extension;
+        ExtensionInstructionWrapper(ExtensionTreatment extension, DeviceId deviceId) {
+            extensionTreatment = extension;
             this.deviceId = deviceId;
         }
 
-        public ExtensionInstruction extensionInstruction() {
-            return extensionInstruction;
+        public ExtensionTreatment extensionInstruction() {
+            return extensionTreatment;
         }
 
         public DeviceId deviceId() {
@@ -882,14 +882,14 @@
         @Override
         public String toString() {
             return toStringHelper(type().toString())
-                    .add("extension", extensionInstruction)
+                    .add("extension", extensionTreatment)
                     .add("deviceId", deviceId)
                     .toString();
         }
 
         @Override
         public int hashCode() {
-            return Objects.hash(type().ordinal(), extensionInstruction, deviceId);
+            return Objects.hash(type().ordinal(), extensionTreatment, deviceId);
         }
 
         @Override
@@ -899,7 +899,7 @@
             }
             if (obj instanceof ExtensionInstructionWrapper) {
                 ExtensionInstructionWrapper that = (ExtensionInstructionWrapper) obj;
-                return Objects.equals(extensionInstruction, that.extensionInstruction)
+                return Objects.equals(extensionTreatment, that.extensionTreatment)
                         && Objects.equals(deviceId, that.deviceId);
 
             }
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/ExtensionInstructionSerializer.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/ExtensionInstructionSerializer.java
index 6b12df9..e688a80 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/ExtensionInstructionSerializer.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/ExtensionInstructionSerializer.java
@@ -22,13 +22,13 @@
 import com.esotericsoftware.kryo.io.Output;
 import org.onlab.osgi.DefaultServiceDirectory;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.behaviour.ExtensionResolver;
+import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
 import org.onosproject.net.driver.DefaultDriverData;
 import org.onosproject.net.driver.DefaultDriverHandler;
 import org.onosproject.net.driver.DriverHandler;
 import org.onosproject.net.driver.DriverService;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
-import org.onosproject.net.flow.instructions.ExtensionType;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
 import org.onosproject.net.flow.instructions.Instructions;
 
 /**
@@ -53,16 +53,16 @@
     @Override
     public Instructions.ExtensionInstructionWrapper read(Kryo kryo, Input input,
                                                          Class<Instructions.ExtensionInstructionWrapper> type) {
-        ExtensionType exType = (ExtensionType) kryo.readClassAndObject(input);
+        ExtensionTreatmentType exType = (ExtensionTreatmentType) kryo.readClassAndObject(input);
         DeviceId deviceId = (DeviceId) kryo.readClassAndObject(input);
 
         DriverService driverService = DefaultServiceDirectory.getService(DriverService.class);
         DriverHandler handler = new DefaultDriverHandler(
                 new DefaultDriverData(driverService.getDriver(deviceId), deviceId));
 
-        ExtensionResolver resolver = handler.behaviour(ExtensionResolver.class);
+        ExtensionTreatmentResolver resolver = handler.behaviour(ExtensionTreatmentResolver.class);
 
-        ExtensionInstruction instruction = resolver.getExtensionInstruction(exType);
+        ExtensionTreatment instruction = resolver.getExtensionInstruction(exType);
 
         byte[] bytes = (byte[]) kryo.readClassAndObject(input);
 
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index e0764eb..f80a97a 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -129,7 +129,7 @@
 import org.onosproject.net.flow.criteria.UdpPortCriterion;
 import org.onosproject.net.flow.criteria.VlanIdCriterion;
 import org.onosproject.net.flow.criteria.VlanPcpCriterion;
-import org.onosproject.net.flow.instructions.ExtensionType;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
 import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.flow.instructions.L0ModificationInstruction;
 import org.onosproject.net.flow.instructions.L1ModificationInstruction;
@@ -455,7 +455,7 @@
             .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
             .register(new AnnotationsSerializer(), DefaultAnnotations.class)
             .register(new ExtensionInstructionSerializer(), Instructions.ExtensionInstructionWrapper.class)
-            .register(ExtensionType.class)
+            .register(ExtensionTreatmentType.class)
             .register(Versioned.class)
             .register(MapEvent.class)
             .register(MapEvent.Type.class)
diff --git a/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java b/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionTreatmentInterpreter.java
similarity index 63%
rename from drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java
rename to drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionTreatmentInterpreter.java
index b8f1fd9..544888d 100644
--- a/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionInterpreter.java
+++ b/drivers/src/main/java/org/onosproject/driver/extensions/NiciraExtensionTreatmentInterpreter.java
@@ -17,11 +17,11 @@
 package org.onosproject.driver.extensions;
 
 import org.onlab.packet.Ip4Address;
-import org.onosproject.net.behaviour.ExtensionResolver;
+import org.onosproject.net.behaviour.ExtensionTreatmentResolver;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
-import org.onosproject.net.flow.instructions.ExtensionType;
-import org.onosproject.openflow.controller.ExtensionInterpreter;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
+import org.onosproject.openflow.controller.ExtensionTreatmentInterpreter;
 import org.projectfloodlight.openflow.protocol.OFActionType;
 import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.action.OFAction;
@@ -33,36 +33,38 @@
 /**
  * Interpreter for Nicira OpenFlow extensions.
  */
-public class NiciraExtensionInterpreter extends AbstractHandlerBehaviour
-        implements ExtensionInterpreter, ExtensionResolver {
+public class NiciraExtensionTreatmentInterpreter extends AbstractHandlerBehaviour
+        implements ExtensionTreatmentInterpreter, ExtensionTreatmentResolver {
 
     @Override
-    public boolean supported(ExtensionType extensionType) {
-        if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type())) {
+    public boolean supported(ExtensionTreatmentType extensionTreatmentType) {
+        if (extensionTreatmentType.equals(
+                ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST.type())) {
             return true;
         }
-        if (extensionType.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) {
+        if (extensionTreatmentType.equals(
+                ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_RESUBMIT.type())) {
             return true;
         }
         return false;
     }
 
     @Override
-    public OFAction mapInstruction(OFFactory factory, ExtensionInstruction extensionInstruction) {
-        ExtensionType type = extensionInstruction.type();
-        if (type.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type())) {
-            NiciraSetTunnelDst tunnelDst = (NiciraSetTunnelDst) extensionInstruction;
+    public OFAction mapInstruction(OFFactory factory, ExtensionTreatment extensionTreatment) {
+        ExtensionTreatmentType type = extensionTreatment.type();
+        if (type.equals(ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST.type())) {
+            NiciraSetTunnelDst tunnelDst = (NiciraSetTunnelDst) extensionTreatment;
             return factory.actions().setField(factory.oxms().tunnelIpv4Dst(
                     IPv4Address.of(tunnelDst.tunnelDst().toInt())));
         }
-        if (type.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) {
+        if (type.equals(ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_RESUBMIT.type())) {
           // TODO this will be implemented later
         }
         return null;
     }
 
     @Override
-    public ExtensionInstruction mapAction(OFAction action) {
+    public ExtensionTreatment mapAction(OFAction action) {
         if (action.getType().equals(OFActionType.SET_FIELD)) {
             OFActionSetField setFieldAction = (OFActionSetField) action;
             OFOxm<?> oxm = setFieldAction.getField();
@@ -79,11 +81,11 @@
     }
 
     @Override
-    public ExtensionInstruction getExtensionInstruction(ExtensionType type) {
-        if (type.equals(ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type())) {
+    public ExtensionTreatment getExtensionInstruction(ExtensionTreatmentType type) {
+        if (type.equals(ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST.type())) {
             return new NiciraSetTunnelDst();
         }
-        if (type.equals(ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type())) {
+        if (type.equals(ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_RESUBMIT.type())) {
             return new NiciraResubmit();
         }
         throw new UnsupportedOperationException(
diff --git a/drivers/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java b/drivers/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java
index 0fd1731..481b6f9 100644
--- a/drivers/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java
+++ b/drivers/src/main/java/org/onosproject/driver/extensions/NiciraResubmit.java
@@ -19,8 +19,8 @@
 import com.google.common.base.MoreObjects;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.instructions.AbstractExtensionInstruction;
-import org.onosproject.net.flow.instructions.ExtensionType;
+import org.onosproject.net.flow.instructions.AbstractExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
 import org.onosproject.store.serializers.PortNumberSerializer;
 
 import java.util.Objects;
@@ -30,7 +30,7 @@
 /**
  * Nicira resubmit extension instruction.
  */
-public class NiciraResubmit extends AbstractExtensionInstruction {
+public class NiciraResubmit extends AbstractExtensionTreatment {
 
     private PortNumber inPort;
 
@@ -66,8 +66,8 @@
     }
 
     @Override
-    public ExtensionType type() {
-        return ExtensionType.ExtensionTypes.NICIRA_RESUBMIT.type();
+    public ExtensionTreatmentType type() {
+        return ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_RESUBMIT.type();
     }
 
     @Override
diff --git a/drivers/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java b/drivers/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java
index a20b247..ec23a9e 100644
--- a/drivers/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java
+++ b/drivers/src/main/java/org/onosproject/driver/extensions/NiciraSetTunnelDst.java
@@ -19,8 +19,8 @@
 import com.google.common.base.MoreObjects;
 import org.onlab.packet.Ip4Address;
 import org.onlab.util.KryoNamespace;
-import org.onosproject.net.flow.instructions.AbstractExtensionInstruction;
-import org.onosproject.net.flow.instructions.ExtensionType;
+import org.onosproject.net.flow.instructions.AbstractExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
 import org.onosproject.store.serializers.Ip4AddressSerializer;
 
 import java.util.Objects;
@@ -30,7 +30,7 @@
 /**
  * Nicira set tunnel destination extension instruction.
  */
-public class NiciraSetTunnelDst extends AbstractExtensionInstruction {
+public class NiciraSetTunnelDst extends AbstractExtensionTreatment {
 
     private Ip4Address tunnelDst;
 
@@ -67,8 +67,8 @@
     }
 
     @Override
-    public ExtensionType type() {
-        return ExtensionType.ExtensionTypes.NICIRA_SET_TUNNEL_DST.type();
+    public ExtensionTreatmentType type() {
+        return ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST.type();
     }
 
     @Override
diff --git a/drivers/src/main/resources/onos-drivers.xml b/drivers/src/main/resources/onos-drivers.xml
index c6d48d2..774f514 100644
--- a/drivers/src/main/resources/onos-drivers.xml
+++ b/drivers/src/main/resources/onos-drivers.xml
@@ -32,10 +32,10 @@
                    impl="org.onosproject.driver.handshaker.NiciraSwitchHandshaker"/>
         <behaviour api="org.onosproject.net.behaviour.ControllerConfig"
                    impl="org.onosproject.driver.ovsdb.OvsdbControllerConfig"/>
-        <behaviour api="org.onosproject.openflow.controller.ExtensionInterpreter"
-                   impl="org.onosproject.driver.extensions.NiciraExtensionInterpreter" />
-        <behaviour api="org.onosproject.net.behaviour.ExtensionResolver"
-                   impl="org.onosproject.driver.extensions.NiciraExtensionInterpreter" />
+        <behaviour api="org.onosproject.openflow.controller.ExtensionTreatmentInterpreter"
+                   impl="org.onosproject.driver.extensions.NiciraExtensionTreatmentInterpreter" />
+        <behaviour api="org.onosproject.net.behaviour.ExtensionTreatmentResolver"
+                   impl="org.onosproject.driver.extensions.NiciraExtensionTreatmentInterpreter" />
     </driver>
     <!--This driver is for simulated NETCONF devices through of-config tool on top og OVSDB-->
     <driver name="ovs-netconf" extends="default"
diff --git a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java
similarity index 73%
rename from protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java
rename to protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java
index 44b121a..dc57977 100644
--- a/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionInterpreter.java
+++ b/protocols/openflow/api/src/main/java/org/onosproject/openflow/controller/ExtensionTreatmentInterpreter.java
@@ -18,8 +18,8 @@
 
 import com.google.common.annotations.Beta;
 import org.onosproject.net.driver.HandlerBehaviour;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
-import org.onosproject.net.flow.instructions.ExtensionType;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
+import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
 import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.action.OFAction;
 
@@ -27,25 +27,25 @@
  * Interprets extension instructions and converts them to/from OpenFlow objects.
  */
 @Beta
-public interface ExtensionInterpreter extends HandlerBehaviour {
+public interface ExtensionTreatmentInterpreter extends HandlerBehaviour {
 
     /**
      * Returns true if the given extension instruction is supported by this
      * driver.
      *
-     * @param extensionType extension instruction type
+     * @param extensionTreatmentType extension instruction type
      * @return true if the instruction is supported, otherwise false
      */
-    boolean supported(ExtensionType extensionType);
+    boolean supported(ExtensionTreatmentType extensionTreatmentType);
 
     /**
      * Maps an extension instruction to an OpenFlow action.
      *
      * @param factory OpenFlow factory
-     * @param extensionInstruction extension instruction
+     * @param extensionTreatment extension instruction
      * @return OpenFlow action
      */
-    OFAction mapInstruction(OFFactory factory, ExtensionInstruction extensionInstruction);
+    OFAction mapInstruction(OFFactory factory, ExtensionTreatment extensionTreatment);
 
     /**
      * Maps an OpenFlow action to an extension instruction.
@@ -53,6 +53,6 @@
      * @param action OpenFlow action
      * @return extension instruction
      */
-    ExtensionInstruction mapAction(OFAction action);
+    ExtensionTreatment mapAction(OFAction action);
 
 }
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
index 89ce341..7982e39 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
@@ -44,7 +44,7 @@
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.openflow.controller.Dpid;
-import org.onosproject.openflow.controller.ExtensionInterpreter;
+import org.onosproject.openflow.controller.ExtensionTreatmentInterpreter;
 import org.projectfloodlight.openflow.protocol.OFFlowMod;
 import org.projectfloodlight.openflow.protocol.OFFlowRemoved;
 import org.projectfloodlight.openflow.protocol.OFFlowStatsEntry;
@@ -449,7 +449,7 @@
             break;
         case TUNNEL_IPV4_DST:
             DriverHandler driver = getDriver(dpid);
-            ExtensionInterpreter interpreter = driver.behaviour(ExtensionInterpreter.class);
+            ExtensionTreatmentInterpreter interpreter = driver.behaviour(ExtensionTreatmentInterpreter.class);
             if (interpreter != null) {
                 builder.extension(interpreter.mapAction(action), DeviceId.deviceId(Dpid.uri(dpid)));
             }
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
index e2fc30d..135150d 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
@@ -27,7 +27,7 @@
 import org.onosproject.net.driver.DriverService;
 import org.onosproject.net.flow.FlowRule;
 import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
 import org.onosproject.net.flow.instructions.Instruction;
 import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.flow.instructions.Instructions.GroupInstruction;
@@ -49,7 +49,7 @@
 import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModIPv6FlowLabelInstruction;
 import org.onosproject.net.flow.instructions.L4ModificationInstruction;
 import org.onosproject.net.flow.instructions.L4ModificationInstruction.ModTransportPortInstruction;
-import org.onosproject.openflow.controller.ExtensionInterpreter;
+import org.onosproject.openflow.controller.ExtensionTreatmentInterpreter;
 import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.OFFlowAdd;
 import org.projectfloodlight.openflow.protocol.OFFlowDelete;
@@ -482,16 +482,16 @@
         return null;
     }
 
-    private OFAction buildExtensionAction(ExtensionInstruction i) {
+    private OFAction buildExtensionAction(ExtensionTreatment i) {
         if (!driverService.isPresent()) {
             log.error("No driver service present");
             return null;
         }
         Driver driver = driverService.get().getDriver(deviceId);
-        if (driver.hasBehaviour(ExtensionInterpreter.class)) {
+        if (driver.hasBehaviour(ExtensionTreatmentInterpreter.class)) {
             DefaultDriverHandler handler =
                     new DefaultDriverHandler(new DefaultDriverData(driver, deviceId));
-            ExtensionInterpreter interpreter = handler.behaviour(ExtensionInterpreter.class);
+            ExtensionTreatmentInterpreter interpreter = handler.behaviour(ExtensionTreatmentInterpreter.class);
             return interpreter.mapInstruction(factory(), i);
         }
 
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java
index c91616d..9c93844 100644
--- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java
+++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupModBuilder.java
@@ -33,7 +33,7 @@
 import org.onosproject.net.driver.Driver;
 import org.onosproject.net.driver.DriverService;
 import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.flow.instructions.ExtensionInstruction;
+import org.onosproject.net.flow.instructions.ExtensionTreatment;
 import org.onosproject.net.flow.instructions.Instruction;
 import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.flow.instructions.L0ModificationInstruction;
@@ -42,7 +42,7 @@
 import org.onosproject.net.group.GroupBucket;
 import org.onosproject.net.group.GroupBuckets;
 import org.onosproject.net.group.GroupDescription;
-import org.onosproject.openflow.controller.ExtensionInterpreter;
+import org.onosproject.openflow.controller.ExtensionTreatmentInterpreter;
 import org.projectfloodlight.openflow.protocol.OFBucket;
 import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.OFGroupAdd;
@@ -424,16 +424,16 @@
         return null;
     }
 
-    private OFAction buildExtensionAction(ExtensionInstruction i, DeviceId deviceId) {
+    private OFAction buildExtensionAction(ExtensionTreatment i, DeviceId deviceId) {
         if (!driverService.isPresent()) {
             log.error("No driver service present");
             return null;
         }
         Driver driver = driverService.get().getDriver(deviceId);
-        if (driver.hasBehaviour(ExtensionInterpreter.class)) {
+        if (driver.hasBehaviour(ExtensionTreatmentInterpreter.class)) {
             DefaultDriverHandler handler =
                     new DefaultDriverHandler(new DefaultDriverData(driver, deviceId));
-            ExtensionInterpreter interpreter = handler.behaviour(ExtensionInterpreter.class);
+            ExtensionTreatmentInterpreter interpreter = handler.behaviour(ExtensionTreatmentInterpreter.class);
             return interpreter.mapInstruction(factory, i);
         }