Thanks for the acknowledgement. Seems bgpd is also a victim of this logic, but I haven't looked in the code to make sure. :]
My workaround has been to filter (by various means) the redundant prefixes (some are unneeded due to my simple setup) from ever entering the routing table. dmo On Sat, Sep 28, 2013 at 12:58 AM, Sebastian Benoit <[email protected]>wrote: > > Hi, > > thanks for your bug report. > > We'll be looking into this. Please be patient though. > > /Benno > > > Doran Mori([email protected]) on 2013.09.25 19:10:53 -0700: > > I have an OpenBSD box running 5.3 with multiple nics. > > > > When I ifconfig down one of the transit links ospfd adds another route > > instead of changing because the route is marked down in the kernel. When > I > > ifconfig up the link the original route and new one are both installed in > > the routing table now. If I cycle down/up with ifconfig again now I get > > multipath flags and eventually bgpd will freak out and quit because of > this. > > > > From digging around in the code: > > > > In send_rtmsg in kroute.c shows how the route gets added: > > ... > > retry: > > if (writev(fd, iov, iovcnt) == -1) { > > if (errno == ESRCH) { > > if (hdr.rtm_type == RTM_CHANGE) { > > hdr.rtm_type = RTM_ADD; > > goto retry; > > } else if (hdr.rtm_type == RTM_DELETE) { > > log_info("route %s/%u vanished before delete", > > inet_ntoa(kroute->prefix), > > kroute->prefixlen); > > return (0); > > } > > } > > > > It can't find the route because it's marked down and switches from CHANGE > > to ADD and retries. > > > > I see related threads but nothing with a definite fix: > > http://marc.info/?l=openbsd-misc&m=130710530911754&w=2 > > http://marc.info/?l=openbsd-misc&m=133759959417744&w=2 > > http://marc.info/?l=openbsd-misc&m=134892435720437&w=2 > > ^-- this one seems the most promising but it's a big patch for me to > > integrate myself since it's for ospf6d > > > > I've been banging my head all day trying to figure out a fix or > workaround. > > Let me know if you need more specifics/configs etc. > > > > dmo > > > > --

