rde evaluate all and add-path send do not really work together.
add-path will evaluate extra paths (if plus is used) and so it implies a
mode of `rde evaluate all`. I added the exclusion mainly to make it clear
that the two don't really mix.

After a request from Pier Carlo Chiodi on OpenBGPD-portable I came to the
conclusion that it should be possible to set both on a peer (in case the
peer has no add-path then use `rde evaluate all` as fallback).

It is enough to update manpage and remove the check in neighbor_consistent()
-- 
:wq Claudio

Index: bgpd.conf.5
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/bgpd.conf.5,v
retrieving revision 1.225
diff -u -p -r1.225 bgpd.conf.5
--- bgpd.conf.5 12 Jul 2022 17:49:33 -0000      1.225
+++ bgpd.conf.5 21 Jul 2022 10:52:54 -0000
@@ -893,6 +893,11 @@ and
 are equivalent.
 The default is
 .Ic no .
+If
+.Ic add-path Ic send
+is active then the setting of
+.Ic rde Ic evaluate
+is ignored.
 .Pp
 .It Xo
 .Ic announce as-4byte
Index: parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v
retrieving revision 1.432
diff -u -p -r1.432 parse.y
--- parse.y     11 Jul 2022 17:08:21 -0000      1.432
+++ parse.y     21 Jul 2022 10:46:23 -0000
@@ -4665,14 +4665,6 @@ neighbor_consistent(struct peer *p)
                return (-1);
        }
 
-       /* bail if add-path send and rde evaluate all is used together */
-       if ((p->conf.flags & PEERFLAG_EVALUATE_ALL) &&
-           (p->conf.capabilities.add_path[0] & CAPA_AP_SEND)) {
-               yyerror("neighbors with add-path send cannot use "
-                   "'rde evaluate all'");
-               return (-1);
-       }
-
        return (0);
 }
 

Reply via email to