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); }