summaryrefslogtreecommitdiff
path: root/nest/rt.h
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2022-09-09 13:52:37 +0200
committerMaria Matejka <mq@ucw.cz>2022-09-18 16:33:51 +0200
commitc49ee6e1a673fc1dc396857dbf8a73fa5d9d6b74 (patch)
tree33491b506b756017922c7f1ac3cdf3c6af14c771 /nest/rt.h
parentb80823fe828a0687d4baae3c34c737d46fbf439c (diff)
Routing tables have their own service loops.
Diffstat (limited to 'nest/rt.h')
-rw-r--r--nest/rt.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/nest/rt.h b/nest/rt.h
index 23231c0b..cd3745d6 100644
--- a/nest/rt.h
+++ b/nest/rt.h
@@ -111,6 +111,7 @@ struct rtable_private {
/* Here the private items not to be accessed without locking */
pool *rp; /* Resource pool to allocate everything from, including itself */
+ struct birdloop *loop; /* Service thread */
struct slab *rte_slab; /* Slab to allocate route objects */
struct fib fib;
struct f_trie *trie; /* Trie of prefixes defined in fib */
@@ -128,6 +129,7 @@ struct rtable_private {
*/
struct event *rt_event; /* Routing table event */
struct event *nhu_event; /* Specific event for next hop update */
+ struct event *nhu_uncork_event; /* Helper event to schedule NHU on uncork */
struct event *export_event; /* Event for export batching */
struct timer *export_timer; /* Timer for export batching */
struct timer *prune_timer; /* Timer for periodic pruning / GC */
@@ -188,7 +190,7 @@ static inline void rt_cork_release(void)
if (atomic_fetch_sub_explicit(&rt_cork.active, 1, memory_order_acq_rel) == 1)
{
synchronize_rcu();
- ev_schedule_work(&rt_cork.run);
+ ev_send(&global_work_list, &rt_cork.run);
}
}