Adj-In RIB code fix

Change-Id: Ice870ab1aff068cc27a5337a3f4ff7090a53d84d
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.java
index 794b6e9..54bcdba 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BgpPrefixLSNlri.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.bgpio.protocol;
 
-import java.util.LinkedList;
+import java.util.List;
 
 import org.onosproject.bgpio.types.BgpValueType;
 import org.onosproject.bgpio.protocol.linkstate.NodeDescriptors;
@@ -36,5 +36,5 @@
      *
      * @return list of Prefix descriptor
      */
-    LinkedList<BgpValueType> getPrefixdescriptor();
+    List<BgpValueType> getPrefixdescriptor();
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java
old mode 100755
new mode 100644
index 9b14b4b..3967a22
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpLinkLSIdentifier.java
@@ -18,6 +18,7 @@
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -28,6 +29,7 @@
 import org.onosproject.bgpio.types.IPv6AddressTlv;
 import org.onosproject.bgpio.types.LinkLocalRemoteIdentifiersTlv;
 import org.onosproject.bgpio.types.attr.BgpAttrNodeMultiTopologyId;
+import org.onosproject.bgpio.util.Constants;
 import org.onosproject.bgpio.util.UnSupportedAttribute;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -38,13 +40,12 @@
 /**
  * Implementation of local node descriptors, remote node descriptors and link descriptors.
  */
-public class BgpLinkLSIdentifier {
+public class BgpLinkLSIdentifier implements Comparable<Object> {
     private static final Logger log = LoggerFactory.getLogger(BgpLinkLSIdentifier.class);
     public static final short IPV4_INTERFACE_ADDRESS_TYPE = 259;
     public static final short IPV4_NEIGHBOR_ADDRESS_TYPE = 260;
     public static final short IPV6_INTERFACE_ADDRESS_TYPE = 261;
     public static final short IPV6_NEIGHBOR_ADDRESS_TYPE = 262;
-    public static final int TYPE_AND_LEN = 4;
 
     private NodeDescriptors localNodeDescriptors;
     private NodeDescriptors remoteNodeDescriptors;
@@ -107,12 +108,13 @@
      */
     public static NodeDescriptors parseNodeDescriptors(ChannelBuffer cb, short desType, byte protocolId)
             throws BgpParseException {
-        ChannelBuffer tempBuf = cb;
+        log.debug("parse Node descriptors");
+        ChannelBuffer tempBuf = cb.copy();
         short type = cb.readShort();
         short length = cb.readShort();
         if (cb.readableBytes() < length) {
             throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR,
-                    tempBuf.readBytes(cb.readableBytes() + TYPE_AND_LEN));
+                    tempBuf.readBytes(cb.readableBytes() + Constants.TYPE_AND_LEN_AS_SHORT));
         }
         NodeDescriptors nodeIdentifier = new NodeDescriptors();
         ChannelBuffer tempCb = cb.readBytes(length);
@@ -138,12 +140,12 @@
         int count = 0;
 
         while (cb.readableBytes() > 0) {
-            ChannelBuffer tempBuf = cb;
+            ChannelBuffer tempBuf = cb.copy();
             short type = cb.readShort();
             short length = cb.readShort();
             if (cb.readableBytes() < length) {
                 throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR,
-                        tempBuf.readBytes(cb.readableBytes() + TYPE_AND_LEN));
+                        tempBuf.readBytes(cb.readableBytes() + Constants.TYPE_AND_LEN_AS_SHORT));
             }
             ChannelBuffer tempCb = cb.readBytes(length);
             switch (type) {
@@ -170,7 +172,7 @@
                     //length + 4 implies data contains type, length and value
                     throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR,
                             BgpErrorType.OPTIONAL_ATTRIBUTE_ERROR, tempBuf.readBytes(length
-                                    + TYPE_AND_LEN));
+                                    + Constants.TYPE_AND_LEN_AS_SHORT));
                 }
                 break;
             default:
