[ospfd] compare ifIndex too when matching paths

ospf_path_lookup(), ospf_route_match_same() and
ospf_ase_route_match_same() needs to
compare if the interface matches too.
diff --git a/ospfd/ospf_ase.c b/ospfd/ospf_ase.c
index 3eb29f8..044f97c 100644
--- a/ospfd/ospf_ase.c
+++ b/ospfd/ospf_ase.c
@@ -593,6 +593,8 @@
        
        if (! IPV4_ADDR_SAME (&op->nexthop, &newop->nexthop))
 	 return 0;
+       if (op->oi->ifp->ifindex != newop->oi->ifp->ifindex)
+	 return 0;
      }
    return 1;
 }
diff --git a/ospfd/ospf_route.c b/ospfd/ospf_route.c
index 50fba75..0829e8e 100644
--- a/ospfd/ospf_route.c
+++ b/ospfd/ospf_route.c
@@ -165,6 +165,8 @@
 
 	       if (! IPV4_ADDR_SAME (&op->nexthop, &newop->nexthop))
 		 return 0;
+	       if (op->oi->ifp->ifindex != newop->oi->ifp->ifindex)
+		 return 0;
 	     }
 	   return 1;
 	 }
@@ -827,10 +829,15 @@
   struct ospf_path *op;
 
   for (ALL_LIST_ELEMENTS_RO (plist, node, op))
-    if (IPV4_ADDR_SAME (&op->nexthop, &path->nexthop) &&
-        IPV4_ADDR_SAME (&op->adv_router, &path->adv_router))
-      return op;
-
+  {
+    if (!IPV4_ADDR_SAME (&op->nexthop, &path->nexthop))
+      continue;
+    if (!IPV4_ADDR_SAME (&op->adv_router, &path->adv_router))
+      continue;
+    if (op->oi->ifp->ifindex != path->oi->ifp->ifindex)
+      continue;
+    return op;
+  }
   return NULL;
 }