From: Paul Jakma Date: Thu, 9 Oct 2014 15:05:15 +0000 (+0100) Subject: ospfd: Tweak previous iface RR write patch to avoid free/malloc & redundant log X-Git-Tag: frr-2.0-rc1~630 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=93559b99b0215e57476ca10d623cfbb4058a1db2;p=mirror%2Ffrr.git ospfd: Tweak previous iface RR write patch to avoid free/malloc & redundant log * linklist.{c,h}: (listnode_move_to_tail) new unction to move a listnode to tail of list. * ospf_packet.c: (ospf_write) remove debug that seemed to be mostly covered by existing debug. Use listnode_move_to_tail to just move the list node to the end of the tail, rather than freeing the one to hand and allocing a new one. --- diff --git a/lib/linklist.c b/lib/linklist.c index 370b2fa615..4b16f07dd1 100644 --- a/lib/linklist.c +++ b/lib/linklist.c @@ -159,6 +159,13 @@ listnode_add_after (struct list *list, struct listnode *pp, void *val) list->count++; } +/* Move given listnode to tail of the list */ +void +listnode_move_to_tail (struct list *l, struct listnode *n) +{ + LISTNODE_DETACH(l,n); + LISTNODE_ATTACH(l,n); +} /* Delete specific date pointer from the list. */ void diff --git a/lib/linklist.h b/lib/linklist.h index 88f4a03912..6209c8b9d6 100644 --- a/lib/linklist.h +++ b/lib/linklist.h @@ -68,6 +68,7 @@ extern void list_free (struct list *); extern void listnode_add (struct list *, void *); extern void listnode_add_sort (struct list *, void *); extern void listnode_add_after (struct list *, struct listnode *, void *); +extern void listnode_move_to_tail (struct list *, struct listnode *); extern void listnode_delete (struct list *, void *); extern struct listnode *listnode_lookup (struct list *, void *); extern void *listnode_head (struct list *);