Since a long while 'route-collector yes' did not work correctly anymore.
The problem is that the RDE is too strict when it comes to handle the
flag. While it is not possible to turn the mode off it has to be possible
to enable it since the initial config is reloaded as well.
This diff changes the behaviour to only not allow turning route-collector
mode back off after it was turned on once.

-- 
:wq Claudio

Index: rde.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v
retrieving revision 1.441
diff -u -p -r1.441 rde.c
--- rde.c       26 Oct 2018 06:48:59 -0000      1.441
+++ rde.c       28 Oct 2018 14:00:50 -0000
@@ -2802,14 +2802,10 @@ rde_reload_done(void)
        int                      reload = 0;
 
        /* first merge the main config */
-       if ((nconf->flags & BGPD_FLAG_NO_EVALUATE)
-           != (conf->flags & BGPD_FLAG_NO_EVALUATE)) {
-               log_warnx("change to/from route-collector "
-                   "mode ignored");
-               if (conf->flags & BGPD_FLAG_NO_EVALUATE)
-                       nconf->flags |= BGPD_FLAG_NO_EVALUATE;
-               else
-                       nconf->flags &= ~BGPD_FLAG_NO_EVALUATE;
+       if ((conf->flags & BGPD_FLAG_NO_EVALUATE) &&
+           (nconf->flags & BGPD_FLAG_NO_EVALUATE) == 0) {
+               log_warnx("disabling of route-collector mode ignored");
+               nconf->flags |= BGPD_FLAG_NO_EVALUATE;
        }
 
        SIMPLEQ_INIT(&prefixsets_old);

Reply via email to