From cd628d124dbdcfdbd870b3df5840cc6888d36f9d Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Wed, 31 Aug 2022 16:04:36 +0200 Subject: Flowspec revalidate notification converted to an export hook Instead of synchronous notifications, we use the asynchronous export framework to notify flowspec src route updates. This allows us to invoke flowspec revalidation without locking collisions. --- nest/rt.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'nest/rt.h') diff --git a/nest/rt.h b/nest/rt.h index 5839ba66..01e444f6 100644 --- a/nest/rt.h +++ b/nest/rt.h @@ -132,7 +132,6 @@ typedef struct rtable { list subscribers; /* Subscribers for notifications */ struct timer *settle_timer; /* Settle time for notifications */ - list flowspec_links; /* List of flowspec links, src for NET_IPx and dst for NET_FLOWx */ struct f_trie *flowspec_trie; /* Trie for evaluation of flowspec notifications */ } rtable; @@ -143,13 +142,6 @@ struct rt_subscription { event_list *list; }; -struct rt_flowspec_link { - node n; - rtable *src; - rtable *dst; - u32 uc; -}; - extern struct rt_cork { _Atomic uint active; event_list queue; @@ -416,6 +408,12 @@ struct hostcache { struct rt_export_request req; /* Notifier */ }; +struct rt_flowspec_link { + rtable *src; + rtable *dst; + u32 uc; + struct rt_export_request req; +}; #define rte_update channel_rte_import /** -- cgit v1.2.3