diff --git a/proto/ospf/neighbor.c b/proto/ospf/neighbor.c
index 61224ec..baf190f 100644
--- a/proto/ospf/neighbor.c
+++ b/proto/ospf/neighbor.c
@@ -127,8 +127,15 @@ neigh_chstate(struct ospf_neighbor *n, u8 state)
 
     n->state = state;
 
-    OSPF_TRACE(D_EVENTS, "Neighbor %I changes state from \"%s\" to \"%s\".",
-	       n->ip, ospf_ns[oldstate], ospf_ns[state]);
+    OSPF_TRACE(D_EVENTS, "Neighbor %I%s%s changes state from \"%s\" to \"%s\".",
+	       n->ip,
+#ifdef OSPFv2
+	       "", "",
+#else /* OSPFv3 */
+	       ipv6_has_link_scope(&n->ip) ? "%" : "",
+	       ipv6_has_link_scope(&n->ip) ? ifa->iface->name : "",
+#endif
+	       ospf_ns[oldstate], ospf_ns[state]);
 
     if ((state == NEIGHBOR_2WAY) && (oldstate < NEIGHBOR_2WAY))
       ospf_iface_sm(ifa, ISM_NEICH);
