Fix nodes joining the VPN after tincctl top started.

This commit is contained in:
Guus Sliepen 2011-06-02 21:14:50 +02:00
parent 311f60f4f0
commit 80ca91769d
3 changed files with 25 additions and 1 deletions

View file

@ -111,6 +111,26 @@ list_node_t *list_insert_after(list_t *list, list_node_t *after, void *data) {
return node;
}
list_node_t *list_insert_before(list_t *list, list_node_t *before, void *data) {
list_node_t *node;
node = list_alloc_node();
node->data = data;
node->next = before;
node->prev = before->prev;
before->prev = node;
if(node->prev)
node->prev->next = node;
else
list->head = node;
list->count++;
return node;
}
void list_unlink_node(list_t *list, list_node_t *node) {
if(node->prev)
node->prev->next = node->next;

View file

@ -55,6 +55,7 @@ extern void list_free_node(list_t *, list_node_t *);
extern list_node_t *list_insert_head(list_t *, void *);
extern list_node_t *list_insert_tail(list_t *, void *);
extern list_node_t *list_insert_after(list_t *, list_node_t *, void *);
extern list_node_t *list_insert_before(list_t *, list_node_t *, void *);
extern void list_unlink_node(list_t *, list_node_t *);
extern void list_delete_node(list_t *, list_node_t *);

View file

@ -108,7 +108,9 @@ static void update(int fd) {
} else {
found = xmalloc_and_zero(sizeof *found);
found->name = xstrdup(name);
list_insert_after(&node_list, i, found);
fprintf(stderr, "Inserting %s before %s\n", found->name, node->name);
list_insert_before(&node_list, i, found);
changed = true;
break;
}
}
@ -117,6 +119,7 @@ static void update(int fd) {
found = xmalloc_and_zero(sizeof *found);
found->name = xstrdup(name);
list_insert_tail(&node_list, found);
changed = true;
}
found->known = true;