OSPF protocol manual merge from 1.6, due to cherry pick merge conflict

Change-Id: I93653e745468722ce95533537a79e897b4292f5d
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java
index a2d5ca1..d390af2 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageReaderTest.java
@@ -20,6 +20,7 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.onosproject.ospf.protocol.util.OspfUtil;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
@@ -31,17 +32,17 @@
 
 public class OspfMessageReaderTest {
 
-    private final byte[] packet1 = {1, 1, 1, 1, 2, 1, 0, 44, -64, -88, -86, 8,
+    private final byte[] packet1 = {2, 1, 0, 44, -64, -88, -86, 8,
             0, 0, 0, 1, 39, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0,
             10, 2, 1, 0, 0, 0, 40, -64, -88, -86, 8, 0, 0, 0, 0};
-    private final byte[] packet2 = {1, 1, 1, 1, 2, 2, 0, 52, -64, -88, -86, 8, 0,
+    private final byte[] packet2 = {2, 2, 0, 52, -64, -88, -86, 8, 0,
             0, 0, 1, -96, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, -36, 2, 7, 65, 119,
             -87, 126, 0, 23, 2, 1, 10, 10, 10, 10, 10, 10, 10, 10, -128, 0, 0, 6,
             -69, 26, 0, 36};
-    private final byte[] packet3 = {1, 1, 1, 1, 2, 3, 0, 36, -64, -88, -86, 3, 0,
+    private final byte[] packet3 = {2, 3, 0, 36, -64, -88, -86, 3, 0,
             0, 0, 1, -67, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -64, -88,
             -86, 8, -64, -88, -86, 8};
-    private final byte[] packet4 = {1, 1, 1, 1, 2, 4, 1, 36, -64, -88, -86, 3, 0,
+    private final byte[] packet4 = {2, 4, 1, 36, -64, -88, -86, 3, 0,
             0, 0, 1, 54, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
             2, 2, 1, -64, -88, -86, 3, -64, -88, -86, 3, -128, 0,
             0, 1, 58, -100, 0, 48, 2, 0, 0, 2, -64, -88, -86,
@@ -62,7 +63,7 @@
             0, 0, 0, 0, 0, 0, 0, 3, 2, 5, -64, -88, -84, 0, -64,
             -88, -86, 2, -128, 0, 0, 1, 51, 65, 0, 36, -1, -1, -1, 0,
             -128, 0, 0, 20, -64, -88, -86, 10, 0, 0, 0, 0};
-    private final byte[] packet5 = {1, 1, 1, 1, 2, 5, 0, 44, -64, -88, -86, 8, 0, 0,
+    private final byte[] packet5 = {2, 5, 0, 44, -64, -88, -86, 8, 0, 0,
             0, 1, -30, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16, 2, 1, -64, -88, -86,
             2, -64, -88, -86, 2, -128, 0, 0, 1, 74, -114, 0, 48};
     private OspfMessageReader ospfMessageReader;
@@ -84,21 +85,39 @@
      */
     @Test
     public void testReadFromBuffer() throws Exception {
-        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet1));
         ospfMessageReader.readFromBuffer(channelBuffer);
 
-        channelBuffer = ChannelBuffers.copiedBuffer(packet2);
+        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet2));
         ospfMessageReader.readFromBuffer(channelBuffer);
 
-        channelBuffer = ChannelBuffers.copiedBuffer(packet3);
+        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet3));
         ospfMessageReader.readFromBuffer(channelBuffer);
 
-        channelBuffer = ChannelBuffers.copiedBuffer(packet4);
+        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet4));
         ospfMessageReader.readFromBuffer(channelBuffer);
 
-        channelBuffer = ChannelBuffers.copiedBuffer(packet5);
+        channelBuffer = ChannelBuffers.copiedBuffer(framePacket(packet5));
         ospfMessageReader.readFromBuffer(channelBuffer);
         assertThat(ospfMessageReader, is(notNullValue()));
+    }
 
