Skip to content

daemon: hold one Source per negotiated family instead of one per peer#357

Merged
fujita merged 1 commit into
osrg:masterfrom
fujita:per-family-source
May 19, 2026
Merged

daemon: hold one Source per negotiated family instead of one per peer#357
fujita merged 1 commit into
osrg:masterfrom
fujita:per-family-source

Conversation

@fujita
Copy link
Copy Markdown
Member

@fujita fujita commented May 19, 2026

Routes from a peer are stored per-family in the routing table, so stale marking during GR also needs to be per-family. A single Arc shared across all families makes that impossible: mark_stale() on it would affect every family atomically.

Create one Arc per negotiated family in on_established() and store them in a FnvHashMap<Family, Arc>. handle_pass_update() looks up the source by the route's family; handle_advertise() checks only the source for the incoming route's family.

On disconnect all per-family sources are dropped (or preserved for GR) together. gr_drop_source() and gr_restale_source() now accept the full map and iterate it internally, so call-site logic is unchanged.

Assisted-by: Claude Sonnet 4.6 noreply@anthropic.com

Routes from a peer are stored per-family in the routing table, so stale
marking during GR also needs to be per-family.  A single Arc<Source>
shared across all families makes that impossible: mark_stale() on it
would affect every family atomically.

Create one Arc<Source> per negotiated family in on_established() and
store them in a FnvHashMap<Family, Arc<Source>>.  handle_pass_update()
looks up the source by the route's family; handle_advertise() checks
only the source for the incoming route's family.

On disconnect all per-family sources are dropped (or preserved for GR)
together.  gr_drop_source() and gr_restale_source() now accept the full
map and iterate it internally, so call-site logic is unchanged.

Assisted-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
@fujita fujita merged commit db3d463 into osrg:master May 19, 2026
3 checks passed
@fujita fujita deleted the per-family-source branch May 19, 2026 01:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant