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