Fix the tracking of RTF_MPATH. Until now the magic happend on the first route
authorclaudio <claudio@openbsd.org>
Mon, 28 Jul 2008 13:25:10 +0000 (13:25 +0000)
committerclaudio <claudio@openbsd.org>
Mon, 28 Jul 2008 13:25:10 +0000 (13:25 +0000)
and not on the routes with the right prio. So pick up the correct route by
calling rn_mpath_prio() first.
OK henning@

sys/net/route.c

index 139c48e..cd73b91 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: route.c,v 1.93 2008/06/08 19:12:28 claudio Exp $      */
+/*     $OpenBSD: route.c,v 1.94 2008/07/28 13:25:10 claudio Exp $      */
 /*     $NetBSD: route.c,v 1.14 1996/02/13 22:00:46 christos Exp $      */
 
 /*
@@ -885,7 +885,8 @@ makeroute:
 #ifndef SMALL_KERNEL
                if (rn_mpath_capable(rnh) &&
                    (rn = rnh->rnh_lookup(info->rti_info[RTAX_DST],
-                   info->rti_info[RTAX_NETMASK], rnh)) != NULL) {
+                   info->rti_info[RTAX_NETMASK], rnh)) != NULL &&
+                   (rn = rn_mpath_prio(rn, prio)) != NULL) {
                        if (rn_mpath_next(rn) == NULL)
                                ((struct rtentry *)rn)->rt_flags &= ~RTF_MPATH;
                        else