diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 286b5c1..7980a64 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -294,45 +294,43 @@
 void
 ospf6_asbr_lsentry_add (struct ospf6_route *asbr_entry)
 {
-  char buf[64];
   struct ospf6_lsa *lsa;
   u_int16_t type;
   u_int32_t router;
 
-  if (IS_OSPF6_DEBUG_EXAMIN (AS_EXTERNAL))
+  if (! CHECK_FLAG (asbr_entry->flag, OSPF6_ROUTE_BEST))
     {
-      ospf6_linkstate_prefix2str (&asbr_entry->prefix, buf, sizeof (buf));
-      zlog_debug ("New ASBR %s found", buf);
+      char buf[16];
+      inet_ntop (AF_INET, &ADV_ROUTER_IN_PREFIX (&asbr_entry->prefix),
+                 buf, sizeof (buf));
+       zlog_info ("ignore non-best path: lsentry %s add", buf);
+      return;
     }
 
   type = htons (OSPF6_LSTYPE_AS_EXTERNAL);
   router = ospf6_linkstate_prefix_adv_router (&asbr_entry->prefix);
-  for (lsa = ospf6_lsdb_type_router_head (type, router, ospf6->lsdb);
-       lsa; lsa = ospf6_lsdb_type_router_next (type, router, lsa))
+  for (lsa = ospf6_lsdb_type_router_head (type, router, ospf6->lsdb); lsa;
+       lsa = ospf6_lsdb_type_router_next (type, router, lsa))
     {
       if (! OSPF6_LSA_IS_MAXAGE (lsa))
         ospf6_asbr_lsa_add (lsa);
     }
-
-  if (IS_OSPF6_DEBUG_EXAMIN (AS_EXTERNAL))
-    {
-      ospf6_linkstate_prefix2str (&asbr_entry->prefix, buf, sizeof (buf));
-      zlog_debug ("Calculation for new ASBR %s done", buf);
-    }
 }
 
 void
 ospf6_asbr_lsentry_remove (struct ospf6_route *asbr_entry)
 {
-  char buf[64];
   struct ospf6_lsa *lsa;
   u_int16_t type;
   u_int32_t router;
 
-  if (IS_OSPF6_DEBUG_EXAMIN (AS_EXTERNAL))
+  if (! CHECK_FLAG (asbr_entry->flag, OSPF6_ROUTE_BEST))  
     {
-      ospf6_linkstate_prefix2str (&asbr_entry->prefix, buf, sizeof (buf));
-      zlog_debug ("ASBR %s disappeared", buf);
+      char buf[16];
+      inet_ntop (AF_INET, &ADV_ROUTER_IN_PREFIX (&asbr_entry->prefix),
+                 buf, sizeof (buf));
+      zlog_info ("ignore non-best path: lsentry %s remove", buf);
+      return;
     }
 
   type = htons (OSPF6_LSTYPE_AS_EXTERNAL);
@@ -340,12 +338,6 @@
   for (lsa = ospf6_lsdb_type_router_head (type, router, ospf6->lsdb);
        lsa; lsa = ospf6_lsdb_type_router_next (type, router, lsa))
     ospf6_asbr_lsa_remove (lsa);
-
-  if (IS_OSPF6_DEBUG_EXAMIN (AS_EXTERNAL))
-    {
-      ospf6_linkstate_prefix2str (&asbr_entry->prefix, buf, sizeof (buf));
-      zlog_debug ("Calculation for old ASBR %s done", buf);
-    }
 }
 
 
