summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2021-10-06 15:10:33 +0200
committerMaria Matejka <mq@ucw.cz>2021-11-22 19:05:43 +0100
commit44f26c49f966ca842ff9af55468de0b98c44b73e (patch)
tree058c474e3f82ac0a26b77cf1c62f2ffa07212145 /lib
parentf81702b7e44ba7f2b264fe14f0f4e1e30913e475 (diff)
Special table hooks rectified.
* internal tables are now more standalone, having their own import and export hooks * route refresh/reload uses stale counter instead of stale flag, allowing to drop walking the table at the beginning * route modify (by BGP LLGR) is now done by a special refeed hook, reimporting the modified routes directly without filters
Diffstat (limited to 'lib')
-rw-r--r--lib/lists.c9
-rw-r--r--lib/lists.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/lists.c b/lib/lists.c
index 200576cf..fe2b692b 100644
--- a/lib/lists.c
+++ b/lib/lists.c
@@ -109,6 +109,15 @@ add_head(list *l, node *n)
l->head = n;
}
+LIST_INLINE void
+self_link(node *n)
+{
+ ASSUME(n->prev == NULL);
+ ASSUME(n->next == NULL);
+
+ n->prev = n->next = n;
+}
+
/**
* insert_node - insert a node to a list
* @n: a new list node
diff --git a/lib/lists.h b/lib/lists.h
index 479f4ed1..64b4a981 100644
--- a/lib/lists.h
+++ b/lib/lists.h
@@ -78,6 +78,7 @@ typedef union list { /* In fact two overlayed nodes */
#define LIST_INLINE
void add_tail(list *, node *);
void add_head(list *, node *);
+void self_link(node *);
void rem_node(node *);
void add_tail_list(list *, list *);
void init_list(list *);