diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index 646c8ed..44b5950 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -87,7 +87,7 @@
   ifp = zebra_interface_add_read (zclient->ibuf);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info ("Zebra: interface add %s index %d flags %ld metric %d mtu %d",
+    zlog_debug ("Zebra: interface add %s index %d flags %ld metric %d mtu %d",
                ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
   assert (ifp->info);
@@ -136,7 +136,7 @@
                ifp->name);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info
+    zlog_debug
       ("Zebra: interface delete %s index %d flags %ld metric %d mtu %d",
        ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
@@ -193,12 +193,12 @@
       zebra_interface_if_set_value (zclient->ibuf, ifp);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-        zlog_info ("Zebra: Interface[%s] state update.", ifp->name);
+        zlog_debug ("Zebra: Interface[%s] state update.", ifp->name);
 
       if (if_tmp.bandwidth != ifp->bandwidth)
         {
           if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-            zlog_info ("Zebra: Interface[%s] bandwidth change %d -> %d.",
+            zlog_debug ("Zebra: Interface[%s] bandwidth change %d -> %d.",
                        ifp->name, if_tmp.bandwidth, ifp->bandwidth);
 
           ospf_if_recalculate_output_cost (ifp);
@@ -209,7 +209,7 @@
   zebra_interface_if_set_value (zclient->ibuf, ifp);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info ("Zebra: Interface[%s] state change to up.", ifp->name);
+    zlog_debug ("Zebra: Interface[%s] state change to up.", ifp->name);
 
   for (rn = route_top (IF_OIFS (ifp)); rn; rn = route_next (rn))
     {
@@ -236,7 +236,7 @@
     return 0;
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info ("Zebra: Interface[%s] state change to down.", ifp->name);
+    zlog_debug ("Zebra: Interface[%s] state change to down.", ifp->name);
 
   for (node = route_top (IF_OIFS (ifp)); node; node = route_next (node))
     {
@@ -381,7 +381,7 @@
 
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
             {
-              zlog_info ("Zebra: Route add %s/%d nexthop %s",
+              zlog_debug ("Zebra: Route add %s/%d nexthop %s",
                          inet_ntoa (p->prefix),
                          p->prefixlen, inet_ntoa (path->nexthop));
             }
@@ -440,7 +440,7 @@
             }
           else if ( IS_DEBUG_OSPF(zebra,ZEBRA_REDISTRIBUTE) )
             {
-              zlog_info("Zebra: no ifp %s %d",
+              zlog_debug("Zebra: no ifp %s %d",
                          inet_ntoa(p->prefix),
                          p->prefixlen);
             }
@@ -449,13 +449,13 @@
 
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE) && api.nexthop_num)
             {
-              zlog_info ("Zebra: Route delete %s/%d nexthop %s",
+              zlog_debug ("Zebra: Route delete %s/%d nexthop %s",
                          inet_ntoa (p->prefix),
                          p->prefixlen, inet_ntoa (**api.nexthop));
             }
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE) && api.ifindex_num)
             {
-              zlog_info ("Zebra: Route delete %s/%d ifindex %d",
+              zlog_debug ("Zebra: Route delete %s/%d ifindex %d",
                          inet_ntoa (p->prefix),
                          p->prefixlen, *api.ifindex);
             }
@@ -498,7 +498,7 @@
       zapi_ipv4_route (ZEBRA_IPV4_ROUTE_DELETE, zclient, p, &api);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-        zlog_info ("Zebra: Route delete discard %s/%d",
+        zlog_debug ("Zebra: Route delete discard %s/%d",
                    inet_ntoa (p->prefix), p->prefixlen);
 
     }
@@ -532,7 +532,7 @@
       ospf_external_lsa_refresh_type (ospf, type, force);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-        zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
+        zlog_debug ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
                    LOOKUP (ospf_redistributed_proto, type),
                    metric_type (ospf, type), metric_value (ospf, type));
 
@@ -545,7 +545,7 @@
   zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, type);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[%s]: Start  Type[%d], Metric[%d]",
+    zlog_debug ("Redistribute[%s]: Start  Type[%d], Metric[%d]",
                LOOKUP (ospf_redistributed_proto, type),
                metric_type (ospf, type), metric_value (ospf, type));
 
@@ -566,7 +566,7 @@
   zclient_redistribute (ZEBRA_REDISTRIBUTE_DELETE, zclient, type);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[%s]: Stop",
+    zlog_debug ("Redistribute[%s]: Stop",
                LOOKUP (ospf_redistributed_proto, type));
 
   ospf->dmetric[type].type = -1;
@@ -602,7 +602,7 @@
       ospf_external_lsa_refresh_default (ospf);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-        zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
+        zlog_debug ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
                    LOOKUP (ospf_redistributed_proto, DEFAULT_ROUTE),
                    metric_type (ospf, DEFAULT_ROUTE),
                    metric_value (ospf, DEFAULT_ROUTE));
@@ -616,7 +616,7 @@
   zclient_redistribute_default (ZEBRA_REDISTRIBUTE_DEFAULT_ADD, zclient);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[DEFAULT]: Start  Type[%d], Metric[%d]",
+    zlog_debug ("Redistribute[DEFAULT]: Start  Type[%d], Metric[%d]",
                metric_type (ospf, DEFAULT_ROUTE),
                metric_value (ospf, DEFAULT_ROUTE));
 
@@ -644,7 +644,7 @@
   zclient_redistribute_default (ZEBRA_REDISTRIBUTE_DEFAULT_DELETE, zclient);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[DEFAULT]: Stop");
+    zlog_debug ("Redistribute[DEFAULT]: Stop");
 
   ospf_asbr_status_update (ospf, --ospf->redistribute);
 
@@ -718,7 +718,7 @@
       if (access_list_apply (DISTRIBUTE_LIST (ospf, type), p) == FILTER_DENY)
         {
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-            zlog_info ("Redistribute[%s]: %s/%d filtered by ditribute-list.",
+            zlog_debug ("Redistribute[%s]: %s/%d filtered by ditribute-list.",
                        LOOKUP (ospf_redistributed_proto, type),
                        inet_ntoa (p->prefix), p->prefixlen);
           return 0;
@@ -739,7 +739,7 @@
         {
           ei->route_map_set = save_values;
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-            zlog_info ("Redistribute[%s]: %s/%d filtered by route-map.",
+            zlog_debug ("Redistribute[%s]: %s/%d filtered by route-map.",
                        LOOKUP (ospf_redistributed_proto, type),
                        inet_ntoa (p->prefix), p->prefixlen);
           return 0;
