Added equals and hashCode to the Interface class
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
index 0e53c02..97b3a68 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
@@ -493,7 +493,7 @@
 		Map<Long, Interface> srcInterfaces = new HashMap<Long, Interface>();
 		for (Interface intf : interfaces.values()) {
 			if (!srcInterfaces.containsKey(intf.getDpid()) 
-					&& intf != egressInterface) {
+					&& !intf.equals(egressInterface)) {
 				srcInterfaces.put(intf.getDpid(), intf);
 			}
 		}
@@ -695,7 +695,7 @@
 		List<PushedFlowMod> pushedFlows = new ArrayList<PushedFlowMod>();
 		
 		for (Interface srcInterface : interfaces.values()) {
-			if (dstInterface.getName().equals(srcInterface.getName())){
+			if (dstInterface.equals(srcInterface)){
 				continue;
 			}
 			
@@ -1085,7 +1085,7 @@
 	private void checkTopologyReady(){
 		for (Interface dstInterface : interfaces.values()) {
 			for (Interface srcInterface : interfaces.values()) {			
-				if (dstInterface == srcInterface) {
+				if (dstInterface.equals(srcInterface)) {
 					continue;
 				}
 				
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/Interface.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Interface.java
index 48b60d8..5db8f0a 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/Interface.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Interface.java
@@ -59,4 +59,31 @@
 	public int getPrefixLength() {
 		return prefixLength;
 	}
+	
+	@Override
+	public boolean equals(Object other) {
+		if (other == null || !(other instanceof Interface)) {
+			return false;
+		}
+		
+		Interface otherInterface = (Interface)other;
+		
+		//Don't check switchPort as it's comprised of dpid and port
+		return (name.equals(otherInterface.name)) &&
+				(dpid == otherInterface.dpid) &&
+				(port == otherInterface.port) &&
+				(ipAddress.equals(otherInterface.ipAddress)) &&
+				(prefixLength == otherInterface.prefixLength);
+	}
+	
+	@Override
+	public int hashCode() {
+		int hash = 17;
+		hash = 31 * hash + name.hashCode();
+		hash = 31 * hash + (int)(dpid ^ dpid >>> 32);
+		hash = 31 * hash + (int)port;
+		hash = 31 * hash + ipAddress.hashCode();
+		hash = 31 * hash + prefixLength;
+		return hash;
+	}
 }