A cache can send a 'NO_DATA_AVAILABLE' error during version negotiation
authorclaudio <claudio@openbsd.org>
Mon, 15 Jan 2024 11:55:26 +0000 (11:55 +0000)
committerclaudio <claudio@openbsd.org>
Mon, 15 Jan 2024 11:55:26 +0000 (11:55 +0000)
commita62144a242043873ba717dac4eb4f4c19655954a
treea1ede47fbab1dbf1501a0e7912edb569214312dc
parent8490bd922a4d1301b10674d08d2ac19bc6ee4564
A cache can send a 'NO_DATA_AVAILABLE' error during version negotiation
so handle this case as well. This error triggers an RTR_EVNT_NO_DATA
event that moves the session to RTR_STATE_ESTABLISHED (and out of negotiation).

When there is no data available the session_id remains unset until data
becomes available. So handle this case not only in rtr_parse_cache_response()
but also in rtr_parse_notify().

RTR_EVNT_NO_DATA arms the RTR_EVNT_TIMER_RETRY timer. On expiry send a
reset or serial query depending on the cache session state.

OK tb@
usr.sbin/bgpd/rtr_proto.c