diff --git a/usr.sbin/bgpd/rde_update.c b/usr.sbin/bgpd/rde_update.c index 4e3f566f317..22c2a12d471 100644 --- a/usr.sbin/bgpd/rde_update.c +++ b/usr.sbin/bgpd/rde_update.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rde_update.c,v 1.197 2026/05/28 09:10:22 claudio Exp $ */ +/* $OpenBSD: rde_update.c,v 1.198 2026/05/28 14:01:46 claudio Exp $ */ /* * Copyright (c) 2004 Claudio Jeker @@ -164,6 +164,7 @@ up_process_prefix(struct rde_peer *peer, struct prefix *new, struct filterstate state; struct bgpd_addr addr; int excluded = 0; + uint32_t new_path_id_tx = 0; /* * up_test_update() needs to run before the output filters @@ -194,11 +195,13 @@ up_process_prefix(struct rde_peer *peer, struct prefix *new, } /* from here on we know this is an update */ - if (p == (void *)-1) + if (p == (void *)-1) { + new_path_id_tx = new->path_id_tx; p = adjout_prefix_get(peer, new->path_id_tx, new->pt); + } up_prep_adjout(peer, &state, new->pt->aid); - adjout_prefix_update(p, peer, &state, new->pt, new->path_id_tx, + adjout_prefix_update(p, peer, &state, new->pt, new_path_id_tx, force_update); rde_filterstate_clean(&state);