]> git.puffer.fish Git - matthieu/frr.git/commitdiff
[ospfd] compare ifIndex too when matching paths
authorJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
Sun, 1 Feb 2009 10:12:11 +0000 (11:12 +0100)
committerPaul Jakma <paul@quagga.net>
Thu, 25 Jun 2009 14:36:08 +0000 (15:36 +0100)
ospf_path_lookup(), ospf_route_match_same() and
ospf_ase_route_match_same() needs to
compare if the interface matches too.

ospfd/ospf_ase.c
ospfd/ospf_route.c

index 3eb29f8acfc777868d974f4a041a6b33ff5552da..044f97c6652a4a00d012f747fa437427e7e4f339 100644 (file)
@@ -593,6 +593,8 @@ ospf_ase_route_match_same (struct route_table *rt, struct prefix *prefix,
        
        if (! IPV4_ADDR_SAME (&op->nexthop, &newop->nexthop))
         return 0;
+       if (op->oi->ifp->ifindex != newop->oi->ifp->ifindex)
+        return 0;
      }
    return 1;
 }
index 50fba75082163eb8f965c8b36c830d0ddd8902a9..0829e8ea010649330d63b56331085bf1d3e8b7bb 100644 (file)
@@ -165,6 +165,8 @@ ospf_route_match_same (struct route_table *rt, struct prefix_ipv4 *prefix,
 
               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 @@ ospf_path_lookup (struct list *plist, struct ospf_path *path)
   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;
 }