diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c
index ad932b5..77b024e 100644
--- a/bgpd/bgp_nexthop.c
+++ b/bgpd/bgp_nexthop.c
@@ -1119,9 +1119,11 @@
 int
 bgp_import (struct thread *t)
 {
+  struct bgp_master *bm;
   struct bgp *bgp;
   struct bgp_node *rn;
   struct bgp_static *bgp_static;
+  struct listnode *nn;
   int valid;
   u_int32_t metric;
   struct in_addr nexthop;
@@ -1131,49 +1133,52 @@
   bgp_import_thread = 
     thread_add_timer (master, bgp_import, NULL, bgp_import_interval);
 
-  bgp = bgp_get_default ();
-  if (! bgp)
+  bm = bgp_get_master ();
+  if (! bm)
     return 0;
 
-  for (afi = AFI_IP; afi < AFI_MAX; afi++)
-    for (safi = SAFI_UNICAST; safi < SAFI_MPLS_VPN; safi++)
-      for (rn = bgp_table_top (bgp->route[afi][safi]); rn;
-	   rn = bgp_route_next (rn))
-	if ((bgp_static = rn->info) != NULL)
-	  {
-	    if (bgp_static->backdoor)
-	      continue;
-
-	    valid = bgp_static->valid;
-	    metric = bgp_static->igpmetric;
-	    nexthop = bgp_static->igpnexthop;
-
-	    if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)
-		&& afi == AFI_IP && safi == SAFI_UNICAST)
-	      bgp_static->valid = bgp_import_check (&rn->p, &bgp_static->igpmetric,
-						    &bgp_static->igpnexthop);
-	    else
+  LIST_LOOP (bm->bgp, bgp, nn)
+    {
+      for (afi = AFI_IP; afi < AFI_MAX; afi++)
+	for (safi = SAFI_UNICAST; safi < SAFI_MPLS_VPN; safi++)
+	  for (rn = bgp_table_top (bgp->route[afi][safi]); rn;
+	       rn = bgp_route_next (rn))
+	    if ((bgp_static = rn->info) != NULL)
 	      {
-		bgp_static->valid = 1;
-		bgp_static->igpmetric = 0;
-		bgp_static->igpnexthop.s_addr = 0;
-	      }
+		if (bgp_static->backdoor)
+		  continue;
 
-	    if (bgp_static->valid != valid)
-	      {
-		if (bgp_static->valid)
-		  bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
+		valid = bgp_static->valid;
+		metric = bgp_static->igpmetric;
+		nexthop = bgp_static->igpnexthop;
+
+		if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)
+		    && afi == AFI_IP && safi == SAFI_UNICAST)
+		  bgp_static->valid = bgp_import_check (&rn->p, &bgp_static->igpmetric,
+						        &bgp_static->igpnexthop);
 		else
-		  bgp_static_withdraw (bgp, &rn->p, afi, safi);
+		  {
+		    bgp_static->valid = 1;
+		    bgp_static->igpmetric = 0;
+		    bgp_static->igpnexthop.s_addr = 0;
+		  }
+
+		if (bgp_static->valid != valid)
+		  {
+		    if (bgp_static->valid)
+		      bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
+		    else
+		      bgp_static_withdraw (bgp, &rn->p, afi, safi);
+		  }
+		else if (bgp_static->valid)
+		  {
+		    if (bgp_static->igpmetric != metric
+			|| bgp_static->igpnexthop.s_addr != nexthop.s_addr
+			|| bgp_static->rmap.name)
+		      bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
+		  }
 	      }
-	    else if (bgp_static->valid)
-	      {
-		if (bgp_static->igpmetric != metric
-		    || bgp_static->igpnexthop.s_addr != nexthop.s_addr
-		    || bgp_static->rmap.name)
-		  bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
-	      }
-	  }
+    }
   return 0;
 }
 
@@ -1197,10 +1202,6 @@
   if (zlookup->sock < 0)
     return -1;
 
-  /* Make BGP import there. */
-  bgp_import_thread = 
-    thread_add_timer (master, bgp_import, NULL, 0);
-
   return 0;
 }
 
@@ -1396,6 +1397,8 @@
 
   /* Make BGP scan thread. */
   bgp_scan_thread = thread_add_timer (master, bgp_scan, NULL, bgp_scan_interval);
+  /* Make BGP import there. */
+  bgp_import_thread = thread_add_timer (master, bgp_import, NULL, 0);
 
   install_element (BGP_NODE, &bgp_scan_time_cmd);
   install_element (BGP_NODE, &no_bgp_scan_time_cmd);
diff --git a/bgpd/bgp_snmp.c b/bgpd/bgp_snmp.c
index 8104aef..598fc3c 100644
--- a/bgpd/bgp_snmp.c
+++ b/bgpd/bgp_snmp.c
@@ -829,7 +829,6 @@
 /* BGP Traps. */
 struct trap_object bgpTrapList[] =
 {
-  {bgpPeerTable, 3, {3, 1, BGPPEERREMOTEADDR}},
   {bgpPeerTable, 3, {3, 1, BGPPEERLASTERROR}},
   {bgpPeerTable, 3, {3, 1, BGPPEERSTATE}}
 };
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index e3ac73f..933516d 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -691,6 +691,7 @@
 void bgp_zclient_reset ();
 int bgp_nexthop_set (union sockunion *, union sockunion *, 
 		     struct bgp_nexthop *, struct peer *);
+struct bgp_master *bgp_get_master ();
 struct bgp *bgp_get_default ();
 struct bgp *bgp_lookup (as_t, char *);
 struct bgp *bgp_lookup_by_name (char *);
diff --git a/ospf6d/ospf6d.h b/ospf6d/ospf6d.h
index 4c9f7dc..8c7af99 100644
--- a/ospf6d/ospf6d.h
+++ b/ospf6d/ospf6d.h
@@ -73,7 +73,7 @@
 #define HASHVAL 64
 #define MAXIOVLIST 1024
 
-#define OSPF6_DAEMON_VERSION    "0.9.6o"
+#define OSPF6_DAEMON_VERSION    "0.9.6p"
 
 #define AF_LINKSTATE  0xff
 
