Improve reload behaviour of RDE peer flags and export_type.
authorclaudio <claudio@openbsd.org>
Thu, 6 May 2021 09:18:54 +0000 (09:18 +0000)
committerclaudio <claudio@openbsd.org>
Thu, 6 May 2021 09:18:54 +0000 (09:18 +0000)
commitd0b311ebccba0a7a38a4f0386dfa19c1a7395c21
tree5e2938e6814edc8ad937e0c7fd0c5e3147c2e6df
parenta982ab778164426d95107a3e2fffb958decb6f9a
Improve reload behaviour of RDE peer flags and export_type.

Add an extra reload barrier (IMSG_RECONF_DRAIN) to the sync of the peer
config from the session engine to the rde. Necessary to ensure that the
peer config is up to date in the RDE before hitting reconfiguration.

Store the export_type and the peer flags outside of peer->conf. Adjust all
users of these two fields so they only look at the copies in peer.
During reload check the values with the peer->conf to check for changes.

If the export_type or the rde evaluate or transparent-as flags changed
flush the Adj-RIB-Out for that peer and in a 2nd step rebuild the RIB from
scratch. This results in a lot of UPDATE churn but these configs are not
altered often.

Fix multiple issues in the rde_softreconfig_in_done handler that resulted
in multiple runs of the out stage of the softreconfig pipeline.

OK benno@
usr.sbin/bgpd/rde.c
usr.sbin/bgpd/rde.h
usr.sbin/bgpd/rde_peer.c
usr.sbin/bgpd/rde_update.c
usr.sbin/bgpd/session.c