Alexander Bluhm wrote Monday, August 08, 2011 10:50 AM
> On Sun, Aug 07, 2011 at 04:02:32AM +0200, Florian Fuessl wrote:
> > Alexander Bluhm <[email protected]> wrote Sat., Aug. 06, 2011
> > > On Sat, Aug 06, 2011 at 12:47:27AM +0200, Alexander Bluhm wrote:
> > > > To trigger the bug, you need two adresses in the same network on
> > > > the carp and on the parent interface.  One of them has the route,
> > > > the other cannot do ndp.
> >
> > Thank you. This patch works like a charm! :-)
> 
> By thinking about it, I found another bug with carp and neighbor
> discovery.  When you have two carp interfaces on one physical
> interface and the same prefix on both carp interfaces but not on
> the physical, neighbor discovery will fail for one fo the carp
> interfaces.

Running "the simple the carp setup" this updated patch also runs fine, here.

> I don't know wether this is a common use case.
> 
> It is easy to fix.  When comparing two carp interfaces, assume they
> have same prefixes if they have the same parent.
> 
> ok?
> Can this go into 5.0?

+1

> bluhm

Thank you,
-Florian

> Index: netinet6/in6.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet6/in6.c,v
> retrieving revision 1.92
> diff -u -p -r1.92 in6.c
> --- netinet6/in6.c    7 Aug 2011 15:18:40 -0000       1.92
> +++ netinet6/in6.c    8 Aug 2011 08:22:19 -0000
> @@ -1956,6 +1956,8 @@ in6_ifpprefix(const struct ifnet *ifp, c
>  #if NCARP > 0
>           (ifp->if_type != IFT_CARP || rt->rt_ifp != ifp->if_carpdev)
> &&
>           (rt->rt_ifp->if_type != IFT_CARP || rt->rt_ifp->if_carpdev !=
> ifp)&&
> +         (ifp->if_type != IFT_CARP || rt->rt_ifp->if_type != IFT_CARP
> ||
> +         rt->rt_ifp->if_carpdev != ifp->if_carpdev) &&
>  #endif
>           1)) {
>               RTFREE(rt);

Reply via email to