Add support for ARP_TPA, ARP_THA Set Field Instructions

Signed-off-by: souvikdas95 <souvikdas95@yahoo.co.in>
Change-Id: I9fe44d8ece8dd268bff4ec4befc31a8ea24ac9aa
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 72cfd3f..ffad4f7 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
@@ -505,6 +505,16 @@
         }
 
         @Override
+        public Builder setArpTpa(IpAddress addr) {
+            return add(Instructions.modArpTpa(addr));
+        }
+
+        @Override
+        public Builder setArpTha(MacAddress addr) {
+            return add(Instructions.modArpTha(addr));
+        }
+
+        @Override
         public Builder setArpOp(short op) {
             return add(Instructions.modL3ArpOp(op));
         }
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 50c3018..9fde774 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
@@ -420,6 +420,22 @@
         Builder setArpSha(MacAddress addr);
 
         /**
+         * Sets the arp dst ip address.
+         *
+         * @param addr an ip
+         * @return a treatment builder
+         */
+        Builder setArpTpa(IpAddress addr);
+
+        /**
+         * Sets the arp dst mac address.
+         *
+         * @param addr a macaddress
+         * @return a treatment builder
+         */
+        Builder setArpTha(MacAddress addr);
+
+        /**
          * Sets the arp operation.
          *
          * @param op the value of arp operation.
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 d1fc61f..621c007 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
@@ -321,6 +321,28 @@
     }
 
     /**
+     * Creates a L3 ARP IP src modification.
+     *
+     * @param addr the ip address to modify to
+     * @return a L3 modification
+     */
+    public static L3ModificationInstruction modArpTpa(IpAddress addr) {
+        checkNotNull(addr, "Dst l3 ARP IP address cannot be null");
+        return new ModArpIPInstruction(L3SubType.ARP_TPA, addr);
+    }
+
+    /**
+     * Creates a l3 ARP Ether src modification.
+     *
+     * @param addr the mac address to modify to
+     * @return a l3 modification
+     */
+    public static L3ModificationInstruction modArpTha(MacAddress addr) {
+        checkNotNull(addr, "Dst l3 ARP address cannot be null");
+        return new ModArpEthInstruction(L3SubType.ARP_THA, addr);
+    }
+
+    /**
      * Creates a l3 ARP operation modification.
      *
      * @param op the ARP operation to modify to
diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
index cc15360..9edbdb8 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/L3ModificationInstruction.java
@@ -82,6 +82,16 @@
         ARP_SHA,
 
         /**
+         * ARP IP dst modification.
+         */
+        ARP_TPA,
+
+        /**
+         * ARP Ether dst modification.
+         */
+        ARP_THA,
+
+        /**
          * Arp operation modification.
          */
         ARP_OP,