Implement ASPA validation and reload logic on ASPA set changes.
authorclaudio <claudio@openbsd.org>
Tue, 24 Jan 2023 11:28:41 +0000 (11:28 +0000)
committerclaudio <claudio@openbsd.org>
Tue, 24 Jan 2023 11:28:41 +0000 (11:28 +0000)
commitf8fade753ede4ff3c8df2d29eec0fa8b646dffaf
tree96132fd7c5c50b7762e0376f37463da81dfade9a
parenta6ee4600a7548974069555b97821656c9b0e1fbb
Implement ASPA validation and reload logic on ASPA set changes.

For this use the validation state (vstate) in struct prefix and
struct filterstate to store both the ASPA and ROA validity.
Introduce helper functions to set and get the various states for
struct prefix and make sure struct filterstate is also setup properly.
Change the ASPA state in rde_aspath to be AFI/AID and role independent
by storing all 4 possible outcomes. Also add a ASPA generation count
which is used to update the rde_aspath ASPA state cache on reloads.
Rework the rde_aspa.c code to be AFI/AID and role independent. Doing
this for roles is trivial but AFI switch goes deep and is so unnecessary.
The reload is combined with the ROA reload logic and renamed to RPKI
softreload.

OK tb@
usr.sbin/bgpd/bgpd.h
usr.sbin/bgpd/rde.c
usr.sbin/bgpd/rde.h
usr.sbin/bgpd/rde_aspa.c
usr.sbin/bgpd/rde_filter.c
usr.sbin/bgpd/rde_peer.c
usr.sbin/bgpd/rde_rib.c
usr.sbin/bgpd/rde_update.c