summaryrefslogtreecommitdiff
path: root/nest/rt.h
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2022-08-31 16:04:36 +0200
committerMaria Matejka <mq@ucw.cz>2022-09-01 18:46:40 +0200
commitcd628d124dbdcfdbd870b3df5840cc6888d36f9d (patch)
treeb0cc74f4d575012e0589bd35f745564da1c5112d /nest/rt.h
parentecdb1ec6eabbf0c47c410e9bb8551ab5d039a650 (diff)
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.
Diffstat (limited to 'nest/rt.h')
-rw-r--r--nest/rt.h14
1 files changed, 6 insertions, 8 deletions
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
/**