On Sun, Nov 07, 2021 at 12:46:43PM +0100, Denis Fondras wrote:
> I came up with this diff to overcome my problem.
>
> Index: rtable.c
> ===================================================================
> RCS file: /cvs/src/sys/net/rtable.c,v
> retrieving revision 1.75
> diff -u -p -r1.75 rtable.c
> --- rtable.c 25 May 2021 22:45:09 -0000 1.75
> +++ rtable.c 7 Nov 2021 11:21:33 -0000
> @@ -834,6 +834,10 @@ rtable_mpath_insert(struct art_node *an,
> return;
> }
>
> + /* Unreachable on-link route will not preferred */
> + if (ISSET(mrt->rt_flags, RTF_LLINFO|RTF_REJECT))
> + prio = 0;
> +
> /* Iterate until we find the route to be placed after ``rt''. */
> while (mrt->rt_priority <= prio && SRPL_NEXT_LOCKED(mrt, rt_next)) {
> prt = mrt;
>
> Le Sun, Nov 07, 2021 at 10:11:54AM +0100, Denis Fondras a écrit :
> > Hi,
> >
> > I am using BGP to connect 2 OpenBSD-current routers :
> >
> > [static default GW]---RT1---[bgp]---RT2
> >
> > I announce an IPv4 /32 from RT2.
> > After I start both RT1 and RT2, traffic flows to RT2 /32 without any issue.
> > However if I reboot RT2 (let's say for sysupgrade), RT1 loses the /32
> > (which is
> > expected) but as traffic is still directed to the /32 (because of a constant
> > ping towards the /32 for example), RT1 installs a route for the /32 with
> > these
> > flags :
> >
> > flags: <UP,HOST,REJECT,DONE,LLINFO,CLONED>
> > (The REJECT flag is dropped after a timeout but comes back a few second
> > later)
> >
> > From there I cannot get the back /32 from BGP until I manually delete the
> > automatically installed HOST route. Is there any way to deal with it without
> > manual intervention ?
> >
> > Denis
To be honest, you have arp or ND running on that prefix and then overload
it with a /32 route. You really need to explain why you do that. This is
in my opinion a broken setup.
We don't want to add hacks for setups that are inherently broken. If
something is directly connected it should use that direct link.
--
:wq Claudio