mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
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.
This commit is contained in:
14
nest/rt.h
14
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
|
||||
/**
|
||||
|
Reference in New Issue
Block a user