We ran into a situation where we accidentally blackholed traffic going to
a new Internet Exchange.  When we added the new vlans and new peers, the
nexthop address on that vlan was *not* our neighbor's address, but
instead used our own IP address on that new interface.  "bgpctl show rib",
showed the correct IP, but the wrong one was used when installing into
the fib.

Restarting bgpd installed the correct nexthop.

Additionally, a user had reported that "network inet connected" didn't
work any more.  This fix also convinces bgpd to redistribute the network
as soon as it is created.  The underlying cause was a combination of
missing the F_CONNECTED flag, as well as having an ifindex of 0, which
is lo0's index.

OK?

Index: kroute.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/kroute.c,v
retrieving revision 1.207
diff -u -p -u -p -r1.207 kroute.c
--- kroute.c    5 Dec 2015 18:28:04 -0000       1.207
+++ kroute.c    21 Mar 2016 14:44:52 -0000
@@ -3178,6 +3178,12 @@ dispatch_rtmsg_addr(struct rt_msghdr *rt
                        sa = NULL;
                        mpath = 0;      /* link local stuff can't be mpath */
                        break;
+               case AF_INET:
+               case AF_INET6:
+                       if (rtm->rtm_flags & RTF_CONNECTED)
+                               flags |= F_CONNECTED;
+                       ifindex = rtm->rtm_index;
+                       break;
                }
 
        if (rtm->rtm_type == RTM_DELETE) {




-- 
If you are a fatalist, what can you do about it?
                -- Ann Edwards-Duff

Reply via email to