diff --git a/ospf6d/Makefile.am b/ospf6d/Makefile.am
index e1b78cb..680e89b 100644
--- a/ospf6d/Makefile.am
+++ b/ospf6d/Makefile.am
@@ -28,7 +28,7 @@
 ospf6d_SOURCES = \
 	ospf6_main.c $(libospf6_a_SOURCES)
 
-ospf6d_LDADD = ../lib/libzebra.a
+ospf6d_LDADD = -L../lib -lzebra
 
 sysconf_DATA = ospf6d.conf.sample
 
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 00a2b66..deb708a 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -412,8 +412,9 @@
   struct ospf6_lsa_as_external *e;
   struct prefix prefix;
   struct route_node *node;
-  struct ospf6_external_route *route;
-  struct ospf6_external_info *info;
+  struct ospf6_external_route *route = NULL;
+  struct ospf6_external_info *info = NULL;
+  struct ospf6_external_info *match = NULL;
 
   if (IS_OSPF6_DUMP_ASBR)
     zlog_info ("ASBR: refresh %s", lsa->str);
@@ -424,6 +425,29 @@
   prefix.family = AF_INET6;
   apply_mask_ipv6 ((struct prefix_ipv6 *) &prefix);
 
+  for (node = route_top (external_table); node; node = route_next (node))
+    {
+      route = node->info;
+      if (route == NULL)
+        continue;
+
+      for (info = route->info_head; info; info = info->next)
+        {
+          if (lsa->header->id == htonl (info->id))
+            match = info;
+        }
+    }
+
+  if (match == NULL)
+    {
+      ospf6_lsa_premature_aging (lsa);
+      return 0;
+    }
+
+  ospf6_asbr_schedule_external (match);
+  return 0;
+
+#if 0
   node = route_node_lookup (external_table, &prefix);
   if (! node || ! node->info)
     {
@@ -450,6 +474,7 @@
     ospf6_lsa_premature_aging (lsa);
 
   return 0;
+#endif
 }
 
 void
@@ -461,6 +486,18 @@
   struct ospf6_external_route *route;
   struct ospf6_external_info *info, tinfo;
 
+#if defined (MUSICA) || defined (LINUX)
+  /* XXX As long as the OSPFv3 redistribution is applied to all the connected
+   *     routes, one needs to filter the ::/96 prefixes.
+   *     However it could be a wanted case, it will be removed soon.
+   */
+  struct prefix_ipv6 *p = (prefix_ipv6 *)prefix;
+
+  if ((IN6_IS_ADDR_V4COMPAT(&p->prefix)) ||
+      (IN6_IS_ADDR_UNSPECIFIED (&p->prefix) && (p->prefixlen == 96))) 
+    return;
+#endif /* MUSICA or LINUX */
+
   if (! ospf6_zebra_is_redistribute (type))
     return;
 
@@ -567,6 +604,18 @@
   struct ospf6_external_info *info;
   struct ospf6_lsa *lsa;
 
+#if defined (MUSICA) || defined (LINUX)
+  /* XXX As long as the OSPFv3 redistribution is applied to all the connected
+   *     routes, one needs to filter the ::/96 prefixes.
+   *     However it could be a wanted case, it will be removed soon.
+   */
+  struct prefix_ipv6 *p = (prefix_ipv6 *)prefix;
+
+  if ((IN6_IS_ADDR_V4COMPAT(&p->prefix)) ||
+      (IN6_IS_ADDR_UNSPECIFIED (&p->prefix) && (p->prefixlen == 96))) 
+    return;
+#endif /* MUSICA or LINUX */
+
   node = route_node_get (external_table, prefix);
   route = node->info;
 
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c
index 3f3d550..10203bf 100644
--- a/ospf6d/ospf6_main.c
+++ b/ospf6d/ospf6_main.c
@@ -283,10 +283,10 @@
   if (! daemon_mode)
     flag = ZLOG_STDOUT;
   else
-    flag = 0;
+    flag = ZLOG_NOLOG;
 
   zlog_default = openzlog (progname, flag, ZLOG_OSPF6,
-			   LOG_CONS|LOG_NDELAY|LOG_PERROR|LOG_PID,
+			   LOG_CONS|LOG_NDELAY|LOG_PID,
 			   LOG_DAEMON);
   signal_init ();
   cmd_init (1);
@@ -315,9 +315,11 @@
   /* Make ospf vty socket. */
   vty_serv_sock (vty_addr, vty_port, OSPF6_VTYSH_PATH);
 
+#ifdef DEBUG
   /* Print start message */
   zlog_notice ("OSPF6d (Zebra-%s ospf6d-%s) starts",
                ZEBRA_VERSION, OSPF6_DAEMON_VERSION);
+#endif
 
   /* Start finite state machine, here we go! */
   while (thread_fetch (master, &thread))
diff --git a/ospf6d/ospf6_network.c b/ospf6d/ospf6_network.c
index 041d829..e90614e 100644
--- a/ospf6d/ospf6_network.c
+++ b/ospf6d/ospf6_network.c
@@ -255,10 +255,8 @@
                   &mreq6, sizeof (mreq6)) < 0)
     zlog_warn ("Network: Leave AllSPFRouters on ifindex %d Failed: %s",
                ifindex, strerror (errno));
-#if 0
   else
     zlog_info ("Network: Leave AllSPFRouters on ifindex %d", ifindex);
-#endif
 }
 
 void
@@ -275,10 +273,8 @@
                   &mreq6, sizeof (mreq6)) < 0)
     zlog_warn ("Network: Join AllDRouters on ifindex %d Failed: %s",
                ifindex, strerror (errno));
-#if 0
   else
     zlog_info ("Network: Join AllDRouters on ifindex %d", ifindex);
-#endif
 }
 
 void
@@ -294,10 +290,8 @@
   if (setsockopt (ospf6_sock, IPPROTO_IPV6, IPV6_LEAVE_GROUP,
                   &mreq6, sizeof (mreq6)) < 0)
     zlog_warn ("Network: Leave AllDRouters on ifindex %d Failed", ifindex);
-#if 0
   else
     zlog_info ("Network: Leave AllDRouters on ifindex %d", ifindex);
-#endif
 }
 
 /* setsockopt ReUseAddr to on */
@@ -340,7 +334,7 @@
 ospf6_set_checksum ()
 {
   int offset = 12;
-#ifndef DISABLE_IPV6_CHECKSUM
+#if !defined(DISABLE_IPV6_CHECKSUM)
   if (setsockopt (ospf6_sock, IPPROTO_IPV6, IPV6_CHECKSUM,
                   &offset, sizeof (offset)) < 0)
     zlog_warn ("Network: set IPV6_CHECKSUM failed: %s", strerror (errno));
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index a8a058f..f9cc329 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -286,6 +286,9 @@
 void
 ospf6_delete (struct ospf6 *ospf6)
 {
+  if (!ospf6)
+    return;
+
   ospf6_route_remove_all (ospf6->route_table);
   ospf6_free (ospf6);
 }
