CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2026/07/15 05:59:27
Modified files:
usr.sbin/bgpd : rde.c rde.h rde_adjout.c rde_peer.c
rde_update.c
Log message:
rework the force_update logic in the adj-rib-out
On initial connect the system needs to sync the adj-rib-out of a peer with
the Loc-RIB. This happens via peer_dump() and in this case the system
needs to push out all updates (but can drop any withdraw).
To do this a force_update flag was introduced but actually it is better to
use the mode argument and introduce EVAL_SYNC for this case.
If mode == EVAL_SYNC adjout_prefix_update needs to force the update and
adjout_prefix_withdraw can drop the withdraw.
The other user of peer_dump() is during config reloads where the RIB of a
peer is altered. In that case the adj-rib-out is first flushed. Because of
this flush peer_dump can be used to push out all updates.
This also removes the NOTYET block in peer_generate_update() and
replaces it with inside up_generate_addpath_all() with a call
up_generate_addpath().
OK tb@