@@ -231,8 +233,12 @@
             } else {
                 while (objListIterator.hasNext() && isCommonSubTlv) {
                     BgpValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(linkDescriptor.contains(subTlv),
-                            other.linkDescriptor.contains(subTlv));
+                    if (linkDescriptor.contains(subTlv) && other.linkDescriptor.contains(subTlv)) {
+                        isCommonSubTlv = Objects.equals(linkDescriptor.get(linkDescriptor.indexOf(subTlv)),
+                                         other.linkDescriptor.get(other.linkDescriptor.indexOf(subTlv)));
+                    } else {
+                        isCommonSubTlv = false;
+                    }
                 }
                 return isCommonSubTlv && Objects.equals(this.localNodeDescriptors, other.localNodeDescriptors)
                         && Objects.equals(this.remoteNodeDescriptors, other.remoteNodeDescriptors);
@@ -249,4 +255,42 @@
                 .add("linkDescriptor", linkDescriptor)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        int result = this.localNodeDescriptors.compareTo(((BgpLinkLSIdentifier) o).localNodeDescriptors);
+        if (result != 0) {
+            return result;
+        } else if (this.remoteNodeDescriptors.compareTo(((BgpLinkLSIdentifier) o).remoteNodeDescriptors) != 0) {
+            return this.remoteNodeDescriptors.compareTo(((BgpLinkLSIdentifier) o).remoteNodeDescriptors);
+        } else {
+            int countOtherSubTlv = ((BgpLinkLSIdentifier) o).linkDescriptor.size();
+            int countObjSubTlv = linkDescriptor.size();
+            if (countOtherSubTlv != countObjSubTlv) {
+                if (countOtherSubTlv > countObjSubTlv) {
+                    return 1;
+                } else {
+                    return -1;
+                }
+           }
+            ListIterator<BgpValueType> listIterator = linkDescriptor.listIterator();
+            ListIterator<BgpValueType> listIteratorOther = ((BgpLinkLSIdentifier) o).linkDescriptor.listIterator();
+            while (listIterator.hasNext()) {
+                BgpValueType tlv = listIterator.next();
+                BgpValueType tlv1 = listIteratorOther.next();
+                if (linkDescriptor.contains(tlv) && ((BgpLinkLSIdentifier) o).linkDescriptor.contains(tlv1)) {
+                    int res = linkDescriptor.get(linkDescriptor.indexOf(tlv)).compareTo(
+                            ((BgpLinkLSIdentifier) o).linkDescriptor.get(((BgpLinkLSIdentifier) o).linkDescriptor
+                                    .indexOf(tlv1)));
+                    if (res != 0) {
+                        return res;
+                    }
+                }
+            }
+        }
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java
index 25910a9..6c2c96d 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpNodeLSIdentifier.java
@@ -29,9 +29,9 @@
 /**
  * Implementation of Node Identifier which includes local node descriptor/remote node descriptors.
  */
-public class BgpNodeLSIdentifier {
+public class BgpNodeLSIdentifier implements Comparable<Object> {
 
-    protected static final Logger log = LoggerFactory.getLogger(BgpNodeLSIdentifier.class);
+    private static final Logger log = LoggerFactory.getLogger(BgpNodeLSIdentifier.class);
     private NodeDescriptors nodeDescriptors;
 
     /**
@@ -60,7 +60,8 @@
      */
     public static BgpNodeLSIdentifier parseLocalNodeDescriptors(ChannelBuffer cb, byte protocolId)
             throws BgpParseException {
-        ChannelBuffer tempBuf = cb;
+        log.debug("parse Local node descriptor");
+        ChannelBuffer tempBuf = cb.copy();
         short type = cb.readShort();
         short length = cb.readShort();
         if (cb.readableBytes() < length) {
@@ -110,4 +111,12 @@
                 .add("NodeDescriptors", nodeDescriptors)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return this.nodeDescriptors.compareTo(((BgpNodeLSIdentifier) o).nodeDescriptors);
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java
index 5610696..49cb74b 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixIPv4LSNlriVer4.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.bgpio.protocol.linkstate;
 
-import java.util.LinkedList;
+import java.util.List;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.bgpio.exceptions.BgpParseException;
@@ -188,7 +188,7 @@
     }
 
     @Override
-    public LinkedList<BgpValueType> getPrefixdescriptor() {
+    public List<BgpValueType> getPrefixdescriptor() {
         return this.bgpPrefixLSIdentifier.getPrefixdescriptor();
     }
 
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java
index f6aaea6..d3beaae 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/BgpPrefixLSIdentifier.java
@@ -18,6 +18,8 @@
 
 import java.util.Iterator;
 import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -36,12 +38,12 @@
 /**
  * Provides Implementation of Local node descriptors and prefix descriptors.
  */
-public class BgpPrefixLSIdentifier {
+public class BgpPrefixLSIdentifier implements Comparable<Object> {
 
     protected static final Logger log = LoggerFactory.getLogger(BgpPrefixLSIdentifier.class);
     public static final int TYPE_AND_LEN = 4;
     private NodeDescriptors localNodeDescriptors;
-    private LinkedList<BgpValueType> prefixDescriptor;
+    private List<BgpValueType> prefixDescriptor;
 
     /**
      * Resets parameters.
@@ -57,7 +59,7 @@
      * @param localNodeDescriptors Local node descriptors
      * @param prefixDescriptor Prefix Descriptors
      */
-    public BgpPrefixLSIdentifier(NodeDescriptors localNodeDescriptors, LinkedList<BgpValueType> prefixDescriptor) {
+    public BgpPrefixLSIdentifier(NodeDescriptors localNodeDescriptors, List<BgpValueType> prefixDescriptor) {
         this.localNodeDescriptors = localNodeDescriptors;
         this.prefixDescriptor = prefixDescriptor;
     }
@@ -77,7 +79,7 @@
         localNodeDescriptors = parseLocalNodeDescriptors(cb, protocolId);
 
         //Parse Prefix descriptor
-        LinkedList<BgpValueType> prefixDescriptor = new LinkedList<>();
+        List<BgpValueType> prefixDescriptor = new LinkedList<>();
         prefixDescriptor = parsePrefixDescriptors(cb);
         return new BgpPrefixLSIdentifier(localNodeDescriptors, prefixDescriptor);
     }
@@ -92,7 +94,7 @@
      */
     public static NodeDescriptors parseLocalNodeDescriptors(ChannelBuffer cb, byte protocolId)
                                                                  throws BgpParseException {
-        ChannelBuffer tempBuf = cb;
+        ChannelBuffer tempBuf = cb.copy();
         short type = cb.readShort();
         short length = cb.readShort();
         if (cb.readableBytes() < length) {
@@ -119,7 +121,7 @@
      * @return list of prefix descriptors
      * @throws BgpParseException while parsing list of prefix descriptors
      */
-    public static LinkedList<BgpValueType> parsePrefixDescriptors(ChannelBuffer cb) throws BgpParseException {
+    public static List<BgpValueType> parsePrefixDescriptors(ChannelBuffer cb) throws BgpParseException {
         LinkedList<BgpValueType> prefixDescriptor = new LinkedList<>();
         BgpValueType tlv = null;
         boolean isIpReachInfo = false;
@@ -127,7 +129,7 @@
         int count = 0;
 
         while (cb.readableBytes() > 0) {
-            ChannelBuffer tempBuf = cb;
+            ChannelBuffer tempBuf = cb.copy();
             short type = cb.readShort();
             short length = cb.readShort();
             if (cb.readableBytes() < length) {
@@ -180,7 +182,7 @@
      *
      * @return Prefix descriptors
      */
-    public LinkedList<BgpValueType> getPrefixdescriptor() {
+    public List<BgpValueType> getPrefixdescriptor() {
         return this.prefixDescriptor;
     }
 
@@ -209,8 +211,12 @@
             } else {
                 while (objListIterator.hasNext() && isCommonSubTlv) {
                     BgpValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(prefixDescriptor.contains(subTlv),
-                            other.prefixDescriptor.contains(subTlv));
+                    if (prefixDescriptor.contains(subTlv) && other.prefixDescriptor.contains(subTlv)) {
+                        isCommonSubTlv = Objects.equals(prefixDescriptor.get(prefixDescriptor.indexOf(subTlv)),
+                                         other.prefixDescriptor.get(other.prefixDescriptor.indexOf(subTlv)));
+                    } else {
+                        isCommonSubTlv = false;
+                    }
                 }
                 return isCommonSubTlv && Objects.equals(this.localNodeDescriptors, other.localNodeDescriptors);
             }
@@ -225,4 +231,41 @@
                 .add("prefixDescriptor", prefixDescriptor)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        int result = this.localNodeDescriptors.compareTo(((BgpPrefixLSIdentifier) o).localNodeDescriptors);
+        if (result != 0) {
+            return result;
+        } else {
+            int countOtherSubTlv = ((BgpPrefixLSIdentifier) o).prefixDescriptor.size();
+            int countObjSubTlv = prefixDescriptor.size();
+            if (countOtherSubTlv != countObjSubTlv) {
+                if (countOtherSubTlv > countObjSubTlv) {
+                    return 1;
+                } else {
+                    return -1;
+                }
+           }
+
+            ListIterator<BgpValueType> listIterator = prefixDescriptor.listIterator();
+            ListIterator<BgpValueType> listIteratorOther = ((BgpPrefixLSIdentifier) o).prefixDescriptor.listIterator();
+            while (listIterator.hasNext()) {
+                BgpValueType tlv = listIterator.next();
+                BgpValueType tlv1 = listIteratorOther.next();
+                if (prefixDescriptor.contains(tlv) && ((BgpPrefixLSIdentifier) o).prefixDescriptor.contains(tlv1)) {
+                    int res = prefixDescriptor.get(prefixDescriptor.indexOf(tlv)).compareTo(
+                            ((BgpPrefixLSIdentifier) o).prefixDescriptor
+                                    .get(((BgpPrefixLSIdentifier) o).prefixDescriptor.indexOf(tlv1)));
+                    if (res != 0) {
+                        return res;
+                    }
+                }
+            }
+        }
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java
index 0581b70..7fb1b31 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/linkstate/NodeDescriptors.java
@@ -18,6 +18,8 @@
 
 import java.util.Iterator;
 import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -57,7 +59,7 @@
                    Figure : Local or Remote Node Descriptors TLV format
      */
 
-    protected static final Logger log = LoggerFactory.getLogger(NodeDescriptors.class);
+    private static final Logger log = LoggerFactory.getLogger(NodeDescriptors.class);
 
     public static final short LOCAL_NODE_DES_TYPE = 256;
     public static final short REMOTE_NODE_DES_TYPE = 257;
@@ -71,7 +73,7 @@
     public static final int ISISPSEUDONODE_LEN = 7;
     public static final int OSPFNONPSEUDONODE_LEN = 4;
     public static final int OSPFPSEUDONODE_LEN = 8;
-    private LinkedList<BgpValueType> subTlvs;
+    private List<BgpValueType> subTlvs;
     private short deslength;
     private short desType;
 
@@ -91,7 +93,7 @@
      * @param deslength Descriptors length
      * @param desType local node descriptor or remote node descriptor type
      */
-    public NodeDescriptors(LinkedList<BgpValueType> subTlvs, short deslength, short desType) {
+    public NodeDescriptors(List<BgpValueType> subTlvs, short deslength, short desType) {
         this.subTlvs = subTlvs;
         this.deslength = deslength;
         this.desType = desType;
@@ -102,7 +104,7 @@
      *
      * @return subTlvs list of subTlvs
      */
-    public LinkedList<BgpValueType> getSubTlvs() {
+    public List<BgpValueType> getSubTlvs() {
         return subTlvs;
     }
 
@@ -130,7 +132,12 @@
             } else {
                 while (objListIterator.hasNext() && isCommonSubTlv) {
                     BgpValueType subTlv = objListIterator.next();
-                    isCommonSubTlv = Objects.equals(subTlvs.contains(subTlv), other.subTlvs.contains(subTlv));
+                    if (subTlvs.contains(subTlv) && other.subTlvs.contains(subTlv)) {
+                        isCommonSubTlv = Objects.equals(subTlvs.get(subTlvs.indexOf(subTlv)),
+                                         other.subTlvs.get(other.subTlvs.indexOf(subTlv)));
+                    } else {
+                        isCommonSubTlv = false;
+                    }
                 }
                 return isCommonSubTlv;
             }
@@ -150,12 +157,12 @@
      */
     public static NodeDescriptors read(ChannelBuffer cb, short desLength, short desType, byte protocolId)
             throws BgpParseException {
-        LinkedList<BgpValueType> subTlvs;
-        subTlvs = new LinkedList<>();
+        log.debug("Read NodeDescriptor");
+        List<BgpValueType> subTlvs = new LinkedList<>();
         BgpValueType tlv = null;
 
         while (cb.readableBytes() > 0) {
-            ChannelBuffer tempBuf = cb;
+            ChannelBuffer tempBuf = cb.copy();
             short type = cb.readShort();
             short length = cb.readShort();
             if (cb.readableBytes() < length) {
@@ -222,4 +229,34 @@
                 .add("subTlvs", subTlvs)
                 .toString();
     }
+
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        ListIterator<BgpValueType> listIterator = subTlvs.listIterator();
+        ListIterator<BgpValueType> listIteratorOther = ((NodeDescriptors) o).subTlvs.listIterator();
+        int countOtherSubTlv = ((NodeDescriptors) o).subTlvs.size();
+        int countObjSubTlv = subTlvs.size();
+        if (countOtherSubTlv != countObjSubTlv) {
+             if (countOtherSubTlv > countObjSubTlv) {
+                 return 1;
+             } else {
+                 return -1;
+             }
+        } else {
+            while (listIterator.hasNext()) {
+            BgpValueType tlv = listIterator.next();
+                BgpValueType tlv1 = listIteratorOther.next();
+                if (subTlvs.contains(tlv) && ((NodeDescriptors) o).subTlvs.contains(tlv1)) {
+                    int result = subTlvs.get(subTlvs.indexOf(tlv)).compareTo(
+                            ((NodeDescriptors) o).subTlvs.get(((NodeDescriptors) o).subTlvs.indexOf(tlv1)));
+                    if (result != 0) {
+                        return result;
+                    }
+                }
+            }
+        }
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java
index 7b5cabe..842c6f0 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AreaIDTlv.java
@@ -18,8 +18,6 @@
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -38,8 +36,6 @@
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      */
 
-    protected static final Logger log = LoggerFactory.getLogger(AreaIDTlv.class);
-
     public static final short TYPE = 514;
     public static final short LENGTH = 4;
 
@@ -116,6 +112,14 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return ((Integer) (this.areaID)).compareTo((Integer) (((AreaIDTlv) o).areaID));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java
index c4409f4..3ceca2c 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/As4Path.java
@@ -166,4 +166,10 @@
         //Not required to Implement as of now
         return 0;
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java
index ef63647..2a050c4 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AsPath.java
@@ -205,4 +205,10 @@
         //Not required to Implement as of now
         return 0;
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java
index def2c3f..119926c 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/AutonomousSystemTlv.java
@@ -18,8 +18,6 @@
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -38,8 +36,6 @@
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      */
 
-    protected static final Logger log = LoggerFactory.getLogger(AutonomousSystemTlv.class);
-
     public static final short TYPE = 512;
     public static final short LENGTH = 4;
 
@@ -116,6 +112,14 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return ((Integer) (this.asNum)).compareTo((Integer) (((AutonomousSystemTlv) o).asNum));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.java
index e0964ac..58645d4 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpLSIdentifierTlv.java
@@ -19,8 +19,6 @@
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -39,30 +37,28 @@
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      */
 
-    protected static final Logger log = LoggerFactory.getLogger(BgpLSIdentifierTlv.class);
-
     public static final short TYPE = 513;
     public static final short LENGTH = 4;
 
-    private final int bgpLSIdentifier;
+    private final int bgpLsIdentifier;
 
     /**
-     * Constructor to initialize bgpLSIdentifier.
+     * Constructor to initialize bgpLsIdentifier.
      *
-     * @param bgpLSIdentifier BGPLS-Identifier
+     * @param bgpLsIdentifier BGPLS-Identifier
      */
-    public BgpLSIdentifierTlv(int bgpLSIdentifier) {
-        this.bgpLSIdentifier = bgpLSIdentifier;
+    public BgpLSIdentifierTlv(int bgpLsIdentifier) {
+        this.bgpLsIdentifier = bgpLsIdentifier;
     }
 
     /**
-     * Returns object of this class with specified rbgpLSIdentifier.
+     * Returns object of this class with specified bgpLsIdentifier.
      *
-     * @param bgpLSIdentifier BGPLS-Identifier
+     * @param bgpLsIdentifier BGPLS-Identifier
      * @return BGPLS-Identifier
      */
-    public static BgpLSIdentifierTlv of(final int bgpLSIdentifier) {
-        return new BgpLSIdentifierTlv(bgpLSIdentifier);
+    public static BgpLSIdentifierTlv of(final int bgpLsIdentifier) {
+        return new BgpLSIdentifierTlv(bgpLsIdentifier);
     }
 
     /**
@@ -70,13 +66,13 @@
      *
      * @return opaque value of BGPLS-Identifier
      */
-    public int getBgpLSIdentifier() {
-        return bgpLSIdentifier;
+    public int getBgpLsIdentifier() {
+        return bgpLsIdentifier;
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(bgpLSIdentifier);
+        return Objects.hash(bgpLsIdentifier);
     }
 
     @Override
@@ -87,7 +83,7 @@
 
         if (obj instanceof BgpLSIdentifierTlv) {
             BgpLSIdentifierTlv other = (BgpLSIdentifierTlv) obj;
-            return Objects.equals(bgpLSIdentifier, other.bgpLSIdentifier);
+            return Objects.equals(bgpLsIdentifier, other.bgpLsIdentifier);
         }
         return false;
     }
@@ -97,7 +93,7 @@
         int iLenStartIndex = c.writerIndex();
         c.writeShort(TYPE);
         c.writeShort(LENGTH);
-        c.writeInt(bgpLSIdentifier);
+        c.writeInt(bgpLsIdentifier);
         return c.writerIndex() - iLenStartIndex;
     }
 
@@ -117,11 +113,19 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return ((Integer) (this.bgpLsIdentifier)).compareTo((Integer) (((BgpLSIdentifierTlv) o).bgpLsIdentifier));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
                 .add("Length", LENGTH)
-                .add("Value", bgpLSIdentifier)
+                .add("Value", bgpLsIdentifier)
                 .toString();
     }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java
old mode 100755
new mode 100644
index fbf53b3..af7f4b7
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/BgpValueType.java
@@ -36,4 +36,12 @@
      * @return length written to channel buffer
      */
     int write(ChannelBuffer cb);
+
+    /**
+     * Compares two objects.
+     *
+     * @param o object
+     * @return result after comparing two objects
+     */
+    int compareTo(Object o);
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.java
old mode 100755
new mode 100644
index 392dba2..59db331
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/FourOctetAsNumCapabilityTlv.java
@@ -111,4 +111,10 @@
                 .add("Length", LENGTH)

                 .add("Value", rawValue).toString();

     }

+

+    @Override

+    public int compareTo(Object o) {

+        // TODO Auto-generated method stub

+        return 0;

+    }

 }

diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java
index 80f02ce..d97537e 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPReachabilityInformationTlv.java
@@ -15,14 +15,13 @@
  */
 package org.onosproject.bgpio.types;
 
+import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onlab.packet.IpPrefix;
 import org.onosproject.bgpio.util.Validation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -45,10 +44,9 @@
              Figure 14: IP Reachability Information TLV Format
     */
 
-    protected static final Logger log = LoggerFactory.getLogger(IPReachabilityInformationTlv.class);
-
     public static final short TYPE = 265;
     public static final int ONE_BYTE_LEN = 8;
+
     private byte prefixLen;
     private byte[] ipPrefix;
     public short length;
@@ -146,6 +144,16 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        ByteBuffer value1 = ByteBuffer.wrap(this.ipPrefix);
+        ByteBuffer value2 = ByteBuffer.wrap(((IPReachabilityInformationTlv) o).ipPrefix);
+        return value1.compareTo(value2);
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.java
index d83bb1f..4efde70 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv4AddressTlv.java
@@ -22,8 +22,6 @@
 import org.onlab.packet.Ip4Address;
 import org.onosproject.bgpio.exceptions.BgpParseException;
 import org.onosproject.bgpio.util.Validation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
@@ -32,7 +30,6 @@
  * Provides Implementation of IPv4AddressTlv.
  */
 public class IPv4AddressTlv implements BgpValueType {
-    private static final Logger log = LoggerFactory.getLogger(IPv4AddressTlv.class);
     private static final int LENGTH = 4;
 
     private Ip4Address address;
@@ -118,6 +115,14 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return ((Ip4Address) (this.address)).compareTo((Ip4Address) (((IPv4AddressTlv) o).address));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("type", type)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.java
index a87825f..087cd5c 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IPv6AddressTlv.java
@@ -22,8 +22,6 @@
 import org.onlab.packet.Ip6Address;
 import org.onosproject.bgpio.exceptions.BgpParseException;
 import org.onosproject.bgpio.util.Validation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
@@ -32,7 +30,6 @@
  * Provides Implementation of IPv6AddressTlv.
  */
 public class IPv6AddressTlv implements BgpValueType {
-    private static final Logger log = LoggerFactory.getLogger(IPv6AddressTlv.class);
     private static final int LENGTH = 16;
 
     private final Ip6Address address;
@@ -118,6 +115,14 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return ((Ip6Address) (this.address)).compareTo((Ip6Address) (((IPv6AddressTlv) o).address));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("type", type)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java
index e6b9d60..427aa92 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsNonPseudonode.java
@@ -15,12 +15,11 @@
  */
 package org.onosproject.bgpio.types;
 
+import java.nio.ByteBuffer;
 import java.util.Arrays;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.bgpio.protocol.IGPRouterID;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -28,8 +27,6 @@
  * Provides Implementation of IsIsNonPseudonode Tlv.
  */
 public class IsIsNonPseudonode implements IGPRouterID, BgpValueType {
-    private static final Logger log = LoggerFactory.getLogger(IsIsNonPseudonode.class);
-
     public static final short TYPE = 515;
     public static final short LENGTH = 6;
 
@@ -107,6 +104,16 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        ByteBuffer value1 = ByteBuffer.wrap(this.isoNodeID);
+        ByteBuffer value2 = ByteBuffer.wrap(((IsIsNonPseudonode) o).isoNodeID);
+        return value1.compareTo(value2);
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java
index bbdbe5b..094c438 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/IsIsPseudonode.java
@@ -15,13 +15,12 @@
  */
 package org.onosproject.bgpio.types;
 
+import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.bgpio.protocol.IGPRouterID;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -29,8 +28,6 @@
  * Provides implementation of IsIsPseudonode Tlv.
  */
 public class IsIsPseudonode implements IGPRouterID, BgpValueType {
-    private static final Logger log = LoggerFactory.getLogger(IsIsPseudonode.class);
-
     public static final short TYPE = 515;
     public static final short LENGTH = 7;
 
@@ -125,6 +122,19 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        ByteBuffer value1 = ByteBuffer.wrap(this.isoNodeID);
+        ByteBuffer value2 = ByteBuffer.wrap(((IsIsPseudonode) o).isoNodeID);
+        if (value1.compareTo(value2) != 0) {
+            return value1.compareTo(value2);
+        }
+        return ((Byte) (this.psnIdentifier)).compareTo((Byte) (((IsIsPseudonode) o).psnIdentifier));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.java
index a970082..0c41243 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkLocalRemoteIdentifiersTlv.java
@@ -18,8 +18,6 @@
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -27,7 +25,6 @@
  * Provides Implementation of Link Local/Remote IdentifiersTlv.
  */
 public class LinkLocalRemoteIdentifiersTlv implements BgpValueType {
-    private static final Logger log = LoggerFactory.getLogger(LinkLocalRemoteIdentifiersTlv.class);
     public static final short TYPE = 258;
     private static final int LENGTH = 8;
 
@@ -120,6 +117,20 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        int result = ((Integer) (this.linkLocalIdentifer))
+                .compareTo((Integer) (((LinkLocalRemoteIdentifiersTlv) o).linkLocalIdentifer));
+        if (result != 0) {
+            return result;
+        }
+        return ((Integer) (this.linkRemoteIdentifer))
+                .compareTo((Integer) (((LinkLocalRemoteIdentifiersTlv) o).linkRemoteIdentifer));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("TYPE", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java
old mode 100755
new mode 100644
index e55b90f..cdf6ebe
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LinkStateAttributes.java
@@ -305,4 +305,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("linkStateAttribList", linkStateAttribList).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java
index 5576a60..36793c1 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/LocalPref.java
@@ -112,4 +112,10 @@
         //Not to implement as of now
         return 0;
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java
index 4ce73be..7f1ab53 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Med.java
@@ -112,4 +112,10 @@
         //Not to implement as of now
         return 0;
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java
index 1f39c80..689f30e 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpReachNlri.java
@@ -216,4 +216,10 @@
                 .add("length", length)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java
index d719c65..f354b3e 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MpUnReachNlri.java
@@ -193,6 +193,12 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("mpReachNlri", mpUnReachNlri)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.java
old mode 100755
new mode 100644
index af4d2a3..7082483
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/MultiProtocolExtnCapabilityTlv.java
@@ -157,4 +157,10 @@
                 .add("Reserved", res)

                 .add("SAFI", safi).toString();

     }

+

+    @Override

+    public int compareTo(Object o) {

+        // TODO Auto-generated method stub

+        return 0;

+    }

 }

diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java
index caf27e3..806efe5 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/NextHop.java
@@ -130,4 +130,10 @@
                 .add("nextHop", nextHop)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java
index 8fc41dc..d281a4e 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFNonPseudonode.java
@@ -20,8 +20,6 @@
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.bgpio.protocol.IGPRouterID;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -29,9 +27,6 @@
  * Provides implementation of OSPFNonPseudonode Tlv.
  */
 public class OSPFNonPseudonode implements IGPRouterID, BgpValueType {
-
-    protected static final Logger log = LoggerFactory.getLogger(OSPFNonPseudonode.class);
-
     public static final short TYPE = 515;
     public static final short LENGTH = 4;
 
@@ -108,6 +103,14 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return ((Integer) (this.routerID)).compareTo((Integer) (((OSPFNonPseudonode) o).routerID));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.java
index 3dfcc42..0d17651 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFPseudonode.java
@@ -20,8 +20,6 @@
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onlab.packet.Ip4Address;
 import org.onosproject.bgpio.protocol.IGPRouterID;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -29,9 +27,6 @@
  * Provides implementation of OSPFPseudonode Tlv.
  */
 public class OSPFPseudonode implements IGPRouterID, BgpValueType {
-
-    protected static final Logger log = LoggerFactory.getLogger(OSPFPseudonode.class);
-
     public static final short TYPE = 515;
     public static final short LENGTH = 8;
 
@@ -114,6 +109,18 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        int result = ((Integer) (this.routerID)).compareTo((Integer) (((OSPFPseudonode) o).routerID));
+        if (result != 0) {
+            return this.drInterface.compareTo(((OSPFPseudonode) o).drInterface);
+        }
+        return result;
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.java
index cd44d97..be321c9 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/OSPFRouteTypeTlv.java
@@ -19,8 +19,6 @@
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.bgpio.exceptions.BgpParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.MoreObjects;
 
@@ -41,8 +39,6 @@
                    Figure : OSPF Route Type TLV Format
     */
 
-    protected static final Logger log = LoggerFactory.getLogger(OSPFRouteTypeTlv.class);
-
     public static final short TYPE = 264;
     public static final short LENGTH = 1;
     public static final int INTRA_AREA_TYPE = 1;
@@ -51,15 +47,16 @@
     public static final short EXTERNAL_TYPE_2 = 4;
     public static final short NSSA_TYPE_1 = 5;
     public static final short NSSA_TYPE_2 = 6;
+
     private final byte routeType;
 
     /**
      * Enum for Route Type.
      */
-    public enum ROUTETYPE {
+    public enum RouteType {
         Intra_Area(1), Inter_Area(2), External_1(3), External_2(4), NSSA_1(5), NSSA_2(6);
         int value;
-        ROUTETYPE(int val) {
+        RouteType(int val) {
             value = val;
         }
         public byte getType() {
@@ -92,20 +89,20 @@
      * @return RouteType
      * @throws BgpParseException if routeType is not matched
      */
-    public ROUTETYPE getValue() throws BgpParseException {
+    public RouteType getValue() throws BgpParseException {
         switch (routeType) {
         case INTRA_AREA_TYPE:
-            return ROUTETYPE.Intra_Area;
+            return RouteType.Intra_Area;
         case INTER_AREA_TYPE:
-            return ROUTETYPE.Inter_Area;
+            return RouteType.Inter_Area;
         case EXTERNAL_TYPE_1:
-            return ROUTETYPE.External_1;
+            return RouteType.External_1;
         case EXTERNAL_TYPE_2:
-            return ROUTETYPE.External_2;
+            return RouteType.External_2;
         case NSSA_TYPE_1:
-            return ROUTETYPE.NSSA_1;
+            return RouteType.NSSA_1;
         case NSSA_TYPE_2:
-            return ROUTETYPE.NSSA_2;
+            return RouteType.NSSA_2;
         default:
             throw new BgpParseException(BgpErrorType.UPDATE_MESSAGE_ERROR, (byte) 0, null);
         }
@@ -153,6 +150,14 @@
     }
 
     @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        return ((Byte) (this.routeType)).compareTo((Byte) (((OSPFRouteTypeTlv) o).routeType));
+    }
+
+    @Override
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .add("Type", TYPE)
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java
index 763a15b..d642d83 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/Origin.java
@@ -159,4 +159,10 @@
                 .add("origin", origin)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.java
index d026709..37632ad 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/RouteDistinguisher.java
@@ -18,10 +18,12 @@
 
 import org.jboss.netty.buffer.ChannelBuffer;
 
+import com.google.common.base.MoreObjects;
+
 /**
  * Implementation of RouteDistinguisher.
  */
-public class RouteDistinguisher {
+public class RouteDistinguisher implements Comparable<RouteDistinguisher> {
 
     private long routeDistinguisher;
 
@@ -59,4 +61,19 @@
     public long getRouteDistinguisher() {
         return this.routeDistinguisher;
     }
+
+    @Override
+    public int compareTo(RouteDistinguisher rd) {
+        if (this.equals(rd)) {
+            return 0;
+        }
+        return ((Long) (this.getRouteDistinguisher())).compareTo((Long) (rd.getRouteDistinguisher()));
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .add("routeDistinguisher", routeDistinguisher)
+                .toString();
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.java
index 2351cc5..e0fef7c 100755
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeFlagBitTlv.java
@@ -190,4 +190,10 @@
                 .add("bExternalBit", bExternalBit).add("bAbrBit", bAbrBit)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.java
old mode 100755
new mode 100644
index b23d646..0435a65
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeIsIsAreaId.java
@@ -127,4 +127,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("isisAreaId", isisAreaId).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java
index caf73a0..31d855d 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeMultiTopologyId.java
@@ -17,6 +17,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -134,4 +135,30 @@
                 .add("multiTopologyId", multiTopologyId)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        if (this.equals(o)) {
+            return 0;
+        }
+        int countOtherSubTlv = ((BgpAttrNodeMultiTopologyId) o).multiTopologyId.size();
+        int countObjSubTlv = multiTopologyId.size();
+        if (countOtherSubTlv != countObjSubTlv) {
+            if (countOtherSubTlv > countObjSubTlv) {
+                return 1;
+            } else {
+                return -1;
+            }
+       }
+        ListIterator<Short> listIterator = multiTopologyId.listIterator();
+        ListIterator<Short> listIteratorOther = ((BgpAttrNodeMultiTopologyId) o).multiTopologyId.listIterator();
+        while (listIterator.hasNext()) {
+            short id = listIterator.next();
+            short id1 = listIteratorOther.next();
+            if (((Short) id).compareTo((Short) id1) != 0) {
+                return ((Short) id).compareTo((Short) id1);
+            }
+        }
+        return 0;
+    }
 }
\ No newline at end of file
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.java
old mode 100755
new mode 100644
index 11c99ba..2e1c7a0
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrNodeName.java
@@ -126,4 +126,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("nodeName", nodeName).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.java
old mode 100755
new mode 100644
index 8e800cb..545755a
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrOpaqueNode.java
@@ -130,4 +130,9 @@
                 .add("opaqueNodeAttribute", opaqueNodeAttribute).toString();
     }
 
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.java
old mode 100755
new mode 100644
index 63937ba..f3c0d17
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV4.java
@@ -131,4 +131,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("ip4RouterId", ip4RouterId).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.java
old mode 100755
new mode 100644
index 754f838..648fd56
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpAttrRouterIdV6.java
@@ -134,4 +134,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("ip6RouterId", ip6RouterId).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java
old mode 100755
new mode 100644
index 6063ba6..5721cf6
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIgpMetric.java
@@ -169,4 +169,10 @@
                 .add("igpMetric", igpMetric).add("igpMetricLen", igpMetricLen)
                 .toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.java
index fa391a9..448f1e5 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrIsIsAdminstGrp.java
@@ -127,4 +127,10 @@
         return MoreObjects.toStringHelper(getClass())
                 .add("isisAdminGrp", isisAdminGrp).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.java
index b747536..2711ca9 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMaxLinkBandwidth.java
@@ -147,4 +147,10 @@
         return MoreObjects.toStringHelper(getClass())
                 .add("maxBandwidth", maxBandwidth).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java
old mode 100755
new mode 100644
index d18e8e2..2bf1a59
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrMplsProtocolMask.java
@@ -149,4 +149,10 @@
         return MoreObjects.toStringHelper(getClass())
                 .add("bLdp", bLdp).add("bRsvpTe", bRsvpTe).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java
old mode 100755
new mode 100644
index 61993f4..856ffc3
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrName.java
@@ -125,4 +125,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("linkName", linkName).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java
old mode 100755
new mode 100644
index e12f5fb..275b85b
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrOpaqLnkAttrib.java
@@ -130,4 +130,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("opaqueLinkAttribute", opaqueLinkAttribute).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java
old mode 100755
new mode 100644
index f56a3f90..59011d9
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrProtectionType.java
@@ -237,4 +237,10 @@
                 .add("bDedOnePlusOne", bDedOnePlusOne)
                 .add("bEnhanced", bEnhanced).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.java
old mode 100755
new mode 100644
index dde1fba..4a6f23f
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrSrlg.java
@@ -127,4 +127,10 @@
     public String toString() {
         return MoreObjects.toStringHelper(getClass()).omitNullValues().add("sRlg", sRlg).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.java
old mode 100755
new mode 100644
index a7e53a5..1ae7ecc
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrTeDefaultMetric.java
@@ -129,4 +129,10 @@
         return MoreObjects.toStringHelper(getClass())
                 .add("linkTEMetric", linkTeMetric).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java
index 3fcfafc..c927eea 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpLinkAttrUnRsrvdLinkBandwidth.java
@@ -154,4 +154,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("maxUnResBandwidth", maxUnResBandwidth).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java
old mode 100755
new mode 100644
index bbe3a10..a2d7c57
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrExtRouteTag.java
@@ -136,4 +136,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("pfxExtRouteTag", pfxExtRouteTag).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.java
old mode 100755
new mode 100644
index dec3804..4e84191
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrIgpFlags.java
@@ -195,4 +195,10 @@
                 .add("bOspfLclAddrBit", bOspfLclAddrBit)
                 .add("bOspfNSSABit", bOspfNSSABit).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.java
old mode 100755
new mode 100644
index 403d182..1886102
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrMetric.java
@@ -128,4 +128,10 @@
         return MoreObjects.toStringHelper(getClass())
                 .add("linkPfxMetric", linkPfxMetric).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.java
old mode 100755
new mode 100644
index f8df22f..6f7a74b
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOpaqueData.java
@@ -131,4 +131,9 @@
                 .toString();
     }
 
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java
old mode 100755
new mode 100644
index 8ac3da0..4e9db1e
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrOspfFwdAddr.java
@@ -184,4 +184,10 @@
                     .add("ip6RouterId", ip6RouterId).toString();
         }
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java
old mode 100755
new mode 100644
index cf5156a..3894c00
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/types/attr/BgpPrefixAttrRouteTag.java
@@ -133,4 +133,10 @@
         return MoreObjects.toStringHelper(getClass()).omitNullValues()
                 .add("pfxRouteTag", pfxRouteTag).toString();
     }
+
+    @Override
+    public int compareTo(Object o) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }