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@

Reply via email to