+    /**
+     * Frames the packet to min frame length.
+     *
+     * @param ospfPacket OSPF packet
+     * @return OSPF packet as byte array
+     */
+    private byte[] framePacket(byte[] ospfPacket) {
+        //Set the length of the packet
+        //Get the total length of the packet
+        int length = ospfPacket.length;
+        //PDU_LENGTH + 1 byte for interface index
+        if (length < OspfUtil.MINIMUM_FRAME_LEN) {
+            byte[] bytes = new byte[OspfUtil.MINIMUM_FRAME_LEN + 5];
+            System.arraycopy(ospfPacket, 0, bytes, 0, length);
+            return bytes;
+        }
+        return ospfPacket;
     }
 }
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java
index 4208a06..bc0563d 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/OspfMessageWriterTest.java
@@ -57,10 +57,10 @@
     }
 
     /**
-     * Tests writeToBuffer() method.
+     * Tests getMessage() method.
      */
     @Test
-    public void testWriteToBuffer() throws Exception {
+    public void testGetMessage() throws Exception {
         helloPacket = new HelloPacket();
         helloPacket.setAuthType(1);
         helloPacket.setOspftype(1);
@@ -79,12 +79,12 @@
         helloPacket.setBdr(Ip4Address.valueOf("2.2.2.2"));
         helloPacket.addNeighbor(Ip4Address.valueOf("8.8.8.8"));
         helloPacket.setDestinationIp(Ip4Address.valueOf("5.5.5.5"));
-        ospfMessageWriter.writeToBuffer(helloPacket, 7, 1);
+        ospfMessageWriter.getMessage(helloPacket, 7, 1);
         assertThat(ospfMessageWriter, is(notNullValue()));
     }
 
     @Test(expected = Exception.class)
-    public void testWriteToBuffer1() throws Exception {
+    public void testGetMessage1() throws Exception {
 
         ddPacket = new DdPacket();
         ddPacket.setAuthType(1);
@@ -95,12 +95,12 @@
         ddPacket.setAuthentication(2);
         ddPacket.setOspfPacLength(48);
         ddPacket.setOspfVer(2);
-        ospfMessageWriter.writeToBuffer(ddPacket, 1, 1);
+        ospfMessageWriter.getMessage(ddPacket, 1, 1);
         assertThat(ospfMessageWriter, is(notNullValue()));
     }
 
     @Test(expected = Exception.class)
-    public void testWriteToBuffer2() throws Exception {
+    public void testGetMessage2() throws Exception {
 
         lsAck = new LsAcknowledge();
         lsAck.setAuthType(1);
@@ -111,12 +111,12 @@
         lsAck.setAuthentication(2);
         lsAck.setOspfPacLength(48);
         lsAck.setOspfVer(2);
-        ospfMessageWriter.writeToBuffer(lsAck, 1, 1);
+        ospfMessageWriter.getMessage(lsAck, 1, 1);
         assertThat(ospfMessageWriter, is(notNullValue()));
     }
 
     @Test(expected = Exception.class)
-    public void testWriteToBuffer3() throws Exception {
+    public void testGetMessage3() throws Exception {
         lsReq = new LsRequest();
         lsReq.setAuthType(1);
         lsReq.setOspftype(3);
@@ -126,12 +126,15 @@
         lsReq.setAuthentication(2);
         lsReq.setOspfPacLength(48);
         lsReq.setOspfVer(2);
-        ospfMessageWriter.writeToBuffer(lsReq, 1, 1);
+        ospfMessageWriter.getMessage(lsReq, 1, 1);
         assertThat(ospfMessageWriter, is(notNullValue()));
     }
 
+    /**
+     * Tests getMessage() method.
+     */
     @Test(expected = Exception.class)
-    public void testWriteToBuffer4() throws Exception {
+    public void testGetMessage4() throws Exception {
         lsUpdate = new LsUpdate();
         lsUpdate.setAuthType(1);
         lsUpdate.setOspftype(3);
@@ -141,15 +144,15 @@
         lsUpdate.setAuthentication(2);
         lsUpdate.setOspfPacLength(48);
         lsUpdate.setOspfVer(2);
-        ospfMessageWriter.writeToBuffer(lsUpdate, 1, 1);
+        ospfMessageWriter.getMessage(lsUpdate, 1, 1);
         assertThat(ospfMessageWriter, is(notNullValue()));
     }
 
     /**
-     * Tests writeToBuffer() method.
+     * Tests getMessage() method.
      */
     @Test(expected = Exception.class)
-    public void testWriteToBuffer5() throws Exception {
+    public void testGetMessage5() throws Exception {
         lsAck = new LsAcknowledge();
         lsAck.setAuthType(1);
         lsAck.setOspftype(5);
@@ -159,6 +162,6 @@
         lsAck.setAuthentication(2);
         lsAck.setOspfPacLength(48);
         lsAck.setOspfVer(2);
-        ospfMessageWriter.writeToBuffer(lsAck, 1, 1);
+        ospfMessageWriter.getMessage(lsAck, 1, 1);
     }
 }
\ No newline at end of file
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java
index 47b72e5..91404d1 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/DdPacketTest.java
@@ -22,10 +22,10 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfPacketType;
 import org.onosproject.ospf.protocol.lsa.LsaHeader;
 import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
 import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.util.OspfPacketType;
 
 import java.util.List;
 import java.util.Vector;
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java
index 6ed9d0c..acdbd3a 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/HelloPacketTest.java
@@ -21,8 +21,8 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfPacketType;
 import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.util.OspfPacketType;
 
 import java.util.Vector;
 
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java
index aea5723..1d8b3e0 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsAcknowledgeTest.java
@@ -22,10 +22,10 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfPacketType;
 import org.onosproject.ospf.protocol.lsa.LsaHeader;
 import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
 import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.util.OspfPacketType;
 
 import java.util.List;
 
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java
index 6238b88..ece1fbe 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsRequestTest.java
@@ -21,9 +21,9 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfPacketType;
 import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
 import org.onosproject.ospf.protocol.ospfpacket.subtype.LsRequestPacket;
-import org.onosproject.ospf.protocol.util.OspfPacketType;
 
 import java.net.UnknownHostException;
 import java.util.List;
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java
index 75611f6..fac03eb 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/ospfpacket/types/LsUpdateTest.java
@@ -22,6 +22,7 @@
 import org.junit.Test;
 import org.onlab.packet.Ip4Address;
 import org.onosproject.ospf.controller.OspfLsa;
+import org.onosproject.ospf.controller.OspfPacketType;
 import org.onosproject.ospf.protocol.lsa.LsaHeader;
 import org.onosproject.ospf.protocol.lsa.OpaqueLsaHeader;
 import org.onosproject.ospf.protocol.lsa.types.AsbrSummaryLsa;
@@ -33,7 +34,6 @@
 import org.onosproject.ospf.protocol.lsa.types.RouterLsa;
 import org.onosproject.ospf.protocol.lsa.types.SummaryLsa;
 import org.onosproject.ospf.protocol.ospfpacket.OspfPacketHeader;
-import org.onosproject.ospf.protocol.util.OspfPacketType;
 
 import java.util.List;
 import java.util.Vector;
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java
index 747df02..faf1bce 100644
--- a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/util/OspfUtilTest.java
@@ -229,7 +229,7 @@
      */
     @Test
     public void testAddMetadata() throws Exception {
-        result1 = OspfUtil.addMetadata(packet, 123, Ip4Address.valueOf("1.1.1.1"));
+        result1 = OspfUtil.addMetadata(2, packet, 1, Ip4Address.valueOf("1.1.1.1"));
         assertThat(result1, is(notNullValue()));
     }
 
@@ -251,7 +251,7 @@
      */
     @Test
     public void testAddMetaData() throws Exception {
-        result1 = OspfUtil.addMetadata(packet, 1, Ip4Address.valueOf("2.2.2.2"));
+        result1 = OspfUtil.addMetadata(2, packet, 1, Ip4Address.valueOf("2.2.2.2"));
         assertThat(result1, is(notNullValue()));
     }