From f93e2d4de6e8140276ce84d173bfb80acaf45830 Mon Sep 17 00:00:00 2001 From: Jesper Jensen Date: Sat, 10 May 2025 11:43:31 +0200 Subject: Rebuild the rounting table on startup --- src/routing.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/routing.c') diff --git a/src/routing.c b/src/routing.c index 02b2f03..3ef418f 100644 --- a/src/routing.c +++ b/src/routing.c @@ -80,6 +80,23 @@ void routing_update_metrics() { } } +void routing_rebuild_table() { + struct entry table_swap[RT_SIZE]; + memcpy(table_swap, pTable->table, sizeof(pTable->table)); + routing_flush(); + + for(size_t i = 0; i < RT_SIZE; i++) { + if(!table_swap[i].set) continue; + + struct entry *entry; + if(routing_offer(&table_swap[i].id, &entry)) { + *entry = table_swap[i]; + } else { + dbg("Dropping a client since we already have enough in that bucket"); + } + } +} + void routing_flush() { memset(pTable->table, 0, sizeof(pTable->table)); } -- cgit v1.2.3