diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index 55848fa..68dcb01 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -213,7 +213,7 @@
     {
       
       if (IS_RIP_DEBUG_EVENT)
-	zlog_info ("multicast request on %s", ifp->name);
+	zlog_debug ("multicast request on %s", ifp->name);
 
       rip_request_send (NULL, ifp, version, NULL);
       return;
@@ -225,7 +225,7 @@
       struct listnode *cnode;
 
       if (IS_RIP_DEBUG_EVENT)
-	zlog_info ("broadcast request to %s", ifp->name);
+	zlog_debug ("broadcast request to %s", ifp->name);
 
       for (cnode = listhead (ifp->connected); cnode; nextnode (cnode))
 	{
@@ -247,7 +247,7 @@
 				      connected->address->prefixlen);
 
 	      if (IS_RIP_DEBUG_EVENT)
-		zlog_info ("SEND request to %s", inet_ntoa (to.sin_addr));
+		zlog_debug ("SEND request to %s", inet_ntoa (to.sin_addr));
 	      
 	      rip_request_send (&to, ifp, version, connected);
 	    }
@@ -308,7 +308,7 @@
     return;
 
   if (IS_RIP_DEBUG_EVENT)
-    zlog_info ("request to the all neighbor");
+    zlog_debug ("request to the all neighbor");
 
   /* Send request to all neighbor. */
   for (rp = route_top (rip->neighbor); rp; rp = route_next (rp))
@@ -325,7 +325,7 @@
   if (if_is_operative (ifp) && if_is_multicast (ifp))
     {
       if (IS_RIP_DEBUG_EVENT)
-	zlog_info ("multicast join at %s", ifp->name);
+	zlog_debug ("multicast join at %s", ifp->name);
 
       for (cnode = listhead (ifp->connected); cnode; nextnode (cnode))
 	{
@@ -358,7 +358,7 @@
   if (if_is_up (ifp) && if_is_multicast (ifp))
     {
       if (IS_RIP_DEBUG_EVENT)
-	zlog_info ("multicast leave from %s", ifp->name);
+	zlog_debug ("multicast leave from %s", ifp->name);
 
       for (cnode = listhead (ifp->connected); cnode; nextnode (cnode))
 	{
@@ -513,7 +513,7 @@
   rip_if_down(ifp);
  
   if (IS_RIP_DEBUG_ZEBRA)
-    zlog_info ("interface %s index %d flags %ld metric %d mtu %d is down",
+    zlog_debug ("interface %s index %d flags %ld metric %d mtu %d is down",
 	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
   return 0;
@@ -533,7 +533,7 @@
     return 0;
 
   if (IS_RIP_DEBUG_ZEBRA)
-    zlog_info ("interface %s index %d flags %ld metric %d mtu %d is up",
+    zlog_debug ("interface %s index %d flags %ld metric %d mtu %d is up",
 	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
   /* Check if this interface is RIP enabled or not.*/
@@ -557,7 +557,7 @@
   ifp = zebra_interface_add_read (zclient->ibuf);
 
   if (IS_RIP_DEBUG_ZEBRA)
-    zlog_info ("interface add %s index %d flags %ld metric %d mtu %d",
+    zlog_debug ("interface add %s index %d flags %ld metric %d mtu %d",
 	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
   /* Check if this interface is RIP enabled or not.*/
@@ -724,7 +724,7 @@
   if (ri->running)
    {
      if (IS_RIP_DEBUG_EVENT)
-       zlog_info ("turn off %s", ifp->name);
+       zlog_debug ("turn off %s", ifp->name);
 
      /* Leave from multicast group. */
      rip_multicast_leave (ifp, rip->sock);
@@ -795,7 +795,7 @@
   if (p->family == AF_INET)
     {
       if (IS_RIP_DEBUG_ZEBRA)
-	zlog_info ("connected address %s/%d is added", 
+	zlog_debug ("connected address %s/%d is added", 
 		   inet_ntoa (p->u.prefix4), p->prefixlen);
 
       rip_enable_apply(ifc->ifp);
@@ -849,8 +849,7 @@
       if (p->family == AF_INET)
 	{
 	  if (IS_RIP_DEBUG_ZEBRA)
-
-	    zlog_info ("connected address %s/%d is deleted",
+	    zlog_debug ("connected address %s/%d is deleted",
 		       inet_ntoa (p->u.prefix4), p->prefixlen);
 
 #ifdef HAVE_SNMP
@@ -1141,7 +1140,7 @@
     {
 	{
 	  if (IS_RIP_DEBUG_EVENT)
-	    zlog_info ("turn on %s", ifp->name);
+	    zlog_debug ("turn on %s", ifp->name);
 
 	  /* Add interface wake up thread. */
 	  if (! ri->t_wakeup)
@@ -1287,7 +1286,7 @@
 		 passive_default : !passive_default);
 
   if (IS_RIP_DEBUG_ZEBRA)
-    zlog_info ("interface %s: passive = %d",ifp->name,ri->passive);
+    zlog_debug ("interface %s: passive = %d",ifp->name,ri->passive);
 }
 
 void
