diff --git a/ospf6d/ospf6_neighbor.c b/ospf6d/ospf6_neighbor.c
index a4823d2..e7818ab 100644
--- a/ospf6d/ospf6_neighbor.c
+++ b/ospf6d/ospf6_neighbor.c
@@ -51,7 +51,7 @@
 {
   struct ospf6_neighbor *ona = (struct ospf6_neighbor *) va;
   struct ospf6_neighbor *onb = (struct ospf6_neighbor *) vb;
-  return (ntohl (ona->router_id) - ntohl (onb->router_id));
+  return (ntohl (ona->router_id) < ntohl (onb->router_id) ? -1 : 1);
 }
 
 struct ospf6_neighbor *
@@ -94,14 +94,14 @@
   gettimeofday (&on->last_changed, (struct timezone *) NULL);
   on->router_id = router_id;
 
-  on->summary_list = ospf6_lsdb_create ();
-  on->request_list = ospf6_lsdb_create ();
-  on->retrans_list = ospf6_lsdb_create ();
+  on->summary_list = ospf6_lsdb_create (on);
+  on->request_list = ospf6_lsdb_create (on);
+  on->retrans_list = ospf6_lsdb_create (on);
 
-  on->dbdesc_list = ospf6_lsdb_create ();
-  on->lsreq_list = ospf6_lsdb_create ();
-  on->lsupdate_list = ospf6_lsdb_create ();
-  on->lsack_list = ospf6_lsdb_create ();
+  on->dbdesc_list = ospf6_lsdb_create (on);
+  on->lsreq_list = ospf6_lsdb_create (on);
+  on->lsupdate_list = ospf6_lsdb_create (on);
+  on->lsack_list = ospf6_lsdb_create (on);
 
   listnode_add_sort (oi->neighbor_list, on);
   return on;
@@ -117,7 +117,7 @@
   for (lsa = ospf6_lsdb_head (on->retrans_list); lsa;
        lsa = ospf6_lsdb_next (lsa))
     {
-      ospf6_decrement_onretrans (lsa);
+      ospf6_decrement_retrans_count (lsa);
       ospf6_lsdb_remove (lsa, on->retrans_list);
     }
 
@@ -286,7 +286,7 @@
   for (lsa = ospf6_lsdb_head (on->retrans_list); lsa;
        lsa = ospf6_lsdb_next (lsa))
     {
-      ospf6_decrement_onretrans (lsa);
+      ospf6_decrement_retrans_count (lsa);
       ospf6_lsdb_remove (lsa, on->retrans_list);
     }
 
@@ -300,7 +300,7 @@
                     "summary_list"), on->name);
       if (OSPF6_LSA_IS_MAXAGE (lsa))
         {
-          lsa->onretrans++;
+          ospf6_increment_retrans_count (lsa);
           ospf6_lsdb_add (ospf6_lsa_copy (lsa), on->retrans_list);
         }
       else
@@ -317,7 +317,7 @@
                     "summary_list"), on->name);
       if (OSPF6_LSA_IS_MAXAGE (lsa))
         {
-          lsa->onretrans++;
+          ospf6_increment_retrans_count (lsa);
           ospf6_lsdb_add (ospf6_lsa_copy (lsa), on->retrans_list);
         }
       else
@@ -334,7 +334,7 @@
                     "summary_list"), on->name);
       if (OSPF6_LSA_IS_MAXAGE (lsa))
         {
-          lsa->onretrans++;
+          ospf6_increment_retrans_count (lsa);
           ospf6_lsdb_add (ospf6_lsa_copy (lsa), on->retrans_list);
         }
       else
@@ -431,7 +431,7 @@
       for (lsa = ospf6_lsdb_head (on->retrans_list); lsa;
            lsa = ospf6_lsdb_next (lsa))
         {
-          ospf6_decrement_onretrans (lsa);
+          ospf6_decrement_retrans_count (lsa);
           ospf6_lsdb_remove (lsa, on->retrans_list);
         }
     }
@@ -464,7 +464,7 @@
   for (lsa = ospf6_lsdb_head (on->retrans_list); lsa;
        lsa = ospf6_lsdb_next (lsa))
     {
-      ospf6_decrement_onretrans (lsa);
+      ospf6_decrement_retrans_count (lsa);
       ospf6_lsdb_remove (lsa, on->retrans_list);
     }
 
@@ -500,7 +500,7 @@
   for (lsa = ospf6_lsdb_head (on->retrans_list); lsa;
        lsa = ospf6_lsdb_next (lsa))
     {
-      ospf6_decrement_onretrans (lsa);
+      ospf6_decrement_retrans_count (lsa);
       ospf6_lsdb_remove (lsa, on->retrans_list);
     }
 
@@ -534,7 +534,7 @@
   for (lsa = ospf6_lsdb_head (on->retrans_list); lsa;
        lsa = ospf6_lsdb_next (lsa))
     {
-      ospf6_decrement_onretrans (lsa);
+      ospf6_decrement_retrans_count (lsa);
       ospf6_lsdb_remove (lsa, on->retrans_list);
     }
 
