equals for {Device,Port,Link,Host}Description

Change-Id: Ia69a469ed7b3ef183e45b3fb4d110edcbb4f3aad
diff --git a/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java b/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java
index 891eb65..cba1764 100644
--- a/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/link/DefaultLinkDescription.java
@@ -20,6 +20,7 @@
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.Link;
 import org.onosproject.net.SparseAnnotations;
+import com.google.common.base.Objects;
 
 /**
  * Default implementation of immutable link description entity.
@@ -70,4 +71,23 @@
                 .add("type", type()).toString();
     }
 
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(super.hashCode(), src, dst, type);
+    }
+
+    @Override
+    public boolean equals(Object object) {
+        if (object != null && getClass() == object.getClass()) {
+            if (!super.equals(object)) {
+                return false;
+            }
+            DefaultLinkDescription that = (DefaultLinkDescription) object;
+            return Objects.equal(this.src, that.src)
+                    && Objects.equal(this.dst, that.dst)
+                    && Objects.equal(this.type, that.type);
+        }
+        return false;
+    }
+
 }